Mercurial: Usuń changeset ze zdalnej gałęzi

Czy istnieje sposób, aby usunąć ze zdalnego zestawu zmian lub usunąć cały zestaw zmian? Przypadkowo wepchnąłem plik .war do zdalnego repo i chcę go usunąć.

Author: Martin Geisler, 2009-05-25

4 answers

Mercurial bardzo stara się chronić Twoje dane, więc generalnie nie możesz zmieniać historii.

Biorąc to pod uwagę, Istnieje wiele rozszerzeń dla Mercurial, które pozwalają dość łatwo zmienić historię i tak. Na wiki znajduje się strona o historii edycji. Ta strona wyjaśnia również konsekwencje.

W twoim konkretnym przypadku, musisz zadać sobie pytanie, czy inni już wyciągnęli twój zestaw zmian? Jeśli tak, to nawet jeśli go usuniesz, nadal będzie istnieć w ich klonach, a może lepiej będzie, jeśli zaakceptujesz błąd.

Jeśli zdecydujesz się go usunąć, sugeruję użycie hg clone, aby uzyskać kopię bez niego. Jest to bezpieczny sposób, ponieważ zawsze pozostawi kopię zapasową. Jeśli wepchnąłeś [z] do zdalnego repozytorium:

[x] --- [y] --- [z]

A teraz chcesz go usunąć, następnie zaloguj się na serwer i zrób

hg clone -r y repo repo-without-z

Wtedy repo-without-z będzie zawierać wszystkie zmiany aż do [y] - czyli [z] zostaną usunięte:

[x] --- [y]

Możesz następnie kontynuuj pracę i wciśnij nowy zestaw zmian:

[x] --- [y] --- [w]

Gdybym już wyciągnął [z] changeset, a teraz wyciągnął [w] w repozytorium zobaczę dwie głowy:

            [w]
           /
[x] --- [y] --- [z]
To nie jest niebezpieczne samo w sobie , ale ludzie mogą być zaskoczeni. Jeśli usunę [z] z mojego klona, skończę z tym samym repozytorium co Ty. Ale, jak napisano powyżej, może to być niepraktyczne, jeśli masz wielu użytkowników.

Możesz również użyć rozszerzenia MQ do strip zestawu zmian na miejscu. W ten sposób nie stworzysz nowego klona.

Wreszcie, jeśli jesteś pewien, że push był ostatnią operacją wykonaną na serwerze, to hg rollback można użyć do usunięcia ostatniej transakcji. Ale nie rób tego, jeśli jesteś jedynym, który może przepchnąć do repozytorium, w przeciwnym razie możesz wycofać inną transakcję.

Jeśli repozytorium jest włączone Bitbucket , nie można zalogować się na serwer. Ale Bitbucket ostatnio dodał Pasek funkcjonalność interfejsu WWW. Poszukaj "zarządzanie repozytorium" w sekcji "Administrator".

 34
Author: Martin Geisler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-30 11:37:03

Bitbucket oferuje pakiet (backup) po zdzieraniu, a to nie jest wliczane do twojego limitu. Powodem, dla którego wydaje się to robić, jest tylko dlatego, że nie unieważniliśmy klucza pamięci podręcznej określającego, ile miejsca używasz.

Jest to błąd w naszym systemie i zostanie naprawiony. Do tego czasu upewnij się, że zestaw zmian został usunięty, a kopia zapasowa jest darmowa :-)

 13
Author: jespern,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-25 16:18:38

Użyłem rozszerzenia hg mqueue do edycji historii. Wygląda na to, że zadziałało. Dziękuję wszystkim.

 4
Author: Miguel Ping,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-26 09:44:04

Miałem podobny przypadek, w którym chcę zdalnie usunąć scalony zestaw zmian gałęzi "A" z gałęzi " Dev " używając TortoiseHg:

  1. Utwórz gałąź AA z gałęzi nadrzędnej gałęzi a; jej pochodzenia.
  2. Połącz a do AA (working directory) i upewnij się, że zaznaczona jest opcja: "Odrzuć wszystkie zmiany z innej wersji".
  3. Merge AA do dev branch (z Komunikatem commit wskazującym, że gałąź a została usunięta).

Zobaczysz, że zmiany gałęzi A nie są dłuższa egzystencja w Dev.

 1
Author: MarwaAhmad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-27 02:58:25