7 Stimmen

Kann Mercurial einen benannten Zweig zusammenführen, der kein Kopf ist?

Im Grunde habe ich einen Entwicklungszweig, und was ich gerne mache, ist, einen Funktionszweig zu erstellen, während ich etwas implementiere, und ihn dann wieder zusammenzuführen. So kommt es zu Situationen wie der folgenden

 a
 b
 c
 d - dev
/ 
e
f - feature

Da dev kein Kopf ist, ist es trotzdem möglich, dev auf feature zu bringen, so dass sowohl dev als auch feature auf f zeigen?

Ich bin mir ziemlich sicher, dass Git das gut kann, aber ich kann Mercurial nicht davon überzeugen, das Gleiche zu tun...

19voto

Steve Losh Punkte 19272

Carl Meyer hat Recht. Sie denken wie ein Git-Benutzer, und Mercurial behandelt die Dinge anders.

Sie könnten tun, was Carl vorgeschlagen hat, und einfach den nächsten Commit auf den Entwicklungszweig setzen. Ich persönlich fände das allerdings ziemlich verwirrend, da es eine Diskontinuität im Entwicklungszweig geben würde.

Ich würde es so handhaben, dass ich den Feature-Zweig wieder einfüge: hg update dev && hg merge feature && hg commit -m 'Merge in the completed feature.'

Dies würde zu einem Diagramm wie dem folgenden führen:

  a - dev
  b - dev
  c - dev
  d - dev
 /|  
e | - feature
f | - feature
 \|
  g - dev

Für mich ist dies ein klares Beispiel dafür, was genau passiert ist. Sie haben sich für eine neue Funktion verzweigt und sie nach Fertigstellung in den Entwicklungszweig eingefügt. Die Tatsache, dass es in der Zwischenzeit keine anderen Commits im Dev-Zweig gab, ist nur ein Zufall und muss den Arbeitsablauf nicht ändern.

6voto

Carl Meyer Punkte 113574

Benannte Zweige in hg (anders als in git) "zeigen" nirgendwo hin. Zweignamen sind keine beweglichen Aliasnamen für eine bestimmte Revision. Jeder Commit hat eine Metadaten-Markierung, die den Zweig benennt, in dem der Commit stattfindet; das ist alles.

Wenn Sie in dieser Situation keine separaten Commits haben, die von "d" auf dem dev-Zweig abstammen, dann müssen Sie nur "hg branch dev" ausführen und Ihr nächster Commit, der von "f" abstammt, wird wieder auf dem dev-Zweig sein. Ich denke, dass Sie damit die gewünschten Ergebnisse erzielen.

EDITAR : Das wird funktionieren, aber der Vorschlag von Steve Losh, eine tatsächliche Zusammenführung vorzunehmen, wird zu einem vernünftigeren Verlauf führen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X