|
|
|
SVN_ROOT=/raid/svn
|
|
|
|
TMP_DIR=/tmp
|
|
|
|
EMAIL_DOMAIN=ugn-umwelttechnik.de
|
|
|
|
|
|
|
|
default: users.map convert-all
|
|
|
|
|
|
|
|
clean:
|
|
|
|
@echo Räume auf…
|
|
|
|
@-rm -fr checkout convert projects.list
|
|
|
|
|
|
|
|
svn.users:
|
|
|
|
@echo Lese Benutzerkennungen aus der Commit-Liste…
|
|
|
|
@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 svn.users | sed -e "s|\(.*\)|\1\t = \1\t <\1@$(EMAIL_DOMAIN)>|g" >> users.map
|
|
|
|
@echo "(no author) = (unbekannter Urheber) <info@$(EMAIL_DOMAIN)>" >> users.map
|
|
|
|
@echo "(kein Autor) = (unbekannter Urheber) <info@$(EMAIL_DOMAIN)>" >> 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"
|
|
|
|
@rmdir "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
|
|
|
|
|
|
|
|
convert-all: projects.list
|
|
|
|
@emacs projects.list
|
|
|
|
@echo Konvertiere alle Projekte aus projects.list
|
|
|
|
@while read LINE; do \
|
|
|
|
make "bare/$$LINE"; \
|
|
|
|
done < projects.list
|
|
|
|
|