Jak wcisnąć tylko do jednej gałęzi W Hg?

Mam repo Hg z 3 gałęziami, ale dwie z nich są nieaktywne (ponieważ połączyłem je już z domyślną gałęzią). Hg Heads pokazuje 3 głowice, po jednej dla każdej gałęzi, mimo że Hg branches pokazuje 2 z tych gałęzi jako 'nieaktywne'.

Kiedy próbuję wcisnąć domyślną gałąź (używając Hg push --branch default http://...) do innego repo, scalanie jest przerywane Komunikatem " abort: push tworzy nowe zdalne gałęzie: !"

Z HG push domyślnie push nie pozwala na tworzenie nowych głowic w miejscu docelowym, ponieważ wiele głowic sprawi, że nie będzie jasne, której głowicy użyć. W tej sytuacji zaleca się pociągnięcie i połączenie przed naciśnięciem."

Już to zrobiłem, ale nadal nie mogę wcisnąć -- Branch default bez przerwania go.

Każda pomoc jest mile widziana. Dzięki!

Author: simon, 2011-02-03

3 answers

Jeśli zestawy zmian na default mają zestawy zmian przodków na innych gałęziach, musisz je również popchnąć. Nie jest możliwe, aby zestaw zmian istniał w repo bez wszystkich jego zestawów zmian również istniejących.

Więc spróbuj:

hg push --branch default --new-branch

Który mówi "tak, Wiem, że to push wysyła nazwę gałęzi, której zdalny repo wcześniej nie widział" (wymaga również Mercurial 1.6 lub nowszego IIRC)>

Możesz też wziąć te nieaktywne głowy i zrobić z nich zamknięte głowy z:
hg update thebranch
hg commit --close-branch -m 'closing'

Ponieważ "nazwane gałęzie są na zawsze", wielu ludzi decyduje się zarezerwować je dla długotrwałych pojęć, takich jak" stabilne "i" eksperymentalne " i używać zakładek, anonimowych gałęzi lub klonów dla funkcji, wydań i innych przejściowych rzeczy. Zobacz ten przewodnik na temat innych opcji.

 53
Author: Ry4an Brase,
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
2013-01-24 04:12:38

Aby wcisnąć jedną gałąź wystarczy użyć-b

hg push -b myBranch

Jeśli chodzi o konkretny problem, możesz zajrzeć do zamykających się gałęzi. Wiem, że SourceTree to oferuje, ale nie jestem pewien szczegółów

 26
Author: Rembrandt Q. Einstein,
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
2014-02-04 20:46:46

Możesz to wymusić!

Oto jak:

1. Pull from your repository
2. hg push --rev nnn -f (replace nnn with your Rev # of your working branch)
3. do NOT force before PULLing. if you do things will get out sync and you are screwed

Jeśli używasz czegoś takiego jak RhodeCode, sprawdź to po wymuszeniu, a zobaczysz, że Twoja najnowsza gałąź tam jest.

Myślę jednak, że później Mercurial poprosi Cię o ponowne wciśnięcie drugiej gałęzi, nawet jeśli ją zamkniesz, Mercurial spróbuje utworzyć tę gałąź na serwerze.

Również jestem użytkownikiem Git i napotkałem taką samą sytuację, ponieważ klient używa Mercuriala, ale chciałbym użyj stylu Git workflow.

Myślę, że jest to wykonalne, ale jeszcze nie rozgryzłem 100%.

 0
Author: Gilson,
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
2013-09-24 17:38:15