Fonction MATLAB pour trouver le répertoire racine du projet via le dossier .git à partir du chemin du script actuel

Cette fonction localise le répertoire racine d’un dépôt Git en recherchant le dossier .git à partir du répertoire du script appelant. Elle remonte l’arborescence des répertoires jusqu’à ce qu’elle trouve un répertoire contenant un dossier .git ou atteigne la racine du système de fichiers.

find_git_root.m

find_git_root.m
function rootDir = find_git_root(scriptFullPath)
% FIND_GIT_ROOT Remonte l'arborescence des répertoires pour localiser le premier répertoire contenant un dossier .git.
% rootDir = FIND_GIT_ROOT(scriptFullPath) commence à partir du répertoire du scriptFullPath fourni
% et remonte jusqu'à ce qu'il trouve un dossier .git. Si aucun dossier .git n'est
% trouvé, une erreur est levée.

    % Obtenir le répertoire du chemin complet du script fourni
    scriptDirectory = fileparts(scriptFullPath);

    % Initialiser le répertoire courant au répertoire du script
    currentDir = scriptDirectory;

    while true
        % Vérifier si le répertoire courant contient un dossier .git
        if exist(fullfile(currentDir, '.git'), 'dir')
            fprintf('Directory containing ".git" found: %s\n', currentDir);
            rootDir = currentDir;
            return;
        end

        % Obtenir le répertoire parent
        parentDir = fileparts(currentDir);

        % Vérifier si nous avons atteint la racine sans trouver le dossier .git
        if strcmp(currentDir, parentDir)
            error('No directory containing ".git" was found in the path hierarchy.');
        end

        % Remonter au répertoire parent
        currentDir = parentDir;
    end
end

Exemple d’utilisation

Pour utiliser cette fonction, appelez-la simplement depuis n’importe quel script dans votre dépôt Git. Elle retournera le chemin vers le répertoire racine du dépôt.

find_git_root_usage.m
rootDir = find_git_root(mfilename('fullpath'));

Consultez les articles similaires par catégorie : MATLAB/Simulink