Каким будет лучший способ создать зеркало git только для чтения существующего репозитория svn и настроить перехваты после коммита, чтобы всякий раз, когда кто-то фиксирует svn, зеркало git автоматически обновляется? В основном, я хотел бы запустить клонирование git -svn только один раз, на сервере, а затем позволить людям просто проверить из git без необходимости git -svn клонировать весь репозиторий svn.
Только для чтения git зеркало репозитория svn
Ответ 1
Я делаю это в проекте, который использует SVN (нажатие на публичный репозиторий на github). У меня нет привязки фиксации SVN, но это на задании cron:
#!/bin/bash
repo=/path/to/my-mirror.git
lockfile="$repo/cron-lock"
if ! lockfile -r1 "$lockfile";then
exit 1
fi
export GIT_DIR=$repo
# update refs/remotes/git-svn:
git svn fetch -q
# make 'master' match the git-svn branch:
git fetch "$repo" refs/remotes/git-svn:refs/heads/master
# publish to github
git push github master
rm -f "$lockfile"
Если вы запускаете это из крючка фиксации SVN вместо задания cron, он должен работать.
Конечно, вам нужно настроить удаленный вызов github
с помощью git remote add github [...]
. Репозиторий git, который я использую, представляет собой "голый" репозиторий (см. git init --bare
).
Ответ 2
Лучший способ настроить зеркало Svn/ Git можно записать в SubGit - это инструмент специально разработанных для этой задачи. Отказ от ответственности: я являюсь разработчиком этого инструмента.