Pytanie Zmniejszenie rozmiaru repozytorium w Mercurial


Ponieważ mój zespół pracuje nad danym projektem ze źródłem w repozytorium Mercurial, repozytorium ma oczywiście coraz większy rozmiar. W związku z tym klonowanie repozytorium przez sieć staje się wolniejsze i wolniejsze.

Czy są jakieś techniki, które służą do usuwania starszych zatwierdzeń lub zmniejszania rozmiaru repo, aby klonowanie było szybsze w powolnej sieci?

(Używamy TortoiseHg jako klienta Mercurial, ale to (domyślam się) nie powinno mieć wpływu na rozwiązanie tego problemu).


21
2018-04-15 23:07


pochodzenie


Jak często klonujesz całe repozytorium, btw? Nie spodziewałbym się, że klonowanie to większość aktywności w repozytorium. - Matt Ball
klonowanie całego repozytorium: mvn release:prepare robi to dla każdego wydania. Cloudbees Jenkins robi to dla każdej kompilacji ... - Peter Kofler
@Tarlog: Obawiam się, że odpowiedzi nie są nieaktualne: repozytorium Mercurial nadal jest dostępne tylko i nie można pominąć starej historii. - Martin Geisler
Najbliższym rozwiązaniem byłoby pobranie takiej migawki http://selenic.com/hg/archive/stable.zip. Jest to po prostu plik zip z plikami z tej gałęzi - oczywiście nie można tworzyć nowych zatwierdzeń na podstawie takiego pliku. Ale dla ciągłej integracji może działać dobrze. - Martin Geisler
Prawdopodobnie brakuje mi czegoś ... czy ten zip jest automatycznie generowany w każdym repozytorium Mercurial? - Tarlog


Odpowiedzi:


Jedną z opcji jest Użyj convert rozszerzenie, aby rozłożyć twoje repozytorium do grupy mniejszych repozytoriów.

Załóżmy, że masz repozytorium, które ewoluowało, aby zawierało wiele projektów (folderów). I zdecydowałeś, że lepiej będzie, jeśli każdy projekt (folder) będzie osobnym repozytorium. Możesz użyć convert rozszerzenie, aby to zrobić i zachować historię zmian.


14
2018-04-15 23:12





Możesz użyć dedykowanego klonu zdalnego repo na swoim komputerze jako pamięci podręcznej do operacji klonowania. Więc nie musisz przenosić całego repo za pośrednictwem sieci za każdym razem, ale tylko te części, których jeszcze nie ma.


6
2018-04-18 11:22





Jeśli potrzebujesz tylko plików w danej wersji, ale nigdy nie musisz sprawdzać historii ani tworzyć nowych zatwierdzeń, a następnie pobierać pliki migawka może być szybszy.

Normalny hgweb Skrypt CGI może dostarczyć plik zip lub tar dla każdej wersji. Archiwa są generowane w locie. Musisz tylko dodać

[web]
allow_archive = gz, zip, bz2

do pliku konfiguracyjnego. Następnie można znaleźć archiwa pod adresami URL, takimi jak

http://server.com/repo/archive/rev.zip

Zastąp numer wersji nazwą oddziału, której chcesz zmienić plik skrótu. Pobierz plik wget, curllub podobne narzędzie.

Strategia ta opłaca się tylko wtedy, gdy historia jest bardzo duża w porównaniu z rozmiarem pojedynczego zestawu zmian.

Może tak być, jeśli repozytorium zawiera duże pliki, które często się zmieniają. The rozszerzenie pliku bigfiles może być tutaj alternatywą: pozwala tylko pobierać pliki potrzebne do sprawdzenia wersji. W ten sposób unikasz pobierania historii dużych plików i oszczędzania znacznej przepustowości.


6
2017-12-30 00:23





Czasami takie problemy mogą być spowodowane, jeśli masz duże pliki binarne w repozytorium. Wszelkie aktualizacje do nich mają tendencję do powodowania dużych różnic i powodują, że rozmiar rośnie bardziej drastycznie niż zwykle.

Jeśli dotyczy to ciebie, warto spojrzeć na Duże rozszerzenie plików dystrybuowane z Mercurial 2.0. Nie używałem go osobiście i wydaje się, że wciąż ma kilka krawędzi rouge, ale jeśli zawiera polecenie lfconvert które przekonwertuje repo dla Ciebie. Możesz wtedy spróbować sprawdzić, czy klonuje się szybciej.


2
2017-12-29 05:13