Ich bin relativ neu bei Mercurial und mein Team probiert es gerade als Ersatz für Subversion aus.
Wie kann ich eine einzelne Datei festschreiben und in ein anderes Repository übertragen, während andere Änderungen in meinem Arbeitsverzeichnis nicht festgeschrieben werden (oder zumindest nicht in das andere Repository übertragen werden)?
Dies geschieht bei Datenbankmigrationen. Wir möchten die Migration auf die Quellcodeverwaltung übertragen, damit ein DBA sie anzeigen und bearbeiten kann, während wir an den Codeänderungen arbeiten, die mit dieser Datenbankmigration einhergehen. Die Änderungen sind noch nicht fertig, daher möchten wir nicht alle herausschieben.
In Subversion würde ich einfach tun:
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
und vor Ort weiterarbeiten.
Dies funktioniert mit mercurial nicht, wenn ich es in das andere Repository verschiebe. Wenn es Änderungen gibt, die ich nicht heruntergezogen habe, möchte ich, dass ich sie herunterziehe, zusammenführe und diese Zusammenführung festschreibe das Repository. Commits nach einer Zusammenführung ermöglichen es Ihnen nicht, Dateien wegzulassen, sodass Sie gezwungen sind, alles in Ihrem lokalen Repository festzuschreiben.
Das Einfachste, was ich herausfinden kann, ist, die Datei in mein lokales Repository zu übertragen, mein lokales Repository zu klonen, neue Änderungen aus dem tatsächlichen Repository abzurufen, sie zusammenzuführen und diese Zusammenführung festzuschreiben, und meine Änderungen zu verschieben.
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
Das funktioniert, aber es scheint, als würde mir etwas Einfacheres fehlen, eine Möglichkeit, mercurial anzuweisen, die Dateien, die sich bereits in meinem Arbeitsverzeichnis befinden, zu ignorieren. Führen Sie einfach die Zusammenführung durch und senden Sie die Dateien mit. Ich vermute, dass Quecksilber-Warteschlangen dies können, aber ich bin noch nicht ganz fertig.