Pendekatan naif adalah find dir1 dir2 dir3 -type d -name .git | xargs -I {} dirname {}
, tetapi itu terlalu lambat bagi saya, karena saya memiliki banyak struktur folder yang dalam di dalam repositori git (setidaknya saya berpikir bahwa ini adalah alasannya). Saya telah membaca tentang hal itu yang dapat saya gunakan prune
untuk mencegah penemuan berulang ke direktori setelah menemukan sesuatu, tetapi ada dua hal. Saya tidak yakin bagaimana ini bekerja (maksud saya saya tidak mengerti apa yang saya prune
lakukan walaupun saya sudah membaca halaman manual) dan yang kedua itu tidak akan berfungsi dalam kasus saya, karena itu akan mencegah find
pengulangan ke .git
folder tetapi tidak ke semua folder lain.
Jadi yang sebenarnya saya butuhkan adalah:
untuk semua subdirektori, periksa apakah mereka berisi .git
folder dan jika kemudian berhenti mencari di cabang sistem file ini dan laporkan hasilnya. Akan sempurna jika ini juga akan mengecualikan direktori tersembunyi dari pencarian.
getpof .git
adalah apa yang saya gunakan. github.com/thrig/scripts/blob/master/filesys/getpof.c