Dies ist der Befehl git-merge-changelog, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
git-merge-changelog – Git-Merge-Treiber für GNU ChangeLog-Dateien
BESCHREIBUNG
Der Standard-Merge-Treiber von „git“ immer erzeugt Konflikte, wenn es um öffentliche Aufmerksamkeit geht
Änderungen in eine privat geänderte ChangeLog-Datei. Dies liegt an ChangeLog-Dateien
werden immer oben geändert; Der Standard-Merge-Treiber hat keine Ahnung, wie er damit umgehen soll
Das. Darüber hinaus werden die Konflikte mit mehr <<<< ==== >>>> Markierungen dargestellt als
notwendig; Dies liegt daran, dass der Standard-Merge-Treiber sinnlose Anstrengungen unternimmt, um sich das anzusehen
einzelne Zeilenänderungen innerhalb eines ChangeLog-Eintrags.
Dieses Programm dient als „Git“-Merge-Treiber, der diese Probleme vermeidet.
1. Es entsteht kein Konflikt, wenn oben beide ChangeLog-Einträge eingefügt wurden
die öffentliche und in der privaten Modifikation. Die privat hinzugefügten Einträge werden oben angezeigt
die öffentlich hinzugefügten Einträge.
2. Es respektiert die Struktur von ChangeLog-Dateien: Einträge werden nicht in Zeilen aufgeteilt, sondern
zusammengehalten.
3. Es behandelt auch den Fall kleinerer Änderungen an früheren ChangeLog-Einträgen oder von
ChangeLog-Einträge entfernt: Sie werden wie erwartet zusammengeführt.
4. Konflikte werden oben in der Datei angezeigt und nicht dort, wo sie aufgetreten sind
dass der Benutzer sie sofort sieht. (Im Gegensatz zu Quellcode, der in einigen Fällen geschrieben wurde
Programmiersprache, Konfliktmarkierungen, die mehrere hundert Zeilen entfernt liegen
Die Spitze verursacht keinen Syntaxfehler und bleibt daher wahrscheinlich bestehen
unbemerkt.)
Für git Benutzer:
- Fügen Sie die Zeilen zur .git/config des Checkouts (oder zu Ihrer $HOME/.gitconfig) hinzu
[merge „merge-changelog“]
name = ChangeLog-Merge-Treiber im GNU-Stil
Treiber = /usr/bin/git-merge-changelog %O %A %B
- Fügen Sie in jedem Verzeichnis, das eine ChangeLog-Datei enthält, eine Datei „.gitattributes“ mit hinzu
diese Linie:
ChangeLog merge=merge-changelog
(Weitere Informationen finden Sie unter „man 5 gitattributes“.)
Für bzr Benutzer:
- Installieren Sie das unter aufgeführte bzr-Plugin „extmerge“.
<http://doc.bazaar.canonical.com/plugins/en/index.html>
<http://wiki.bazaar.canonical.com/BzrPlugins>
- Fügen Sie die Zeile zu Ihrer $HOME/.bazaar/bazaar.conf hinzu
external_merge = git-merge-changelog %b %T %o
- Um dann einen Konflikt in einer ChangeLog-Datei zusammenzuführen, verwenden Sie
$ bzr extmerge ChangeLog
Für hg Benutzer:
- Fügen Sie die Zeilen zu Ihrem $HOME/.hgrc hinzu
[Muster zusammenführen]
ChangeLog = git-merge-changelog
[Merge-Tools]
git-merge-changelog.executable = /usr/bin/git-merge-changelog
git-merge-changelog.args = $base $local $other
Sehenhttp://www.selenic.com/mercurial/hgrc.5.html> Abschnitt Merge-Tools als Referenz.
Nutzen Sie as an Alternative zu 'diff3':
git-merge-changelog führt die gleiche Rolle wie „diff3 -m“ aus, nur mit neu geordneten Argumenten:
$ git-merge-changelog %O %A %B
ist vergleichbar mit
$ diff3 -m %A %O %B
maximal einfach anrufen Konvention:
Ein Merge-Treiber wird mit drei Dateinamenargumenten aufgerufen:
1. %O = Der gemeinsame Vorfahre von %A und %B.
2. %A = Der Inhalt der Datei aus dem „aktuellen Zweig“.
3. %B = Der Inhalt der Datei aus dem „anderen Zweig“; Dies sind die Inhalte, die zusammengeführt werden
in.
Im Falle eines „git stash apply“ oder eines Upstream-Pulls (z. B. von einem Subsystem-Betreuer zu
einem zentralen Betreuer) oder eines Downstream-Pulls mit --rebase:
2. %A = Der neueste abgerufene Inhalt der Datei; von anderen Committern geändert.
3. %B = Die neueste Kopie der Datei des Benutzers; vom Benutzer geändert werden.
Im Falle eines Downstream-Pulls (z. B. von einem zentralen Repository zum Benutzer) oder eines
Upstream-Pull mit --rebase:
2. %A = Die neueste Kopie der Datei des Benutzers; vom Benutzer geändert werden.
3. %B = Der neueste abgerufene Inhalt der Datei; von anderen Committern geändert.
Die zusammengeführte Ausgabe sollte in die Datei %A geschrieben werden. Es kann auch einige Bemerkungen zu stdout widerspiegeln.
Es sollte mit dem Rückkehrcode 0 beendet werden, wenn die Zusammenführung sauber oder mit einem Wert ungleich Null aufgelöst werden konnte
Rückkehrcode, wenn es Konflikte gab.
Wie it funktioniert:
Der Aufbau einer ChangeLog-Datei: Sie besteht aus ChangeLog-Einträgen. Ein ChangeLog-Eintrag
beginnt in einer Zeile, die auf eine Leerzeile folgt und die mit einem Nicht-Leerzeichen beginnt.
oder am Anfang einer Datei. Der Merge-Treiber funktioniert wie folgt: Er liest die drei
speichert Dateien im Speicher und zerlegt sie in ChangeLog-Einträge. Anschließend werden die Unterschiede ermittelt
zwischen %O und %B. Sie werden klassifiziert als:
- Entfernungen (einige aufeinanderfolgende Einträge entfernt),
- Änderungen (einige aufeinanderfolgende Einträge entfernt, einige aufeinanderfolgende Einträge hinzugefügt),
- Ergänzungen (einige aufeinanderfolgende Einträge hinzugefügt).
Der Treiber versucht dann, die Änderungen auf %A anzuwenden. Zu diesem Zweck berechnet es zunächst a
Korrespondenz zwischen den Einträgen in %O und den Einträgen in %A unter Verwendung einer Fuzzy-Zeichenfolge
Matching, um geänderte Einträge weiterhin zu identifizieren.
- Entfernungen werden einzeln angewendet. Wenn der Eintrag in %A vorhanden ist, ist er an irgendeiner Position vorhanden
ENTFERNT. Wenn nicht, wird die Entfernung als Konflikt markiert.
- Zusätze am Anfang von %B werden am Anfang von %A angewendet.
- Ergänzungen zwischen Eintrag x und Eintrag y (y kann das Dateiende sein) in %B werden angewendet
zwischen Eintrag x und Eintrag y in %A (sofern sie noch existieren und in noch aufeinanderfolgend sind).
%A), andernfalls werden die Ergänzungen als Konflikt markiert.
- Änderungen werden in „einfache Änderungen“ kategorisiert:
Eintrag1 ... Einträge werden zugeordnet
hinzugefügter_Eintrag ... hinzugefügter_Eintrag geänderter_Eintrag1 ... geänderter_Eintrag, wobei der
Die Korrespondenz zwischen Eintrag_i und modifiziertem_Eintrag_i ist immer noch klar. und „große Veränderungen“:
Das sind alle anderen. Einfache Änderungen oben in %B werden durch Einfügen von übernommen
Einträge oben in %A hinzugefügt. Die Änderungen in einfachen Änderungen werden einzeln angewendet;
Dies kann möglicherweise zu Konflikten mit nur einem Eintrag führen. Möglicherweise werden große Änderungen en bloc umgesetzt
Dies führt zu Konflikten, die sich über mehrere Einträge erstrecken.
- Konflikte werden am Anfang der Datei ausgegeben und führen zum Exit-Status 1.
Verwenden Sie git-merge-changelog online über die Dienste von onworks.net