代码之家  ›  专栏  ›  技术社区  ›  Juanjo Conti

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

  •  122
  • Juanjo Conti  · 技术社区  · 15 年前

    svn rm file ,则该文件将从本地工作副本中删除。

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

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

    3 回复  |  直到 11 年前
        1
  •  281
  •   Richard Chambers    7 年前

    你想要那个 --keep-local 命令行选项。这会将文件从版本控制中删除,而不会将其从文件系统中删除。

    $ svn rm --keep-local my_important_file
    

    注: 这个 只影响 svn rm

        2
  •  13
  •   Melebius    8 年前

    从SVN中删除文件而不在本地删除是一个常见的问题。一个突出的例子是Eclipse项目中的file.classpath。只要项目中使用的所有机器都有相同的Eclipse和Java安装,将此配置文件置于SVN下就非常好。一旦违反了这个条件,提交就开始中断其他Eclipse项目。这是一个点,一个必须从SVN删除一个文件,而不删除任何地方。

    svn rm --keep-local .classpath
    

    在同一台机器上和同一时间点上完美地完成这项工作。

    问题是其他机器可能会丢失该文件(更新时)或恢复它(提交时)。SVN的缺点是 --keep-local 也不能将其传播到其他工作副本。因此,在所有其他机器上,必须执行上述命令—最好在任何提交或更新之前执行。

    当然,这最多只能起到90%的效果。删除和重新版本将突然发生。我的解决办法是让每一台机器,我都能直接或间接地接触到,做到

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

    这实在太难看了,几乎不能称之为“解决方案”。尽管如此,它总是允许快速修复任何后来的事故。

        3
  •  -3
  •   cjames    10 年前

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

    ls -a .svn

    应该显示存储控制数据的svn目录。简单地说:

    rm -r .svn

    svn status

    将产生“警告:此目录不是工作副本”错误,因为它不再受版本控制。

    我希望这有帮助。