Source

hgtip-content / advanced / 2010-02-11-merging-mq-patches-with-rebase.html

Full commit
{% extends "_tip.html" %}
{%hyde
    title: Mergen von MQ Patches mit Rebase
    author_name: Steve Losh
    author_link: http://stevelosh.com/
    created: 2010-02-11
%}


{% block excerpt %}
MQ Patches lassen sich oft nicht so einfach mergen. Aber Sie können die rebase
Erweiterung nutzen um dies zu verbessern.
{% endblock %}


{% block tip %}

**Vorweg:** Ich will mit diesem Tipp etwas neues versuchen. Dies ist der erste
Tipp der einen Screencast beinhaltet. Es ist ein komplexes Thema und ich denke
ein Screencast ist der beste Weg dies zu behandeln. Bitte nuten Sie die 
Kommentarfunktion um mir mitzuteilen, ob dies eine gute Idee ist oder ob hgtip
sich nur auf Tipps in Textform beschränken soll.

Dieser Tipp ist für alle die mit[MQ][] für das behandeln von Patches vertraut 
sind. Wenn Sie MQ häufig nutzen werden Sie einige Probleme festgestellt haben.
Eines der grössten Probleme tritt auf, wenn Sie einen Patch haben und jemand 
anderes ändert die Datei die sie bearbeiten.


[MQ]: http://mercurial.selenic.com/wiki/MqExtension

Der normale Ablauf ist das Sie mit pull die Änderungen übernehmen, mit `qpop` 
ihre Patches rückgängig machen, auf die neue Spitze ihres Repository (oder 
Branch) aktualisieren und mit `qpush` die Patches applizieren. Leider führt
MQ keine Informationen über die Elternversionen von Patches. Dadurch kann kein
intelligentes Merge für `qpush` durchgeführt werden.

Sie können diese Limitierung durch die Nutzung der [rebase Erweiterung][] 
umgehen. Damit werden die MQ Patches auf eine andere Revision gezügelt bevor 
sie angewendet werden. Ich demonstriere das Vorgehen im untenstehenden 
Screencast:

[rebase extension]: http://mercurial.selenic.com/wiki/RebaseExtension

<div class="screencast">
<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0' width='560' height='345'><param name='movie' value='http://screenr.com/Content/assets/screenr_1116090935.swf' /><param name='flashvars' value='i=46386' /><param name='allowFullScreen' value='true' /><embed src='http://screenr.com/Content/assets/screenr_1116090935.swf' flashvars='i=46386' allowFullScreen='true' width='560' height='345' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed></object>
</div>

{% endblock %}