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 prune
per impedire a find di ricorrere nelle directory una volta che ha trovato qualcosa, ma ci sono due cose. Non sono sicuro di come prune
funzioni (voglio dire, non capisco cosa funziona nonostante abbia letto la pagina man) e il secondo non funzionerebbe nel mio caso, perché impedirebbe find
di ricorrere nella .git
cartella ma non in tutto altre cartelle.
Quindi quello di cui ho davvero bisogno è:
per tutte le sottodirectory controllare se contengono una .git
cartella 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