Jaki jest najłatwiejszy sposób zatwierdzenia i wypchnięcia pojedynczego pliku, pozostawiając same inne modyfikacje?

Jestem stosunkowo nowy w Mercurial, a mój zespół próbuje go teraz zastąpić Subversion.

Jak mogę zatwierdzić i wypchnąć pojedynczy plik do innego repozytorium, pozostawiając inne modyfikacje w moim katalogu roboczym niezatwierdzone (lub przynajmniej nie przeniesione do innego repozytorium)?

Zdarza się to w przypadku migracji baz danych. Chcemy zatwierdzić migrację do kontroli źródła, aby administrator bazy danych mógł ją przeglądać i edytować, podczas gdy pracujemy nad modyfikacjami kodu, aby przejść do migracji bazy danych. Zmiany nie są jeszcze gotowe, więc nie chcemy ich wypychać.

W subwersji po prostu robię:

svn add my_migration.sql  
# commit only the migration, but not the other files I'm working on
svn commit -m "migration notes" my_mygration.sql

i kontynuuj pracę lokalnie.

To nie działa z mercurialem, jak wtedy, gdy wypycham go do innego repozytorium, jeśli są jakieś zmiany, których nie ściągnąłem, chce, żebym je ściągnął, scalił i zatwierdził scalenie z repozytorium. Zatwierdzenia po scaleniu nie pozwalają na pominięcie plików, co zmusza do zatwierdzenia wszystkiego w lokalnym repozytorium.

Najprostszą rzeczą, jaką mogę sobie wyobrazić, jest zatwierdzenie pliku do mojego lokalnego repozytorium, sklonowanie lokalnego repozytorium, pobranie nowych zmian z rzeczywistego repozytorium, scalenie i zatwierdzenie scalenia, a następnie wypchnięcie moich zmian.

hg add my_migration.sql 
hg commit -m "migration notes" my_migration.sql 
cd ..
hg clone project project-clone
cd project-clone
hg fetch http://hg/project
hg push  http://hg/project

To działa, ale wydaje mi się, że brakuje mi czegoś łatwiejszego, jakiś sposób, aby powiedzieć mercurialowi, aby zignorował pliki znajdujące się już w moim katalogu roboczym, po prostu wykonaj scalenie i wyślij pliki razem. Podejrzewam, że rtęciowe kolejki mogą to zrobić, ale nie mam jeszcze pełnego grq.

questionAnswers(6)

yourAnswerToTheQuestion