0

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

这是怎么回事??如何以 git 方式合并?只需将该死的文件从一个目录克隆到另一个目录,就是这样......确实svn merge意味着不同的东西吗?

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

$ git checkout master
$ git merge hotfix

我在这里嵌套了主干/分支存储库的一个大减号..也许这会破坏所有画面?

4

2 回答 2

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

于 2013-02-20T16:29:48.867 回答
1

SVN 不以 git 方式合并——它以 svn 方式合并。部分原因仅仅是因为 git 在一个非常不同的环境中解决了类似的问题。部分原因是 subversion 不支持“多个祖先”的概念,因此所有 subversion 操作都像 git rebase 一样。

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

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

运行此工具后,结果等同于“git rebase”。

于 2013-02-20T20:32:23.550 回答