Niedawno zaangażowałem się w nowy projekt z dużym SVN (70 GB, 9000 zatwierdzeń, pełen plików tekstowych i binarnych). W swojej pracy muszę analizować różne dokumenty i zmiany, które zostały w nich wprowadzone w ciągu ostatnich 4 lat. Chociaż analiza historii pojedynczych plików jest dość prosta, natknąłem się na przypadek użycia, dla którego nie mogłem znaleźć odpowiedniego narzędzia:
Dowiedz się, które dokumenty w repozytorium zawierały (w której wersji) określone wyszukiwane hasło. Moim naiwnym podejściem byłoby sprawdzenie wszystkich wersji lokalnie w folderze dla każdej wersji (i zastąpienie niezmienionych plików dowiązaniami symbolicznymi do innych folderów, aby zaoszczędzić miejsce), a następnie wyszukiwanie za pomocą grep w plikach.
Głównym ograniczeniem dla mnie jest to, że mam dostęp do serwera tylko przez klienta svn (więc nie mogę po prostu sklonować całego repozytorium).
Czy jest jakieś narzędzie, które pozwoliłoby mi pobrać całe repozytorium (w tym wszystkie wersje) lokalnie, a następnie zapewnić szybkie wyszukiwanie bez zagłuszania mojego HD w duplikatach?
svn log -v
w katalogu głównym aktualnej kasy, aby dowiedzieć się, które pliki uległy zmianie w której wersji; z tego zbuduj skrót wpisujący ścieżkę i wyceniony przez szereg poprawek, w których zmienił się plik w tej ścieżce; następniesvn export
każdy plik w każdej zidentyfikowanej wersji, grep go i utwórz listę, która para plik / wersja zawiera wyszukiwany termin. Następnie możesz przejść i sprawdzić pliki, które nigdy się nie zmieniły w żadnej wersji, a to powinno dać ci pełny wynik.hg grep
jest narzędziem o dużej mocy, klon repozytorium będzie wymagał dużo miejsca, tak, ale myślę - nadal mniejszy niż wszystkie wersje repozytorium SVN w postaci zwykłego tekstu