'删除'之间的区别是什么?和' unversion'在SVN?

时间:2017-05-16 15:26:29

标签: svn version-control

我有一个在SVN中受到版本控制的文件(我使用tortoiseSVN)。这个文件已经过时了,因此我不再希望它在我的仓库的工作副本中。但是,保留该文件的历史记录可能会很好。

我基本上想要删除'此文件不再跟踪或版本化#39;我可以选择删除'这个文件,或者' unversion'这个文件。

'删除'有什么区别?和' unversion'。每个命令的用例是什么?

1 个答案:

答案 0 :(得分:4)

svn 中删除文件,不会删除其修订历史记录。
显然可以删除历史记录[SO]: Delete file with all history from svn repository

为了方便起见,让我们考虑以下类比。
svn PoV ,就像:

  • a(来源)文件包括:
    • 一系列项目:代码行(代码)

同样的方式:

  • 文件夹包括:
    • 一系列项目:其子女:
      • (子)文件夹
      • 文件

假设我们有一个 svn 文件:

  • 在修订版 M 中,修改了该文件中的一行代码(让它成为最后一个更好地说明该示例)
  • 在修订版 N (> M )中,该行已删除

情况如下:

  1. 对于大于 N 的文件修订版,该行将不存在
  2. 对于 M N 之间的文件修订,该行将包含其最后一个内容
  3. 对于低于 M 的文件修订版,该行将具有旧内容
  4. ....
  5. 如果删除文件(从其父文件夹视角),也会发生同样的事情。

    现在,回到你的问题:在我的 TortoiseSVN (v1.9.5):

    • 我有一个删除选项
    • 我没有 Unversion 选项,但是
    • 我确实有删除(保留本地)选项 - 这是(更好的名称可能是) Unversion 。就命令行而言,这相当于svn delete --keep-local

    对文件执行其中一个操作后, svn 将不再跟踪该文件,而是删除(文件也从中删除) 工作副本 /磁盘), Unversion 会将其保留在磁盘上,就像用户手动将其复制到那里一样(后续svn st将“看到”该文件不受版本控制:第一列将是问号(),如[SVNBook]: svn status所述。

    [TortoiseSVN]: Deleting, Moving and Renaming包含非常少的官方信息。

    就个人而言,除了修正错误之外,我认为没有使用保留本地文件,例如删除不属于存储库(特定于用户)的以前提交的项目,如:

    • Eclipse .classpath .project
    • PyCharm .idea
    • VStudio .vcxproj.user

    引自[SVNBook]: svn delete

      

    使用--keep-local选项覆盖默认的svn删除行为,同时删除计划进行版本化删除的目标文件。当您意识到您不小心提交了需要在工作副本中保留的文件时,这很有用,但不应将其添加到版本控制中。