git 源码解析(一)init-db

第一次用git的时候就非常好奇,不知道这么多命令背后功能是怎么实现的。

后来在github上找到源码,回退到第一个初始节点,发现只有几个基本的.c文件,虽然不是完成的功能,但是一些基本的实现原理和逻辑还是挺清楚的。

比如对源文件内容的压缩、取hash值、压缩数据存入hash值命名的文件、tree、commit作用等等。

现在对这几个.c文件代码做简单梳理,主要用于了解功能实现的逻辑,如有错误,恳请指正,谢谢。

https://github.com/git/git.git

commit: e83c5163316f89bfbde7d9ab23ca2e25604af290

 

init-db.c 作用类似于以后的git init命令

.dircache/objects目录下面创建00~ff共256个子目录

1. mkdir(".dircache", 0700); # 创建.dircache目录

2. mkdir(sha1_dir, 0700); # 创建.dircache/objects目录

3. mkdir(path, 0700); # 创建.dircache/objects/00~ff共256个目录

int main(int argc, char **argv)
{
	mkdir(".dircache", 0700);
	sha1_dir = DEFAULT_DB_ENVIRONMENT; // make dir .dircache/objects
	mkdir(sha1_dir, 0700);
	for (i = 0; i < 256; i++)
		sprintf(path+len, "/%02x", i); // make dir format ".dircache/objects/00~ff"
		mkdir(path, 0700);
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值