2016-11-04 8 views
1

Ich verwende Mageploy zur Versionskontrolle Admin Panel wechselt zwischen den Entwicklern, aber es scheint Git ist nicht möglich komplett verschiedene Zeilen in der CSV-Datei zusammenführen, die die Datensätze enthält, welche Aktionen wurden durchgeführt. In jedem Fall, wenn zwei Entwickler im Administrationsbereich etwas in ihrer lokalen Umgebung ändern und die Änderung festschreiben, wenn sie es nicht abwechselnd getan haben (einer von ihnen bindet, der andere mergt zusammen, dann commit, dann) der erste wird verschmolzen), Git will sie zwischen dem einen oder anderen Zweig bei der Zusammenführung wählen.Git Merge kann keine neuen Zeilen hinzufügen

Im Bild unten können Sie die CSV Zweig test1 und die CSV-Zweig test2 sehen. Die Linien sind völlig unterschiedlich, aber selbst die verfügbaren Merge-Strategien funktionieren nicht (Octopus, unser rekursiver Auflösungs-Unterbaum).

Mageploy CSV in Notepad++ compare mode

Ich brauche einfach die Linie von test2 hinzugefügt werden allen Linien in test1. Und im Idealfall richtig zusammenführen ohne Konflikt, ob es Test2 zu Test1 hinzugefügt wurde oder Test1 zu Test2 hinzugefügt wurde (da das Hinzufügen von Zeilen normalerweise sie am unteren Rand platziert).

Beispiel:

test1.csv

old-entry 
old-entry 
old-entry 
test1-a 
test1-b 

test2.csv

old-entry 
old-entry 
old-entry 
test2-c 

Entwickler einem Test2 in ihre Test1 verschmilzt

old-entry 
old-entry 
old-entry 
test1-a 
test1-b 
test2-c 

Entwickler zwei verschmilzt Test 1 in ihre test2

old-entry 
old-entry 
old-entry 
test2-c 
test1-a 
test1-b 
+0

Liegt das Problem vor, dass Daten während der Zusammenführung verworfen werden oder dass ein Zusammenführungskonflikt nicht auftritt? –

+0

Ich erhalte immer einen Merge-Konflikt, der mich auffordert, entweder die in test1 hinzugefügten Zeilen oder die in test2 hinzugefügten Zeilen auszuwählen, nicht beide. –

+0

Wenn Git die Zusammenführung nicht automatisch auflösen kann, kann die Zusammenführung nicht automatisch aufgelöst werden. Das schlimmste Problem wäre eine automatische Auflösung, die auch etwas verwirft, das Sie behalten möchten. Aber das scheint nicht dein Problem zu sein. –

Antwort

0

ich nicht einen Weg zu machen Git halten alle Linien in der CSV-Datei während der Zusammenführung ohne einen Konflikt finden. Laut Kommentaren von @ tim-biegelesein und @torek gibt es keine Möglichkeit, Git die Zeilen aus beiden Zweigen nehmen zu lassen.

Ich werde so etwas verwenden, um das in meinem Entwicklungsautomatisierungsskript zu umgehen. Es entfernt einfach die Zusammenführungsmarkierungen und schreibt die Zusammenführung fest.

git merge $targetBranch 
sed -i -e "/<<<<<<<\|=======\|>>>>>>>/d" /path/to/mageploy_all.csv 
git commit --all --file .git/MERGE_MSG 

Das Argument --no-edit funktionierte nicht ohne Öffnen des Editors die Standard-Merge-Nachricht zu verwenden. Das Angeben der Zusammenführungsnachrichtdatei funktioniert stattdessen.

Dies scheint jedoch immer noch anfällig für ein Problem im Beispiel in meiner Frage oben - die Reihenfolge dieser Zusammenführungen.

Ich vermute, dass Git einen weiteren Konflikt macht, wenn es eine andere Reihenfolge der Zeilen in der CSV als Test1 mit Test2 zusammengeführt wurde, während Test2 mit Test1 zusammengeführt wurde, sehen die Zeilen haben Plätze getauscht.
Es macht keinen Sinn, darauf zu konfliktieren, oder zumindest keine Merge-Strategie dafür zu haben, aber die einzige Option scheint jetzt zu sein, mehr Code zu schreiben, um diese Fälle zu umgehen.