如何在svn中以与git相同的方式合并?

时间:2013-02-20 16:17:31

标签: svn

我完全不明白这个糟糕的传统软件会发生什么。 我试图在某些目录中svn copy svn://trunk svn://branch/name仍然丢失文件。我已经尝试svn merge -rxxx:yyy svn://branch/name在主干目录中,修改了更改,没有文件添加到仍然存在于主干中的分支中。

发生了什么事?如何以git方式合并?只是从一个dir到另一个dir克隆了该死的文件,就是这样...... svn merge意味着什么不同?

问题是如何在svn中做同样的事情:

$ git checkout master
$ git merge hotfix

我在这里嵌套了trunk / branch存储库的一个很大的减号。也许这会破坏所有图片?

2 个答案:

答案 0 :(得分:1)

$ svn merge ^/branch/name

或使用-r但进入您的工作副本。我想你不能直接从svn://合并到svn://。合并后,只需提交

merge: Merge changes into a working copy.
usage: 1. merge SOURCE[@REV] [TARGET_WCPATH]
(the 'sync' merge)
2. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH]
(the 'cherry-pick' merge)
3. merge --reintegrate SOURCE[@REV] [TARGET_WCPATH]
(the 'reintegrate' merge)
4. merge SOURCE1[@N] SOURCE2[@M] [TARGET_WCPATH]
(the '2-URL' merge)

每个选项都需要TARGET_WCPATH

答案 1 :(得分:1)

SVN没有以git方式合并 - 它以svn方式合并。部分原因仅仅是因为git在一个非常不同的环境中长大,解决了类似的问题。部分原因是颠覆并不支持多个祖先的概念"所以所有颠覆操作都像git rebase。

除非你做额外的工作,否则SVN合并就像完全压扁的git合并一样。 git参数是在合并期间公开变更集更好。

为了让我自己做更多像git一样的git,我前段时间写了一个工具(在bash中)来帮助我合并subversion,保留个别的变更集。这是晚期的alpha质量代码,但在多个组织中很有用:https://github.com/dmsasser/svntools。此工具适用于Linux和cygwin。

运行此工具后,结果相当于" git rebase"。