使用svn分支导入的git svn仓库

3

我已经克隆了一个复制的svn仓库(使用svnsync到本地文件系统)。现在,所有的分支等都可以在git中使用。现在我想开始在svn分支上工作。

git checkout remotes/B_XYZ

现在我正在使用git进行一些提交,但是我想要切换到不同的SVN分支。

git checkout remotes/B_ABC

并且还需要做一些更改。

现在最终的问题是:是否可以将我在分支上(在git中)所做的更改提交回适当分支上的原始Subversion仓库中?

3个回答

2

经过一些实验,我找到了如何提交到新的仓库,而不是复制的仓库。

git svn dcommit --commit-url URL/branches/BRANCHNAME

使用上述命令,我可以将在Git中所做的更改提交到新的svn存储库中。


2
你的 git svn dcommit 不能工作了吗?

但据我理解,git svn dcommit 将提交到我克隆的位置,也就是一个本地仓库,我已经同步了。但我想将更改提交到另一个仓库(例如 http://svn.exz.de/)。 - khmarbaise
抱歉,一开始我没有理解那部分内容。你可能可以手动添加一些远程仓库,但对我来说,更容易的方法是在一个单独的仓库中设置一个新的 git svn 集成(实际上与真正的 svn 仓库通信,而不是副本),然后使用 git cherry-pick 将更改复制到其中。 - Hank Gay
我使用了一个复制的SVN仓库,因为原始仓库目前无法访问。这就是使用复制的SVN仓库而不是原始仓库的原因。 - khmarbaise

0

如果您将SubGit安装到您的SVN存储库中并使用它而不是git-svn,则可以实现。它将为您创建一个纯Git存储库(而不是git-svn存储库!),因此对其进行任何推送都将导致SVN提交,反之亦然(由钩子触发)。任何新分支推送都将在SVN中创建一个分支,任何标签推送都将创建一个标签。

唯一的限制是您应该能够访问您的SVN存储库,但看起来这正是您的情况。

要执行此操作,请运行

$ subgit install path/to/svn/repostiory

链接的 Git 存储库将位于 path/to/svn/repostiory/.git。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接