git: Wie man interaktives Rebase automatisiert / durch äquivalente Git-Befehle ersetzt

Ich muss eine interaktive Rebase automatisieren oder durch andere Befehle ersetzen. Lassen Sie mich nur meine aktuelle Situation erklären:

In einem svn-> git Übergang muss ich das eben verursachte git Repository wieder aufbauen, um eine "Geschichte Abkürzung" zu regeln, die während des SVN gebildet wird. Hier ist mein manueller Workflow, um das Problem zu beheben.

branchNEW: containing history from SOMEDAY until now
branchOLD: containing history from past to SOMEDAY

BEARBEITE oder als ASCII:

branchNEW:        Y - Z
branchOLD: W - X

Beide Filialen haben keine gemeinsamen Commits.

Die Grundidee ist jetzt, branchNEW einfach auf branchOLD zu rebasieren. Leider gab es eines Tages einige Umgestaltungen: Einige Dateien wurden in ein anderes Verzeichnis verschoben. Das Ergebnis der Rebase ist nun, dass jede verschobene Datei an beiden Stellen existiert.

BEARBEITE

some file exist in X 
the (nearly) same files also exist in Y, just on another path

branchNEW: W - X - Y - Z
(after rebase)

Nach dem Rebase enthält HEAD nun die Dateien von X und Y. Ich habe auch versucht, branchOLD ein neues Commit hinzuzufügen, wodurch die alten Dateien entfernt werden. Nach dem Rebase sind SVN-HEAD und git-HEAD binär identisch, aber das "git log --follow" funktioniert nicht.

Nun zum Hauptproblem: Ich kann dieses Problem mithilfe einer zweiten interaktiven Rebase beheben:

git rebase -i SHA

SHA ist die sha-id desal root commit in branchNEU. Jetzt muss ich im Editor für das oberste Commit "pick" in "edit" ändern. Nach dem Verlassen des Editors muss ich nun die falschen Dateien entfernen

git rm -f fileA fileB
git commit --amend
git rebase --continue

Nachdem dieser HEAD of git mit head of SVN binär identisch ist, hat git den kompletten Verlauf und auch "git log --follow" funktioniert für die verschobenen Dateien.

Da dieser Schritt nur ein kleiner Teil eines großen VCS-Übergangs in der Zukunft ist, muss ich den gesamten Prozess skripten.Aber wie können die obigen Schritte automatisiert werden?

(Ich weiß, dass SHAs nicht gleich bleiben, aber ich bin in der Lage, die erforderliche SHA von der SVN-ID zu erhalten, die in jeder Commit-Nachricht eingebettet ist)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage