Dit is het commando git-merge-changelog dat kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
git-merge-changelog - git merge-stuurprogramma voor GNU ChangeLog-bestanden
PRODUCTBESCHRIJVING
Het standaard merge-stuurprogramma van 'git' altijd veroorzaakt conflicten bij het openbaar maken
wijzigingen in een privé gewijzigd ChangeLog-bestand. Dit komt omdat ChangeLog-bestanden
worden altijd bovenaan aangepast; het standaard samenvoegstuurprogramma heeft geen idee hoe ermee om te gaan
dit. Bovendien worden de conflicten gepresenteerd met meer <<<< ==== >>>> markeringen dan
nodig; dit komt omdat het standaard samenvoegstuurprogramma zinloze pogingen doet om naar de
individuele regelwijzigingen binnen een ChangeLog-item.
Dit programma dient als een 'git' merge-driver die deze problemen vermijdt.
1. Het levert geen conflict op als ChangeLog-items bovenaan zijn ingevoegd
het publiek en in de private modificatie. Het plaatst de privé toegevoegde vermeldingen hierboven
de openbaar toegevoegde inzendingen.
2. Het respecteert de structuur van ChangeLog-bestanden: vermeldingen worden niet in regels opgesplitst, maar
bij elkaar gehouden.
3. Het behandelt ook het geval van kleine wijzigingen in eerdere ChangeLog-vermeldingen, of van
verwijderde ChangeLog-items: ze zijn samengevoegd zoals je zou verwachten.
4. Conflicten worden bovenaan het bestand weergegeven, in plaats van waar ze zich hebben voorgedaan
dat de gebruiker ze onmiddellijk zal zien. (In tegenstelling tot de broncode die in sommige versies is geschreven
programmeertaal, conflictmarkeringen die zich op enkele honderden regels bevinden
de top veroorzaakt geen enkele syntaxisfout en zal daarom waarschijnlijk blijven bestaan
onopgemerkt.)
Voor git gebruikers:
- Voeg de regels toe aan .git/config van de checkout (of aan je $HOME/.gitconfig).
[samenvoegen "merge-changelog"]
naam = ChangeLog-samenvoegstuurprogramma in GNU-stijl
stuurprogramma = /usr/bin/git-merge-changelog %O %A %B
- Voeg in elke map die een ChangeLog-bestand bevat een bestand '.gitattributes' toe
deze lijn:
ChangeLog merge=merge-changelog
(Zie "man 5 gitattributen" voor meer info.)
Voor bzr gebruikers:
- Installeer de 'extmerge' bzr-plug-in vermeld op
<http://doc.bazaar.canonical.com/plugins/en/index.html>
<http://wiki.bazaar.canonical.com/BzrPlugins>
- Voeg de regel toe aan uw $HOME/.bazaar/bazaar.conf
externe_merge = git-merge-changelog %b %T %o
- Gebruik vervolgens om een conflict in een ChangeLog-bestand samen te voegen
$ bzr voegt ChangeLog toe
Voor hg gebruikers:
- Voeg de regels toe aan uw $HOME/.hgrc
[samenvoegpatronen]
ChangeLog = git-merge-changelog
[samenvoegtools]
git-merge-changelog.executable = /usr/bin/git-merge-changelog
git-merge-changelog.args = $base $local $other
Zienhttp://www.selenic.com/mercurial/hgrc.5.html> sectie samenvoegtools als referentie.
Gebruik as an alternatief naar 'verschil3':
git-merge-changelog vervult dezelfde rol als "diff3 -m", alleen met opnieuw geordende argumenten:
$ git-merge-changelog %O %A %B
is vergelijkbaar met
$ diff3 -m %A %O %B
het roepen conventie:
Een merge-stuurprogramma wordt aangeroepen met drie bestandsnaamargumenten:
1. %O = De gemeenschappelijke voorouder van %A en %B.
2. %A = De inhoud van het bestand van de "huidige vertakking".
3. %B = De inhoud van het bestand uit de "andere vertakking"; dit is de inhoud die wordt samengevoegd
inch
In het geval van een "git stash apply" of van een upstream pull (bijvoorbeeld van een subsysteembeheerder naar
een centrale beheerder) of van een stroomafwaartse pull met --rebase:
2. %A = De nieuwste opgehaalde inhoud van het bestand; gewijzigd door andere committers.
3. %B = Het nieuwste exemplaar van het bestand door de gebruiker; gewijzigd door de gebruiker.
In het geval van een downstream pull (bijvoorbeeld van een centrale repository naar de gebruiker) of van een
stroomopwaarts trekken met --rebase:
2. %A = Het nieuwste exemplaar van het bestand door de gebruiker; gewijzigd door de gebruiker.
3. %B = De nieuwste opgehaalde inhoud van het bestand; gewijzigd door andere committers.
Het zou de samengevoegde uitvoer naar bestand %A moeten schrijven. Het kan ook enkele opmerkingen tegen stdout weerspiegelen.
Het moet afsluiten met retourcode 0 als de samenvoeging netjes kan worden opgelost, of met een niet-nul
retourcode als er conflicten zijn.
Hoe it werken:
De structuur van een ChangeLog-bestand: Het bestaat uit ChangeLog-vermeldingen. Een ChangeLog-invoer
begint op een regel die volgt op een lege regel en die begint met een teken dat geen witruimte bevat,
of aan het begin van een bestand. Het samenvoegstuurprogramma werkt als volgt: Het leest de drie
bestanden in het geheugen en ontleedt ze in ChangeLog-vermeldingen. Vervolgens worden de verschillen gevonden
tussen %O en %B. Ze zijn geclassificeerd als:
- verwijderingen (enkele opeenvolgende vermeldingen verwijderd),
- wijzigingen (enkele opeenvolgende vermeldingen verwijderd, enkele opeenvolgende vermeldingen toegevoegd),
- toevoegingen (enkele opeenvolgende vermeldingen toegevoegd).
Het stuurprogramma probeert vervolgens de wijzigingen toe te passen op %A. Hiertoe berekent het eerst a
correspondentie tussen de vermeldingen in %O en de vermeldingen in %A, met behulp van fuzzy string
matchen om gewijzigde vermeldingen nog steeds te identificeren.
- Verhuizingen worden één voor één toegepast. Als de invoer aanwezig is in %A, op welke positie dan ook, is dat het geval
VERWIJDERD. Als dit niet het geval is, wordt de verwijdering gemarkeerd als een conflict.
- Toevoegingen bovenaan %B worden bovenaan %A toegepast.
- Toevoegingen tussen item x en item y (y kan het bestandseinde zijn) in %B worden toegepast
tussen item x en item y in %A (als ze nog bestaan en nog steeds opeenvolgend zijn in
%A), anders worden de toevoegingen gemarkeerd als conflict.
- Wijzigingen zijn onderverdeeld in "eenvoudige wijzigingen":
entry1 ... entryn worden toegewezen
toegevoegde_entry ... toegevoegde_entry gewijzigde_entry1 ... gewijzigde_entryn, waarbij de
de correspondentie tussen entry_i en gewijzigde_entry_i is nog steeds duidelijk; en "grote veranderingen":
dit zijn de rest. Eenvoudige wijzigingen bovenaan %B worden toegepast door de
items bovenaan %A toegevoegd. De wijzigingen in eenvoudige wijzigingen worden één voor één toegepast;
Mogelijk leidend tot single-entry-conflicten. Grote veranderingen worden mogelijk en bloc toegepast
wat leidt tot conflicten die meerdere vermeldingen omvatten.
- Conflicten worden bovenaan het bestand weergegeven en veroorzaken een afsluitstatus van 1.
Gebruik git-merge-changelog online met behulp van onworks.net-services