2011-12-17 93 views
1

任何人都可以告诉我,如果有可能有一个SVN回购作为远程(辅助)回购推动提交?我希望Git回购是我的原始回购。将SVN函数作为第二个(远程)回购来推送到Git?

我更喜欢Git,并有我自己的私人Git托管和我工作的公司有SVN回购。我希望我所做的一切都会先到我的Git仓库,直到我准备将所有更改推送到客户端的SVN。让我们考虑一下,我只想从SVN的主干上拉/拉,而不需要担心其他分支/标签。

我该如何解决这个问题?我需要知道:

  1. 如何将SVN回购作为远程添加到我的Git本地回购?
  2. 如何从远程SVN回购拉/推变化?

再一次,我想强调一点,我想要我自己的私人Git(托管)回购作为起源。

+0

只是让我们知道你是从开始,你看着[混帐SVN(http://schacon.github.com/git/git-svn.html)? – 2011-12-17 23:07:50

+0

是的。我用它来让SVN成为我的主/来源仓库来推送/从中提取。我只是想知道是否可以将SVN作为辅助/远程回购。 – 2011-12-17 23:08:55

+0

@MichalM你不可能有它作为你的“起源”。使用从svn克隆的repo运行'git push'不会产生任何效果(除非你已经定义了你自己的起源,在这种情况下,你刚刚回答了你自己的问题) – 2011-12-17 23:32:42

回答

2

是的,可以有一个“二级”svn存储库。我在几个星期前有同样的问题,我用几个教程:

所以基本上,我做了我的本地主分支上的工作,通常推到原点(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

+0

非常感谢。这有很大的帮助,特别是第二环节。我遇到了一个问题,但。有趣的是,问题不在于git-svn!问题出现在原始git回购中。它变得非常非常混乱。在我对svn的更改提交之后,在本地git仓库中修改了哈希值,并且我无法再将更改推送到我的私人仓库回购仓库,因为它需要先抽取。 Pull导致导致[the mess]的合并(无冲突)(http://d.pr/wrHa)。有没有机会避免这种情况?我想我明白这里发生了什么,这可能是不可避免的,但必须提出这个问题。 – 2011-12-18 00:29:48

+0

是的,我也发生了一些奇怪的事情,这就是为什么我决定创建一个本地“svn”分支。在那个分支中,我从本地主控和远程svn分支中进行了重新分配/重新分配。一个可能的工作流程在这里解释:http://stackoverflow.com/questions/5241898/is-a-bidrectional-git-svn-sync-both-writable-possible – BenC 2011-12-18 00:44:10

0

您可以让Google代码充当Git项目的稳定只读Subversion镜像 。在此模型中,补丁首先应用于中央Git存储库中的 并稍后导出到Google代码。

而不是仅仅提供一个链接到您的存储库,为什么不用只有少数几个命令来扩展您的受众?打开你的Git托管的 项目给所有Subversion用户,他们的补丁可以通过 Git集成。

当然,这也可以用于非谷歌代码SVN回购。

https://code.google.com/p/support/wiki/ImportingFromGit