SVN Diff - 丢弃“原始分支 (A)”差异并添加“命运分支 (B)”差异

问题描述 投票:0回答:1

我有 2 个分支,假设 A 和 B,我对它们应用了 SVN diff。假设我此时处于分支 A,我想删除 A 中而不是 B 中的所有代码,然后将 B 中的所有代码添加到 A 中。

在此过程之后,分支 A 和 B 将几乎 100% 相等。

有办法在 SVN 中执行这些操作吗?

我想这样做,因为我想保留 A 的历史记录(例如,在那里完成的所有提交)

谢谢你。

svn tortoisesvn
1个回答
0
投票

使用分支 A 中的日志但分支 B 中的内容的问题相当具体,因此没有纯粹的 Subversion 解决方案。

我还看到保留历史记录而不保留具有相应更改的文件从长远来看可能会导致混乱的风险。假设您修复了分支 A 上的错误,但没有修复分支 B 上的错误,然后您执行您计划执行的操作,仍然会有一个日志条目表明错误已修复在有错误的文件上。

尽管如此,我会采取简单的方法并结帐分支A

svn checkout <YOUR_REPO>/branches/A wc

接下来,我将从

.svn
中删除除
wc
文件夹之外的所有内容。

要将所有B的文件移过去,您可以使用Subversion的导出命令:

svn export --force <YOUR_REPO>/branches/B wc

然后是最困难的部分,其中您必须

svn add
不存在于A中但存在于B中的文件和
svn rm
存在于A中但不存在于B中的文件。使用命令行的一些技巧可能会有所帮助,但这超出了这个问题的范围。 TortoiseSVN 也能胜任这项工作,您只需检查和取消检查大量文件即可。

需要提到的是,svn 属性不会被转移。我不知道有什么方法可以这样做。所以你应该仔细检查它们。

最后一步,

svn commit
您的更改。希望有一个非常具有描述性的日志消息,清楚地表明所有和任何早期的日志消息都应该被忽略。

更好的选择是扔掉日志(或者更确切地说:扔掉A)并将B复制到A

svn rm <YOUR_REPO>/branches/A
svn cp <YOUR_REPO>/branches/B <YOUR_REPO>/branches/A
© www.soinside.com 2019 - 2024. All rights reserved.