尝试使用git log命令和python以非常特殊的方式解析git日志文件

时间:2012-12-06 11:18:55

标签: python git-log

我想只显示添加了标记的提交之间的差异。或者最接近这个。换句话说就是这样:

tag  "5 ..."
@@ -1,1 +1,3 @@
+ dfd
+ dfgd

tag "4.."
@@ -1,1 +1,3 @@
+ dfd
+ dfgd

等等。我试过但不能得到这种特定的格式也许有人可以帮助我。然后,一旦我有一个具有此格式的文本文件或尽可能接近我执行以下操作:

with open('log_output_alex.txt', 'r') as f:
  read_data = f.read()
f.closed

tag_separation = read_data.split('tag: "')

执行此操作后,我不知道如何在数组tag_separation中的每个字符串中读取每个字符串?

一旦我能做到这一点,我就可以检查字符串中的行是否以某个字符(@,+, - 或标记)开头,并在数据结构中存储不同的行以便以后操作。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可能希望使用the GitPythonlibrary,这将为您提供对git存储库的更高级别访问权限。

即使您决定不使用它,您也可以看看它是如何在那里完成的!

答案 1 :(得分:0)

Git将无法在单个命令中为您提供该格式,因此您需要自己创建一些。为此,这里有一些提示:

  • 您可以使用git tag
  • 获取代码列表
  • 您可以使用git rev-parse TAGNAME
  • 获取提交SHA1作为参考(即标记)
  • 您可以使用git diff A..B获取两次提交之间的差异,例如git diff tag1..tag2

这样你最终也会为每个标签分离已经分开的差异,因此你不需要先将它存储在文件中并再次拆分,你可以从它开始。

  

执行此操作后,我不知道如何阅读每个字符串中的每一行

您可以使用str.splitlines首先拆分字符串来迭代字符串。