L'approche naïve est find dir1 dir2 dir3 -type d -name .git | xargs -I {} dirname {}
, mais c'est trop lent pour moi, car j'ai des structures de dossiers très profondes dans les dépôts git (du moins je pense que c'est la raison). J'ai lu à propos de cela que je peux utiliser prune
pour empêcher find de récurser dans les répertoires une fois qu'il a trouvé quelque chose, mais il y a deux choses. Je ne sais pas comment cela fonctionne (je veux dire que je ne comprends pas ce qui se prune
passe bien que j'aie lu la page de manuel) et la seconde, cela ne fonctionnerait pas dans mon cas, car cela empêcherait find
de rentrer dans le .git
dossier mais pas dans tous d'autres dossiers.
Donc ce dont j'ai réellement besoin c'est:
pour tous les sous-répertoires, vérifiez s'ils contiennent un .git
dossier et si c'est le cas, arrêtez de chercher dans cette branche de système de fichiers et rapportez le résultat. Ce serait parfait si cela excluait également les répertoires cachés de la recherche.
getpof .git
c'est ce que j'utilise. github.com/thrig/scripts/blob/master/filesys/getpof.c