Cách tiếp cận ngây thơ là vậy find dir1 dir2 dir3 -type d -name .git | xargs -I {} dirname {}
, nhưng nó quá chậm đối với tôi, vì tôi có rất nhiều cấu trúc thư mục sâu bên trong kho git (ít nhất tôi nghĩ rằng đây là lý do). Tôi đã đọc về điều mà tôi có thể sử dụng prune
để ngăn chặn tìm lại trong thư mục một khi nó tìm thấy thứ gì đó, nhưng có hai điều. Tôi không chắc nó hoạt động như thế nào (ý tôi là tôi không hiểu prune
mặc dù tôi đã đọc trang man) và lần thứ hai nó sẽ không hoạt động trong trường hợp của tôi, bởi vì nó sẽ ngăn không find
cho vào lại .git
thư mục nhưng không vào tất cả các thư mục khác.
Vì vậy, những gì tôi thực sự cần là:
đối với tất cả các thư mục con kiểm tra xem chúng có chứa một .git
thư mục hay không và nếu nó dừng tìm kiếm trong nhánh hệ thống tập tin này và báo cáo kết quả. Sẽ là hoàn hảo nếu điều này cũng sẽ loại trừ bất kỳ thư mục ẩn khỏi tìm kiếm.
getpof .git
là những gì tôi sử dụng. github.com/thrig/scripts/blob/master/filesys/getpof.c