2016-06-27 5 views
0

Ich muss zwei Zweige des Fortran-Codes zusammenführen, an dem ich gerade arbeite. Da Fortran seit einiger Zeit nicht mehr von der Groß-/Kleinschreibung betroffen ist, gab es keine Richtlinien in Bezug auf den Fall unserer Codezeilen (die große Mehrheit bestand aus Großbuchstaben, einige waren Kleinbuchstaben). Und zu einer bestimmten Zeit haben wir uns entschieden, alles in Kleinbuchstaben zu schreiben. Vor jedem Commit übergeben wir ein Skript für den gesamten Quellcode, das den Code an Kleinbuchstaben weitergibt.Groß-/Kleinschreibung ignorieren

Mein Problem ist, dass ich 2 Zweige zusammenführen muss, deren gemeinsamer Vorfahre zu einer Zeit zurückgeht, als der Fall nicht kontrolliert wurde. Beim Zusammenführen erhält fast jede Datei, die sich unterscheidet, einen Konflikt aufgrund der fehlenden Übereinstimmung (was ein "falscher" Konflikt für mich ist).

Ist es möglich (ich hoffe es ...) und wie man einen unempfindlichen Git merge machen? Wenn es nicht möglich ist, ist es möglich, unser kleines Skript für den gemeinsamen Vorfahren während des Merge-Prozesses aufzurufen?

Vielen Dank!

Antwort

0

ElpieKay's answer ist wahrscheinlich ausreichend, und ich würde es wahrscheinlich zuerst versuchen, vor allem, weil es zukünftige Kopfschmerzen auch reduzieren sollte, und ist nicht so fummelig wie sauber und wischte Filter.

Wenn Sie weiterhin mit ihm Mühe haben, obwohl zu beachten, dass Git rekursiven Merge offers a renormalize strategy-option:

renormalize
            Dies führt einen virtuellen Check-out und Check- in allen drei Stufen einer Datei beim Auflösen einer dreiseitigen Zusammenführung. Diese Option ist , die verwendet werden soll, wenn Zweige mit verschiedenen sauberen Filtern oder End-of-Line-Normalisierungsregeln zusammengeführt werden. Weitere Informationen finden Sie unter "Zusammenführen von Verzweigungen mit unterschiedlichen Checkin-/Checkout-Attributen" in gitattributes(5).

Sie können dann einen "sauberen" Filter einrichten, um ihn in Kleinbuchstaben umzuwandeln. Git verwendet den in der HEAD Commit definierten Filter auf allen drei Stufen. Wenn Sie bereits in den aktuellen (--ours) und anderen (--thiers) Commits niedrigere Cases haben, wird dies die Basisversion einfach kleingeschrieben.

Beachten Sie, dass dieser "saubere" Filter weiterhin auf Dateien git add -ed angewendet wird, bis Sie den .gitattributes wegnehmen. Das kann ein gewünschtes Merkmal sein. :-)


Als the gitattributes documentation Noten gibt es einen git config Knopf auch für diese.

0

Führen Sie einen Commit durch, um in beiden Zweigen vor der Zusammenführung alles in Kleinbuchstaben zu übergeben.

+0

Ich kann das für den Kopf jeder Branche tun, aber für den gemeinsamen Vorfahren? – janou195

+0

@ janou195 Lass es einfach in Ruhe. – ElpieKay