在Subversion版本库中运行svn update之前,如何知道要更新/删除/创建哪些文件

本文概述

有时, 由于错误的提交, 从SVN存储库更新生产中的项目之前的安全感, 你将需要或希望在发布更新之前查看要提交, 更新的文件或目录, 以便验证是否你需要备份服务器中包含敏感信息的某些文件。

在本文中, 我们将与你分享两种方法, 以列出在不实际更新工作副本的情况下执行svn update时将更新的文件。

A.显示更新状态

要在执行svn update命令后列出要在工作副本中添加, 更新或删除的文件, 可以将svn status命令与–show-updates标志一起使用:

svn status --show-updates

或使用简短的语法:

REM First short syntax
svn status -u

REM Or even shorter
svn st -u

如果可用, 此命令将提供cli中的文件列表, 其中包含一些符号和修订, 例如以下输出:

SVN显示将在工作副本上更新的文件

第一列的符号表示使用以下符号添加, 删除或以其他方式更改了项目:

  • ”-表示没有修改。
  • 计划添加” A”项目。
  • ‘D’-项目已计划删除。
  • ‘M’-项目已被修改。
  • ‘R’-项目已在你的工作副本中替换。这意味着已计划删除该文件, 然后已计划将其替换为同名新文件。
  • ‘C’-项目的内容(相对于属性)与从存储库收到的更新冲突。
  • ‘X’-由于存在外部定义, 因此存在该项目。
  • ‘I’-项目被忽略(例如, 使用svn:ignore属性)。
  • ‘?’ -该项目不受版本控制。
  • ‘!’ -缺少项目(例如, 你在不使用svn的情况下将其移动或删除了)。这也表明目录不完整(签出或更新被中断)。
  • ‘〜’-项目版本化为一种对象(文件, 目录, 链接), 但已被另一种对象取代。

第二列说明文件或目录属性的状态:

  • ”-无修改。
  • ‘M’-此项的属性已被修改。
  • ‘C’-该项目的属性与从存储库收到的属性更新冲突。

仅当工作副本目录被锁定时, 才会填充第三列:

  • ”-项目未锁定。
  • ‘L’-项目已锁定。

仅当计划将历史记录与历史记录相加时, 才会填充第四列:

  • ”-没有预定的提交历史记录。
  • ‘+’-预定提交的历史记录。

仅当相对于其父项切换项目时, 才会填充第五列:

  • ”-项目是其父目录的子级。
  • ‘S’-项目已切换。

第六列填充了锁定信息:

  • ”-使用–show-updates(-u)时, 这表示文件未锁定。如果未使用–show-updates(-u), 则仅表示该文件未锁定在此工作副本中。
  • ‘K’-文件已锁定在此工作副本中。
  • ‘O’-文件被另一个用户或另一个工作副本锁定。仅在使用–show-updates(-u)时显示。
  • ‘T’-文件已在此工作副本中锁定, 但是该锁定已”被盗”并且无效。该文件当前已锁定在存储库中。仅在使用–show-updates(-u)时显示。
  • ‘B’-文件已在此工作副本中锁定, 但是该锁定已被”破坏”并且无效。该文件不再被锁定。仅在使用–show-updates(-u)时显示。

仅当该项目是树冲突的受害者时, 才会填充第七列:

  • ”-项目不是树木冲突的受害者。
  • ‘C’-项目是树木冲突的受害者。

第八列始终为空白。过时的信息显示在第九列中(仅当你传递–show-updates(-u)选项时):

  • ”-工作副本中的项目是最新的。
  • ‘*’-服务器上存在该项目的较新版本。

B.空转合并

或者, 如果你的工作中没有缺少的子树, 则可以使用以下命令列出要添加, 删除或更新的文件:

svn merge --dry-run -r BASE:HEAD .

此方法不会列出有关文件的详细描述, 而是列出文件的列表以及有关项目将发生的简短描述。

编码愉快!

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?