Только для чтения git зеркало репозитория svn

Каким будет лучший способ создать зеркало git только для чтения существующего репозитория svn и настроить перехваты после коммита, чтобы всякий раз, когда кто-то фиксирует svn, зеркало git автоматически обновляется? В основном, я хотел бы запустить клонирование git -svn только один раз, на сервере, а затем позволить людям просто проверить из git без необходимости git -svn клонировать весь репозиторий 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 - это инструмент специально разработанных для этой задачи. Отказ от ответственности: я являюсь разработчиком этого инструмента.