SVN_ROOT=/raid/svn TMP_DIR=/tmp EMAIL_DOMAIN=ugn-umwelttechnik.de default: convert-all clean: @echo Räume auf… @mkdir -p bare checkout convert @rm -fr bare/* checkout/* convert/* projects.list svn.users: @echo Lese Benutzerkennungen aus der Commit-Liste… @mkdir -p data @svn log file://$(SVN_ROOT) | grep '|' | awk '{print $$3}' | sort -u > svn.users users.map: svn.users @echo Bereite Benutzer-Map-Datei vor… @echo '# Bitte gib die Echt-Namen der Benutzer zwischen den Gleichheitszeichen und den Email-Adressen ein!' > users.map @cat data/svn.users | sed -e "s|\(.*\)|\1\t = \1\t <\1@$(EMAIL_DOMAIN)>|g" >> users.map @echo "(no author) = (unbekannter Urheber) " >> users.map @echo "(kein Autor) = (unbekannter Urheber) " >> users.map @emacs users.map checkout/%: @echo Kopiere History von $* @mkdir -p checkout svn checkout "file://$(SVN_ROOT)/$*" "checkout/$*" convert/%: users.map @echo Konvertiere $* zu GIT: @mkdir -p "convert/$*" @rm -rf "convert/$*" @git svn clone --no-metadata -A users.map "file://$(SVN_ROOT)/$*" "convert/$*" @cd "convert/$*"; git svn show-ignore > .gitignore; git add .gitignore; git commit -m 'SVN-Repository zu GIT konvertiert' bare/%: make "convert/$*" @echo Konvertiere zu Bare-Repository: $* @mkdir -p "bare/$*.git" @mv "convert/$*/.git" "bare/$*.git" && rm -rf "convert/$*" @cd "bare/$*.git" && git config --bool core.bare true projects.list: @echo Lese Projektstruktur von $(SVN_ROOT)… @echo '# Dies ist die Liste der Projekte, welche vom Makefile-Script erstellt wurde.' > projects.list @echo '# Bitte prüfen Sie diese Liste, nehmen Sie ggf. Änderungen vor.' >> projects.list @echo '# Es wird außerdem empfohlen, diese ersten drei Zeilen aus der Liste zu löschen, bevor Sie fortfahren.' >> projects.list @svn list file://$(SVN_ROOT) | grep -v ^20.. | grep "/$$" >> projects.list @YEARS=$$(svn list file://$(SVN_ROOT) | grep -e ^20..); \ for YEAR in $$YEARS; do \ echo Lese Projekte des Jahres $$YEAR…; \ svn list file://$(SVN_ROOT)/$$YEAR | grep "/$$" | sed -e "s|^|$$YEAR|g" >> projects.list; \ done @echo Nachbearbeitung der Projektliste… @sed -i "s|/$$||g" projects.list @emacs projects.list convert-all: projects.list @echo Konvertiere alle Projekte aus projects.list while read LINE; do \ make "bare/$$LINE"; \ done < projects.list