Więc odziedziczyłem dość dużą bazę kodu od innych programistów, z kodem przechowywanym w różnych repozytoriach git.grep dla rzeczy w wielu repozytoriach git
Czasami trudno jest określić, w którym projekcie może znajdować się dany fragment kodu lub czy ten fragment kodu istnieje nawet w git.
To, co chcę zrobić, to grep WSZYSTKIE projekty dla konkretnego fragmentu tekstu.
Używam gitosis, więc wszystkie repozytoria git są przechowywane w/home/git/repozytoria ze strukturą jak:
/home/git/repositories
|- project1
|- HEAD
|- branches
|- config
|- description
|- hooks
|- info
|- objects
|- refs
|- project2
|- ...
próbowałem robić rekurencyjnych grep dla rzeczy w obiektach katalogów tak:
grep -Hr "text" /home/git/repositories/*/objects
Nie działa tak, jak zamierzam, oczywiście, ponieważ obiekty są przechowywane w niestandardowym formacie git.
Co zrobić?
Jeśli szukasz konkretnego kawałka kodu, w przeciwieństwie do tekst w wiadomości zatwierdzenia, możesz również użyć 'git log -S" "' tutaj. Nazywa się to rewizją kilofa. (Http://gitfu.wordpress.com/2008/06/03/the-pickaxe-finding-changes-was-never-easier/) –
Christopher
Problem polega na tym, że foldery w/home/git/reositories nie są faktycznie drzewami roboczymi git, więc git grep nie działa na nich. – jdeuce
@python_noob git grep działa w repozytorium, jeśli poda się ref (np. HEAD) –