如何从版本控制中删除文件而不删除它?

如果我运行svn rm file ,该文件将从本地工作副本中删除。

我现在所做的是:

 $ cp file file2 $ svn rm file $ svn ci $ mv file2 file 

使用svn rm时,如何避免svn也删除本地文件?

您需要--keep-local命令行选项。 这从版本控制中删除文件,而不从文件系统中删除。

 $ svn rm --keep-local my_important_file 

从SVN中删除文件而不删除本地没有任何地方是一个常见的问题。 一个突出的例子是Eclipse项目中的文件.classpath。 只要项目中使用的所有机器具有相同的Eclipse和Java安装,将这个configuration文件放在SVN下是非常奇妙的。 一旦违反这个条件,提交就开始打破其他的Eclipse项目。 这是必须从SVN中删除文件而不删除任何地方的点。

 svn rm --keep-local .classpath 

在一台机器上完成这个工作,并在那个时间点。

问题是其他机器可能会丢失该文件(更新)或重新生成(提交)。 SVN的缺陷是既不处理 – --keep-local存储库中,也不传播给其他工作副本。 因此,在所有其他机器上的命令必须执行 – 最好在任何提交或更新之前。

这当然,最好是90%。 删除和重新版本会突然发生。 我的解决scheme是让每台机器都可以直接或间接访问

 svn rm --keep-local .classpath copy .classpath .classpath-nameOfTheMachine svn add .classpath-nameOfTheMachine 

这是非常丑陋的,难以称之为“解决scheme”。 尽pipe如此,它总是可以快速修理任何以后的事故。

我没有对这个确切的问题的答案,但我确实有一个相关的问题的答案,这是如何从版本控制中删除目录中的所有文件(即不是一个特定的),而不是在本地删除它们。 该解决scheme来自科学Linux实施。

ls -a .svn

应该显示存储控制数据的svn目录。 只是:

rm -r .svn

将摆脱这个目录。 然后input:

svn status

会产生一个'警告:这个目录不是工作拷贝'的错误,因为它不再受版本控制。

我希望这有帮助。