如何从版本控制中删除文件而不删除它?
如果我运行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
会产生一个'警告:这个目录不是工作拷贝'的错误,因为它不再受版本控制。
我希望这有帮助。