对于工作副本中的每一文件,Subversion 在 .svn/ 管理区中保存两条必需的信息:
这个工作文件的修订版编号(也叫做文件的"工作版本");
本地副本最后一次更新的时间戳。
基于这些信息,Subversion 通过和仓库来通讯,可以报告一个工作文件处于下面四种状态中的哪一种:
(1)未改变的,并且是最新的
文件没有在工作副本中修改过,而且也没有人向仓库提交过修改。对此文件执行 svn commit 或是 svn update 是无效的。
(2)在本地修改过,是最新的
文件在工作副本中修改过,没有其他人提交过目前修订版的修改。这时,可以执行 svn commit 来提交修改。而执行 svn update 是无效的。
(3)未改变的,但是过时的
文件在工作副本中没有修改过,但是已经有其他人向仓库提交过修改。文件需要得到更新。执行 svn commit 是无效的。执行 svn update 可以得到文件的最新版本。
(4)在本地修改过,并且是过时的
文件在工作副本中修改过,并且有其他工作者向仓库提交了此文件的新版本。执行 svn commit 将会得到一个 "out-of-date"的错误。应该先更新这个文件。执行 svn update 命令,Subversion 将试图将仓库中的修改合并到本地工作副本中。如果 Subversion 无法正确的自动合并修改,将不得不由用户亲自来解决冲突问题。