首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Jgit源码阅览——文件差异比较就是比较index文件的差别

2012-09-27 
Jgit源码阅读——文件差异比较就是比较index文件的差别git比较文件差异是根据当前的index文件进行差量比较的

Jgit源码阅读——文件差异比较就是比较index文件的差别
 



git比较文件差异是根据当前的index文件进行差量比较的.

这些差量信息如:

added files     已经add进index的file,也就是在objects目录中存在备份的file
changed files   内容发生改变,而且在index和版本库中都存在记录的file
removed files   已经被移除的file
missing files   已经不存在的file
modified files  内容发生改变,而且受控目录和index都存在的file
conflicting files 与已经存在版本相冲突的file
untracked files 还没被add进index的file
files with assume-unchanged flag 这个,知道说一下


这个是IndexDiff类中比较当前workTree跟版本库中文件状态 最关键的部分

/** The standard (fully merged) stage for an entry. */public static final int STAGE_0 = 0;/** The base tree revision for an entry. */public static final int STAGE_1 = 1;/** The first tree revision (usually called "ours"). */public static final int STAGE_2 = 2;/** The second tree revision (usually called "theirs"). */public static final int STAGE_3 = 3;
.
这个时候,在受控目录中的文件为冲突态.
78行:如果已经存在index和版本库中,这个文件内容又发生了改变,这个时候,这个文件是changes状态
82-84行:在版本库中,但是已经不在index状态了,是remove状态,

102行,:如果该文件在index中,但是在受控目录不见了,定义为missing状态,一般在eclipse的egit中可以看到这个状态




不一一分析,从此可以看到git在切换分支的时候如此之快,其实就是拿index出来比较,因为index已经索引了文件在objects的位置.














作者:http://414149609.iteye.com/admin/blogs/1668995

热点排行