将SVN函数作为第二个(远程)回购来推送到Git?
任何人都可以告诉我,如果有可能有一个SVN回购作为远程(辅助)回购推动提交?我希望Git回购是我的原始回购。将SVN函数作为第二个(远程)回购来推送到Git?
我更喜欢Git,并有我自己的私人Git托管和我工作的公司有SVN回购。我希望我所做的一切都会先到我的Git仓库,直到我准备将所有更改推送到客户端的SVN。让我们考虑一下,我只想从SVN的主干上拉/拉,而不需要担心其他分支/标签。
我该如何解决这个问题?我需要知道:
- 如何将SVN回购作为远程添加到我的Git本地回购?
- 如何从远程SVN回购拉/推变化?
再一次,我想强调一点,我想要我自己的私人Git(托管)回购作为起源。
是的,可以有一个“二级”svn存储库。我在几个星期前有同样的问题,我用几个教程:
- http://flavio.castelli.name/howto_use_git_with_svn(上GIT-SVN)
- http://jpz-log.info/archives/2009/09/16/start-in-git-push-to-subversion-then-work-with-git-svn/(关于如何处理与git的远程svn库)
- http://trac.parrot.org/parrot/wiki/git-svn-tutorial(另一个完整的教程)
所以基本上,我做了我的本地主分支上的工作,通常推到原点(git存储库),有时推送到svn服务器(公司存储库)。
在你.git/config
,你应该有这样的事情:
[remote "origin"]
url = your-url-to-the-git-repository
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[svn-remote "svn"]
url = your-url-to-the-svn-repository
fetch = :refs/remotes/git-svn
我也有一个当地的“SVN”分支,但可能并不需要。为了把我的工作,我有:
git push origin # push to remote git repo
git svn dcommit # push to remote svn repo
如果你不知道,当你推,使用--dry-run
选项:
git svn dcommit --dry-run # check that you are pushing to the right branch
你可以在在平时的工作流程的详细信息tutorials。
非常感谢。这有很大的帮助,特别是第二环节。我遇到了一个问题,但。有趣的是,问题不在于git-svn!问题出现在原始git回购中。它变得非常非常混乱。在我对svn的更改提交之后,在本地git仓库中修改了哈希值,并且我无法再将更改推送到我的私人仓库回购仓库,因为它需要先抽取。 Pull导致导致[the mess]的合并(无冲突)(http://d.pr/wrHa)。有没有机会避免这种情况?我想我明白这里发生了什么,这可能是不可避免的,但必须提出这个问题。 – 2011-12-18 00:29:48
是的,我也发生了一些奇怪的事情,这就是为什么我决定创建一个本地“svn”分支。在那个分支中,我从本地主控和远程svn分支中进行了重新分配/重新分配。一个可能的工作流程在这里解释:http://*.com/questions/5241898/is-a-bidrectional-git-svn-sync-both-writable-possible – BenC 2011-12-18 00:44:10
您可以让Google代码充当Git项目的稳定只读Subversion镜像 。在此模型中,补丁首先应用于*Git存储库中的 并稍后导出到Google代码。
而不是仅仅提供一个链接到您的存储库,为什么不用只有少数几个命令来扩展您的受众?打开你的Git托管的 项目给所有Subversion用户,他们的补丁可以通过 Git集成。
当然,这也可以用于非谷歌代码SVN回购。
只是让我们知道你是从开始,你看着[混帐SVN(http://schacon.github.com/git/git-svn.html)? – 2011-12-17 23:07:50
是的。我用它来让SVN成为我的主/来源仓库来推送/从中提取。我只是想知道是否可以将SVN作为辅助/远程回购。 – 2011-12-17 23:08:55
@MichalM你不可能有它作为你的“起源”。使用从svn克隆的repo运行'git push'不会产生任何效果(除非你已经定义了你自己的起源,在这种情况下,你刚刚回答了你自己的问题) – 2011-12-17 23:32:42