Esta función localiza el directorio raíz de un repositorio Git buscando la carpeta .git empezando desde el directorio del script que hace la llamada. Recorre hacia arriba el árbol de directorios hasta que encuentra un directorio que contiene una carpeta .git o alcanza la raíz del sistema de archivos.
find_git_root.m
find_git_root.m
function rootDir = find_git_root(scriptFullPath)
% FIND_GIT_ROOT Navega hacia arriba en el árbol de directorios para localizar el primer directorio que contiene una carpeta .git.
% rootDir = FIND_GIT_ROOT(scriptFullPath) comienza desde el directorio del scriptFullPath proporcionado
% y recorre hacia arriba hasta encontrar una carpeta .git. Si no se encuentra ninguna carpeta .git
% se lanza un error.
% Obtener el directorio de la ruta completa del script proporcionado
scriptDirectory = fileparts(scriptFullPath);
% Inicializar el directorio actual al directorio del script
currentDir = scriptDirectory;
while true
% Comprobar si el directorio actual contiene una carpeta .git
if exist(fullfile(currentDir, '.git'), 'dir')
fprintf('Directory containing ".git" found: %s\n', currentDir);
rootDir = currentDir;
return;
end
% Obtener el directorio padre
parentDir = fileparts(currentDir);
% Comprobar si llegamos a la raíz sin encontrar la carpeta .git
if strcmp(currentDir, parentDir)
error('No directory containing ".git" was found in the path hierarchy.');
end
% Move up to the parent directory
currentDir = parentDir;
end
endEjemplo de uso
Para usar esta función, simplemente llámala desde cualquier script dentro de tu repositorio Git. Devolverá la ruta al directorio raíz del repositorio.
find_git_root_usage.m
rootDir = find_git_root(mfilename('fullpath'));
Echa un vistazo a artículos similares por categoría:
Matlab/Simulink
Si este artículo te ha ayudado, considera invitarme a un café o hacer una donación vía PayPal para apoyar la investigación y publicación de nuevos artículos en TechOverflow