Den Prototypen unserer Webseite habe ich erstmal von “unterwegs” auf GitHub angelegt. Dieser Artikel beschreibt, wie die Quelltexte inklusive Versionshistorie umgezogen werden können in ein privates Subversion-Repository.
Leeres Subversion-Repository anlegen
Zunächst muß ein leeres Subversion-Repository angelegt werden, welches nur die Verzeichnisse
- trunk
- branches
- tags
enthält.
Lokal kann man ein Subversion-Repository so anlegen:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Danach kann man das Repository mit
svn checkout file:///tmp/dp-octopress.svn/trunk dp-octopress
auschecken.
Wie dieses Anlegen auf unserem Subversion-Server genau funktioniert beschreibe ich hier nicht näher. Am Ende hat man ein Subversion-Repository, das man beispielsweise mit
svn checkout https://83.236.132.107/svn/dp-octopress/trunk dp-octopress
auschecken kann.
Neues Git-Repository einrichten
1 2 3 |
|
Altes Git-Repository übernehmen
1 2 3 |
|
Verschmelzen mit dem Subversion-Repository
1 2 3 4 |
|
Git-Historie in SVN speichern
1 2 |
|
Leider bricht dies ab, weil bei einem Git-Commit wohl die Verzeichnisse “source” und “sass” wohl gelöscht und gleich wieder neu angelegt wurden.
Zunächst muß ermittelt werden, bei welchem Commit der Abbruch erfolgte:
git log
- Suchen nach “svn”
- Commit: 44722bcf55a05200ea7821a60da0749650fd3953 … hat geklappt
- Commit: 0e154718cdb11eb29b3a6cc91572de365dfece35 … hat nicht geklappt
Dieser Commit muß nun aufgesplittet werden:
git rebase -i 44722bcf55a05200ea7821a60da0749650fd3953
- 0e15471 mit “edit” markieren, dann abspeichern und Editor beenden
- Commit-Kommentar speichern mit
git log -1 --pretty=%B >commit.txt
git reset HEAD^
git rm -r source
git commit -m "Deleted source" source
git rm -r sass
git commit -m "Deleted sass" sass
git commit -F commit.txt .
rm commit.txt
git rebase --continue
- Bei der Fehlermeldung bzgl. ‘source’:
rm -rf source
und nochmalgit rebase --continue
- Bei der Fehlermeldung bzgl. “regex”:
git checkout --theirs .
git add .
**git rebase --continue
- Bei der Fehlermeldung bzgl. “allow-empty”:
git commit --allow-empty
git rebase --continue
… und danach die Übertragung Richtung Subversion neu starten mit
git svn dcommit
Diesmal läuft’s durch!