Czy istnieje sposób usuwania rtęci w celu usunięcia starych zestawów danych z bazy danych? Mam repozytorium o pojemności 60 GB, co sprawia, że wykonanie klona jest dość bolesne. Chciałbym odciąć wszystko przed pewną datą i odłożyć ogromną bazę danych, żeby zbierać kurz.Usunięcie historii rtęci
Odpowiedz
Możesz to zrobić, ale w ten sposób unieważniasz wszystkie klony, więc generalnie nie jest to rozsądne, chyba że pracujesz całkowicie sam.
Każdy zestaw zmian w merkurialnie jest jednoznacznie identyfikowany hashcode, który jest kombinacją (między innymi) zmian w kodzie źródłowym, metadanych i skrótów jednego lub dwóch rodziców. Ci rodzice muszą istnieć w repozytorium aż do samego początku projektu. (Brak restrykcji będzie miał płytkie klony, które nie są jeszcze dostępne).
Jeśli nie masz nic przeciwko zmianie skrótów nowszych zestawów zmian (które ponownie rozbijają wszystkie klony na wolności), możesz to zrobić za pomocą poleceń;
hg export -o 'changeset-%R.patch' 400:tip # changesets 400 through the end for example
cd /elsewhere
hg init newrepo
cd newrepo
hg import /path/to/the/patches/*.patch
Prawdopodobnie będziesz musiał wykonać trochę pracy, aby poradzić sobie z zestawieniami scalania, ale to jest ogólny pomysł.
Można by też zrobić to za pomocą hg convert
z rodzaju hg
zarówno jako źródła i rodzaju przeznaczenia oraz przy użyciu splicemap
, ale to chyba jeszcze bardziej zaangażować.
Największe pytanie brzmi: w jaki sposób wpisujesz 60 GB kodu źródłowego lub czy dodałeś wygenerowane pliki do wszystkich porad. :)
Znacznie bardziej szczegółowa odpowiedź niż moja (usunięta) odpowiedź. +1 – VonC
Importuję z innego systemu kontroli źródła projekt zawierający wygenerowane pliki binarne. Próbujemy teraz usunąć biblioteki DLL z kontroli źródła. Dzięki za pomoc! –
Odpowiedź zawiera literówkę. Nazwa pliku powinna zawierać małe litery% r (liczby zerowe), w przeciwnym razie pliki nie zostaną przetworzone we właściwej kolejności podczas importowania. – Gili
Nie ma prostego/zalecanego sposobu zrobienia tego bezpośrednio do istniejącego repozytorium.
Można jednak „przerobić” swoje rtęciowego repo do nowego mercurial repo i wybrać wersję z którym obejmuje historię począwszy poprzez opcję convert.hg.startrev
hg convert --config convert.hg.startrev=1234 <source-repository> <new-repository-name>
Nowy repo będzie zawierać wszystko z oryginalnego repo minus historia poprzednia do wersji początkowej.
Zastrzeżenie: Nowy repo będzie miała zupełnie nowe identyfikatory changeset, to znaczy, że nie jest w żaden sposób powiązany z oryginalnym repo. Po stworzeniu nowego repo, każdy programista musi sklonować nowe repozytorium i usunąć swoje klony z oryginalnego repo.
Użyłem tego do oczyszczenia starych repo używanych wewnętrznie w naszej firmie - w połączeniu z opcją --filemap do usuwania niechcianych plików.
Więc w jaki sposób to rozwiązanie różni się od usuwania katalogu .hg/i wykonywania hg w tym? – grzaks
Niestety, nie rozumiem Twojego komentarza. Co ma do zrobienia lokalny katalog .hg i init hg z usuwaniem zestawów zmian z repozytorium? –
@Gaks, twoje podejście niszczy całe repozytorium i tworzy nowe, podejście Gerda selektywnie niszczy repozytorium z pewnej wersji z powrotem. Oba podejścia są przydatne w zależności od okoliczności. Podejście Gerda przydaje mi się właśnie teraz, gdy zamierzam opublikować prywatne repozytorium i chcę zachować rewizje z zeszłego miesiąca, ale nic przed tym. – lsh
- 1. Czy usunięcie gałęzi w git usuwa ją z historii?
- 2. Błąd rtęci: NotConnectedException
- 3. Testowanie niezatwierdzonych zmian w rtęci
- 4. Edytor rtęci w Railsach nie zapisując zmian
- 5. Git: Zmiana nazwy pliku przy pomocy EGit powoduje usunięcie historii plików
- 6. Czy istnieje sposób na usunięcie lub zmianę zmian w historii plików w repozytorium Team Foundation Studio?
- 7. Konwersja daty/czasu historii historii Chrome na czytelny format
- 8. łączenie historii w tty
- 9. Stan wypychania IE historii
- 10. Zwiększenie długości historii IPythona
- 11. Przeglądanie historii plików git
- 12. Uzyskiwanie historii ajax
- 13. Dziennik historii zdalnej
- 14. Powrót rtęci "nie znaleziono żadnych zmian", podczas gdy są zmiany!
- 15. jakie są prawidłowe kolory dla rozszerzenia koloru rtęci?
- 16. Czy usunięcie elementu skryptu powoduje usunięcie jego funkcji z pamięci?
- 17. Reakcja - usunięcie ze środka listy powoduje usunięcie ostatniego elementu.
- 18. usunięcie części ciąg
- 19. Usunięcie aplikacji TestFlight?
- 20. Jak cofnąć usunięcie svn
- 21. Heroku folderu/tmp usunięcie
- 22. Wymuś usunięcie pamięci podręcznej
- 23. Jak wymusić usunięcie pliku?
- 24. javascript - usunięcie elementu
- 25. Usunięcie zachowania w związku
- 26. react.js: usunięcie komponentu
- 27. Cofnij usunięcie w GIT
- 28. usunięcie "\ n" od NSString
- 29. Usunięcie pilota oddziału
- 30. Usunięcie kolekcjiWszystko ignorowanie sprawy?
Jakie pliki są duże? – tonfa
Jak to się zaczęło? – Santa
Jeśli Jake ma jakieś pliki binarne (które są czasami niezbędne ... nie wszystkie pliki binarne są generowane przez źródło), to każda niewielka zmiana w tym pliku powoduje, że nowa kopia zostanie wykonana w repozytorium. W zależności od rozmiaru pliku lub częstotliwości zmian coś takiego jak 60 GB może nie potrwać zbyt długo. – bobpaul