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.