2010-04-16 88 views
1

如果您已完成合并,您可能会发现,在提交更改之前,实际上您不希望接受任何合并到受影响文件的一个的更改。所以,你做例如为:Svn:恢复文件内容更改而不恢复任何相关的mergeinfo?

$ svn revert恢复foo.c的

然而,这也似乎恢复与此相关的文件合并信息。因此,当您执行后续合并时,它会再次合并完全相同的更改。

而不是恢复一个可以这样做:

$的svn猫的foo.c> foo.c的

但这似乎并不喜欢做的事情以正确的方式?有没有更清楚地表明我想要实现的内容,即说“考虑为该文件完成合并但不更改其内容”?

+0

我可能对此有错,但我认为恢复文件的唯一情况还会恢复它的* mergeinfo *是当* mergeinfo *属性设置在文件本身上时。如果您始终在分支的根目录上进行合并,则文件本身将没有* mergeinfo *属性。 – 2010-04-16 15:53:00

+0

我只注意合并目录而不是文件(并不总是可以合并根目录),我也有这个问题。 Subversion 1.5和/或1.6(我不知道服务器更新到1.6的时间)会自动为文件和目录添加大量'mergeinfo'属性(包括'var'和'log'等东西, 'svn:忽略'd并且没有发生重大变化......)。可惜的是,你必须检查每一个文件,以了解'svn revert'是如何工作的。因此,'svn cat'可能是最好的解决方案...... – Tobias 2012-08-06 10:31:08

回答

1

要阻止修订合并,请使用--record-only参数运行合并命令。

+0

在我的情况下,我通常会合并一大堆文件。我想做一个_real_合并并接受大部分合并的更改。我只是在谈论审查合并时的情况,我决定从包含更改的许多文件合并到其中,有一个或两个文件,我不想接受更改,但仍希望合并这些文件以及所有其他文件一旦完成提交就会被视为已完成。我可以恢复这些一个或两个文件的变化,然后与这些特定文件的--record-only合并,但这似乎很长时间了? – 2010-04-16 13:26:11

+0

然后,请勿使用恢复命令,而要撤消可视化比较工具中的更改。 – Stefan 2010-04-17 08:05:30

+0

对于那些拥有虚拟Linux机器的用户来说,使用命令行客户端以及可视化工具是通过samba驱动器的TortoiseSVN,这听起来相当不方便; 'svn cat'解决方案更好,因为它可以编写脚本。 – Tobias 2012-08-06 10:37:17