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 prunepour 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 prunepasse bien que j'aie lu la page de manuel) et la seconde, cela ne fonctionnerait pas dans mon cas, car cela empêcherait findde rentrer dans le .gitdossier 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 .gitdossier 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 .gitc'est ce que j'utilise. github.com/thrig/scripts/blob/master/filesys/getpof.c