L'approccio ingenuo è find dir1 dir2 dir3 -type d -name .git | xargs -I {} dirname {}
, ma è troppo lento per me, perché ho strutture di cartelle molto profonde all'interno dei repository git (almeno penso che questo sia il motivo). Ho letto che posso usare pruneper impedire a find di ricorrere nelle directory una volta che ha trovato qualcosa, ma ci sono due cose. Non sono sicuro di come prunefunzioni (voglio dire, non capisco cosa funziona nonostante abbia letto la pagina man) e il secondo non funzionerebbe nel mio caso, perché impedirebbe finddi ricorrere nella .gitcartella ma non in tutto altre cartelle.
Quindi quello di cui ho davvero bisogno è:
per tutte le sottodirectory controllare se contengono una .gitcartella e se è quindi interrompere la ricerca in questo ramo del filesystem e riportare il risultato. Sarebbe perfetto se questo escludesse anche qualsiasi directory nascosta dalla ricerca.
getpof .gitè quello che uso. github.com/thrig/scripts/blob/master/filesys/getpof.c