[git][dulwich]在 windows 才会有的权限认定问题

[git][dulwich]在 windows 才会有的权限认定问题


前一阵子试着使用 dulwich 来操作 .git 里面的数据,例如上传到 changeset 到 remote、下载 changeset 到 local。看起来都很正常。但是,把文件从 .git 里面拿出来放,就会判定某些文件被改变,我去检查内容,自己使用 sha,md5 对两个文件检查,结果显示两个文件内容完全一样。我想,dulwich 这么多人用,难道我又遇到“没人会遇到”的问题吗?

另外我使用 tortoisegit 来检查其内容,一样也是说相同,但是用 dulwich 拉回来的 .git,跟 tortoisegit 拉回来的 .git 对于相同文件,却是一个说相同,一个说有改变。这可搞死我了,难道要放弃使用 dulwich 吗?

后来翻到一个旧的 tortoisegit 的 issue:https://code.google.com/p/tortoisegit/issues/detail?id=812

Allow to change git file permission mask / attributes (especially executable bit)

才知道,dulwich 可能也是中同一个招数。git 是有检查 Read, Write, Execute vs User, Group, Other 的。于是就可以解释,为何只要是 script 或是 linux 的可执行文件才会出现内容相同,但被判定有改变。在 windows 的文件权限是 666,跟原来的不一样了,也没办法改成 755。不晓得 tortoisegit 怎么解决这问题的…。我这里暂时停止研究了。

分享