Svn 记录已使用Subversion进行的复制或移动

Svn 记录已使用Subversion进行的复制或移动,svn,version-control,Svn,Version Control,Mercurial为移动和复制提供了一个-a,--after选项,该选项在操作发生后记录这些操作 如何使用Subversion实现这一点?您不能只记录它 您可以做的是再次执行复制并覆盖旧的复制目标。Subversion只支持事后记录合并,而不支持复制和/或移动…坦率地说,不,在Subversion中无法做到这一点。假设您没有做任何其他更改,您可能需要做的是svn还原,然后执行svn复制,以便Subversion知道您复制了文件。或者,如果您并不真正关心复制文件的历史记录,只需添加新位置。因此,如

Mercurial为移动和复制提供了一个
-a,--after
选项,该选项在操作发生后记录这些操作


如何使用Subversion实现这一点?

您不能只记录它


您可以做的是再次执行复制并覆盖旧的复制目标。

Subversion只支持事后记录合并,而不支持复制和/或移动…

坦率地说,不,在Subversion中无法做到这一点。假设您没有做任何其他更改,您可能需要做的是
svn还原
,然后执行
svn复制
,以便Subversion知道您复制了文件。或者,如果您并不真正关心复制文件的历史记录,只需添加新位置。

因此,如果没有更好的答案,以下是我提出的最佳机制:

# file was added
touch a
svn add a
svn ci

# file was moved without versioning
mv a b

# file versioning is added
mv b a
svn mv a b

请记住,您不能
svn cp a b
,因为
svn
将完全拒绝复制到存在的目标,除非它是目录。

您所说的“旧复制目标”是什么意思?您说过,操作已经发生了。复制操作的目的地是“旧复制目标”。您认为可以添加一些命令行内容来澄清您的意思吗?Afaict这是最好的答案,但非常模糊。SVN无法处理这样的基本用例,这让我一直感到惊讶。将文件移回原处并强制:更糟糕的解决方案。但看起来,这是唯一可用的。