Ответ 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
).