J'ai un fichier que je pense être dans un repo git. Je suis actuellement dans mon répertoire personnel. Comment puis-je obtenir le répertoire de premier niveau du repo sans changer mon répertoire de travail actuel?Obtenez le plus haut niveau d'un repo git, seulement en connaissant un seul fichier dans le repo?
Si je suis dans le repo, je peux courir pour obtenir le répertoire racine. Effectivement, je veux pouvoir utiliser un fichier pour trouver directement la racine du répertoire git.
(~) $ find . -name "specific_file.py"
Lorsque les parties importantes de l'arbre sont:
~/code/dir1/.git
~/code/dir1/files/more_files/specific_file.py
est-il un moyen git de le faire, ou manipulations shell générique la meilleure façon de le faire?
Je sais que je peux faire:
(~) $ cd $(dirname $(find . -name "specific_file.py"))
(~/code/dir1/files/more_files) $ git rev-parse --show-toplevel
~/code/dir1
(~/code/dir1/files/more_files) $ cd -
Si je tente sans être à l'intérieur du repo, je reçois le message:
Fatal '~/code/dir1/files/more_file/specific_file.py' is outside repository
Si je tente de définir le répertoire git à être plus bas dans la tree:
git --git-dir=$(dirname $(find . -name "specific_file.py")) rev-parse --show-toplevel
Il me dit que je ne travaille pas dans un répertoire git.
J'ai également essayé de jouer avec l'arbre de travail, mais cela ne semble pas être ce que je cherche après avoir cherché directement un répertoire /.git directement sur le chemin.
Je ne suis pas sûr de comprendre le besoin de faire cela. Est-ce que 'find 'ne vous montrera pas le chemin complet du fichier, à partir duquel il devrait être évident s'il se trouve ou non dans un repo Git? –
Sur quelle plateforme êtes-vous? – pneumatics
@TimBiegeleisen oui, parce que je connais la structure du repo sur ma machine, mais il ne semble pas y avoir un moyen facile de trouver le chemin racine afin qu'il puisse localiser d'autres scripts d'aide en cours de construction depuis la source. Je pourrais bien sûr juste prendre le chemin comme paramètre, mais je voudrais éviter cela s'il y a une solution facile intégrée dans git. –