对于工作副本的每一个文件,Subversion 在管理目录 .svn/ 记录两项关键的信息:

  • 工作文件的基准版本(叫做文件的工作版本)

  • 一个本地副本最后更新的时间戳。

给定这些信息,通过与版本库通讯,Subversion 可以告诉我们工作文件是处与如下四种状态的那一种:

  • 未修改且是当前的

    文件在工作目录里没有修改,在工作版本之后没有修改提交到版本库。svn commit 操作不做任何事情,svn update 不做任何事情。

  • 本地已修改且是当前的

    工作副本已经修改,从基准版本之后没有修改提交到版本库。本地修改没有提交,因此 commit 会成功的提交,update 不做任何事情。

  • 本地未修改且过时

    这个文件在工作副本没有修改,但在版本库中已经修改了。这个文件应当更新到最新公共版本。commit 不做任何事情,update 将会更新工作副本到最新的版本。

  • 本地已修改且过时

    这个文件在工作副本和版本库中都被修改了。提交 该文件将会因为 过时 而失败。该文件应该先更新; 更新 命令将会尝试合并公共更改和本机更改。如果 Subversion 不能顺利的自动完成合并,则需要用户解决冲突。

参考

  1. http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-basics-svn.html

留言

2014-12-18