问题
我的团队使用 git 对 bitbucket 进行源代码控制,我们的客户在内部使用 Subversion。我们的团队如何在将代码签入 Subversion 的同时继续使用 git?而且,不,我认为 git-svn 不会起作用。
要求
我的团队想使用纯 git 解决方案,而不是 git-svn。原因是我们的客户只允许我们在办公室局域网内访问他们的 svn 环境;在办公室工作时,我们不能对 svn 进行提交。
我的方法
我认为我可以使用 git-svn 检查 subversion 存储库,然后将我们的 bitbucket git 实例作为远程添加到同一个 git 包装的 svn 存储库。然后,一个 cron 作业可以git pull
从我们的 bitbucket 存储库中执行,然后git svn dcommit
将 bitbucket 中的更改推送到我们客户的 subversion 存储库。
这是有问题的,因为在拉取、svn dcommit 过程完成后,git 总是会在 git bitbucket 存储库之前显示“x”个修订版本。
虽然目前还没有任何奇怪的事情发生,但在某些时候,我相信我们的客户将开始签入他们的 subversion 存储库,我最终将不得不推送到我们的 bitbucket 实例。
技术细节
这是我一直用来尝试使其正常工作的一系列粗略步骤:
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)
鉴于我需要能够从任何位置进行签到,而不仅仅是在我在办公室时,是否有任何策略可以将其用作执行此操作的桥梁?
谢谢!