Frage zu mercurial



  • ich clone ein repo und mache ein paar Änderungen

    locales changelog sieht zB so aus

    1. feature A dazu
    2. feature B dazu
    3. feature B an Änderungen in Hauptrepo angepasst
    4. feature B noch mal upgedated
    5. feature A noch mal upgedated

    jetzt sollte ein push in das Hauptrepo kommen (oder ein pull vom Hauptrepo) , die lokalen Änderungsdetails sind aber uninteressant,
    änderungen 1 bis 4 sollen nicht rein weil es die übersichtlichkeit stört, interessiert andere auch gar nicht, usw..

    ins Hauptrepo soll nur rein
    feature A und B dazu

    also damit im Hauptrepo nur die Änderung zum Letztstand (5) als eine Änderung zu sehen ist.

    wie sieht da der workflow aus, branch commit push usw, was muss ich machen damit es so wie ich es mir vorstelle funktioniert?



  • kurzefrage schrieb:

    jetzt sollte ein push in das Hauptrepo kommen (oder ein pull vom Hauptrepo) , die lokalen Änderungsdetails sind aber uninteressant,
    änderungen 1 bis 4 sollen nicht rein weil es die übersichtlichkeit stört, interessiert andere auch gar nicht, usw..

    dann ist 'git' das richtige für dich.



  • dann ist 'git' das richtige für dich.

    Git hat die "rebase"-Funktionalität schon eingebaut. Ich weiß nicht, wie gut das funktioniert, aber es gibt auch "rebase" als (mitgelieferte) Erweiterung zu Mercurial:
    http://mercurial.selenic.com/wiki/RebaseProject

    Das was du suchst ist wohl "Collapsing".



  • dürfte genau das sein was ich brauche.

    vielen Dank!



  • geht auch mit standard-mitteln.

    1. feature A dazu
    2. feature B dazu
    3. feature B an Änderungen in Hauptrepo angepasst
    4. feature B noch mal upgedated
    5. feature A noch mal upgedated

    Sagen wir du hast 2 repos, ein 'main' repo, in welches du die gemachten aenderungen aus 'foo' (ohne lokale history) ueberspielen willst.

    // alles in repo 'foo'
    hg update -r1 // update zu revision vor neuem feature
    hg revert -r4 --all // revert auf letzte aenderung von neuem feature
    hg commit -m 'feature B fertisch' // commit der gesamten feature aenderungen in einem schritt; erstellt neuen head
    hg push -r <neuen head> <main>
    

    Hatte das auch schonmal gefragt, die haben mich nur dumm angeschaut und gefragt wozu man das machen woellte...


Anmelden zum Antworten