进入工作拷贝的管理区

像我们前面提到的,每个Subversion工作拷贝包含了一个特别的子目录叫做.svn,这个目录包含了关于工作拷贝目录的管理数据,Subversion使用.svn中的信息来追踪如下的数据:

然而.svn目录中还有一些其他的数据,我们会考察一些最重要的项目。

或许.svn目录中最重要的单个文件就是entries了,这个条目文件是一个XML文档,包含了关于工作拷贝中的版本化的资源的大多数管理性信息,这个文件保留了版本库URL、原始修订版本、可知的最后提交信息(作者、修订版本和时间戳)和本地拷贝历史—实际上是Subversion客户端关于一个版本化(或者是将要版本化的)资源的所有感兴趣的信息!

如下是一个实际条目文件的例子:

就像你能看到的,条目文件本质上是一列条目,每个entry标签代表了下面三者之一的事情:工作拷贝目录本身(叫做“本目录”条目,并且name属性的值为空),工作拷贝目录中的一个文件(通过kind属性设置为"file"来标示),或者是工作拷贝中的一个子目录(kind这时设置为"dir")。所有在这个文件标记的文件和子目录都是已经纳入版本控制或者是(上面例子中的zeta)预定在下次提交加入到版本控制。每个条目都有一个唯一的名字,每个条目有一个kind节点。

开发者必须意识到一些Subversion读写entries文件的特殊规则,每个条目都有一个修订版本和URL与之关联,注意在上面实例文件中并不是每个entry标签都有明确的revisionurl属性,Subversion允许一些情况不明确的说明这个两个属性,如属性值与“本目录”的值相同(revision的情况)或者是可以从“本目录”简单计算[46]出的来(url)。注意对于子目录条目,Subversion只保管最重要的信息—名称、类型、URL、修订版本和日程。为了减少重复信息,Subversion指示当要检测目录信息时会跑到这个子目录自己的.svn/entries的“本目录”条目。当然了,对这个子目录的引用还是会保存在父目录的entries文件,这些信息足以在子目录丢失后执行基本的版本操作。