欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mercurial思想研读系列文章——3. 改变集 博客分类: VC_Mercurial MercurialHGSVN分布式版本控制 

程序员文章站 2024-03-15 08:08:47
...

这里不再重复上一节的内容了,直接说明一下改变集包括的内容

 

Changeset(改变集)是对仓库中文件改变的原子粒度收集。

 

改变集包括:

the nodeid of its manifest

the list of changed files

information about who made the change (the "committer"), why ("comments") and when (date/time, timezone)

the name of the branch ("default", if omitted or not set)

 

每个改变包括0-2个父改变集:

0:root

1:普通的修改

2:两个集合merge

 

改变集是在commit的时候生成的。跟SVN情况相同。

 

改变集的例子:

1102691ceab8c8f278edecd80f2e3916090082dd <- nodeid

mpm@selenic.com <- 提交的用户

1126146623 25200 <- 时间, in seconds since the epoch, and seconds offset from UTC

mercurial/commands.py <- 修改文件列表,followed by the commit message

 

通过log命令可以查看改变集,教程中有给出了例子,直接看一段debug的全部信息,说明下重要的改变集相关的属性,具体命令下一节做个总结吧,这里先用。

$ hg log --debug

manifest:    1:0c7c1d435e6703e03ac6634a7c32da3a082d1600

changeset:   1:82e55d328c8ca4ee16520036c0aaace03a5beb65

tag:         tip

parent:      0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9

parent:      -1:0000000000000000000000000000000000000000

user:        mpm@selenic.com

date:        Fri Aug 26 01:21:28 2005 -0700

files+:      Makefile

description:

Create a makefile

 

-->changeset 标识了一个 改变集.

冒号前面的数字代表版本号; 它是一种标识改变集的本地缩写.只是在你的本地仓库中这个版本号才有意义.

冒号后面的那个很长的十六进制串是 ChangeSetID; 它是标识改变集的全局唯一标识符, 在所有包含这个改变集的仓库中都相同. 如果你正在和其他人讨论某个改变集,请使用这个 ChangeSetID,而不是上面说的版本号.

-->tag 是一个标签,可以理解成为一个改变集指定的名字.

你可以给任何改变集指定一个或者多个标签. 实际上, 许多改变集都是没有标签的, 所以tag这一行很多时候都不存在.

名叫tip 的特殊标签总是表示,它是仓库中最后一个改变集。 如果你创建另外的改变集(一会我们会看到),那么它将会变成 Tip。

-->

file+ 列出了在此改变集中增加的文件。

file- 列出了在此改变集中删除的文件。

manifest 给这个改变集一个 Manifest 号。(Manifest 描述了仓库中对于一个>changeset ID的内容,它主要包括了文件列表和当前版本,manifest ID用于标识特定改变集的manifest版本,多个改变集可以拥有同一个manifest版本。)