15

既存の svn リポジトリの読み取り専用 git ミラーをセットアップし、誰かが svn にコミットするたびに git ミラーが自動的に更新されるようにポストコミット フックをセットアップする最良の方法は何でしょうか? 主に、サーバー上で git-svn clone を一度だけ実行してから、svn リポジトリ全体を git-svn clone することなく、git からチェックアウトできるようにしたいと考えています。

4

2 に答える 2

4

私は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"

cron ジョブの代わりに SVN コミット フックからこれをトリガーすると、動作するはずです。

もちろん、をgithub使用してというリモートをセットアップする必要がありますgit remote add github [...]。私が使用している git リポジトリは「ベア」リポジトリです (参考文献を参照git init --bare)。

于 2009-11-07T19:05:01.750 に答える
2

Svn/Git ミラー (書き込み可能) をセットアップする最良の方法は、SubGit を使用することです。これは、このタスクのために特別に開発されたツールです。免責事項: 私はこのツールの開発者です。

于 2012-01-04T13:01:06.007 に答える