2015-07-20 131 views
0

GitPython允许我使用Git工作副本。我想使用它。但是,我将如何使用GitPython获取独特的部分,即“缩写参考ID”?如何使用GitPython获取ref ID的唯一部分?

所以我很感兴趣的是--abbrev-commit选项到git log给我(例如在git log --abbrev-commit --pretty=oneline -n 1)。

我该如何在GitPython中获得 - 或者我是否必须通过枚举ref ID来实现这一点,并根据自己的需要确定所需的长度?

+0

我知道有更短的标识符是很好的,但真的值得花时间写一堆代码吗?一个全长的提交散列可以在任何缩写的地方工作,而在最坏的情况下,“缩写”无论如何都是完整的提交散列。所以你必须能够处理全长哈希无论... – Borealid

+0

@Borealid:我并不是想详细说明为什么以及为什么需要这个。但由于这仅仅是“构建ID”,并且它显示的地方空间有限,所以缩写的参考ID和传统的版本号*是首选的形式,因为无论如何都不会完整显示全长散列(空间不足)。此外,该程序不是我的,所以我想保持我的更改微创。 – 0xC0000022L

+0

@ 0xC00000022L好的,这是你的节目。我不认为GitPython可以让你获得缩写提交哈希。如果你有能力直接运行git命令,你可以使用'git rev-parse --short'。请记住,有时候“short”的名字会和全名长度完全一样...... – Borealid

回答

3

以下代码是关于如何从GitPython使用git rev-parse --short功能性的实例:

import git 
r = git.Repo() 
short = r.git.rev_parse(r.head, short=True) 
print(short) 
# u'f360ecd' 

看来,使用GIT-命令结束自己在一个安全方式实现它优选的。

一个天真的纯Python实现看起来是这样,但:

r.head.commit.hexsha[:7] 

但是,不检查所获得的前缀是在创建的时候真正独一无二的,这就是为什么混帐命令应优先考虑基于方法的方法