問題
私のチームはビットバケットのソース管理にgitを使用しており、クライアントは社内でSubversionを使用しています。コードをSubversionにチェックインしている間、チームはどのようにしてgitを使い続けることができますか?そして、いいえ、git-svnは機能しないと思います。
要件
私のチームは、git-svnではなく純粋なgitソリューションを使用したいと考えています。この理由は、クライアントがオフィスLAN内でのみsvn環境へのアクセスを許可しているためです。オフィスの外で作業しているときは、svnへのコミットを行うことはできません。
私のアプローチ
git-svnを使用してSubversionリポジトリをチェックアウトし、bitbucketgitインスタンスをリモートとして同じgitでラップされたsvnリポジトリに追加できると思いました。次に、cronジョブはgit pull
bitbucketリポジトリからを実行し、次にagit svn dcommit
を実行してbitbucketの変更をクライアントのSubversionリポジトリにプッシュします。
これは、pull、svn dcommitプロセスが終了した後、gitが常にgitbitbucketリポジトリよりも'x'回前のリビジョンであると表示するため、問題がありました。
外見上奇妙なことはまだ何も起こっていませんが、ある時点で、クライアントがSubversionリポジトリへのチェックインを開始し、最終的にビットバケットインスタンスにプッシュする必要があると確信しています。
技術的な詳細
これを機能させるために私が使用してきた一連の大まかな手順は次のとおりです。
git svn clone -s http://svn.my-client.us/my-proj/
cd my-proj
git remote add origin path-to-bitbucket-repo
git fetch origin
git checkout -b develop remotes/develop
git branch --set-upstream develop origin/develop
git pull
#add merge comment here
git svn rebase
git svn dcommit #takes a while to transfer all the individual commits
上記のすべての後、実行git status
:
[me@dev myDir]$ git st
# On branch develop
# Your branch is ahead of 'origin/develop' by 59 commits.
#
nothing to commit (working directory clean)
オフィスにいる間だけでなく、どこからでもチェックインできるようにする必要があるとすると、これを行うためのブリッジとして使用するための戦略はありますか?
ありがとう!