Git Command只返回changelog和filename

时间:2013-04-16 18:16:21

标签: git bash changelog

我正在进行一些数据挖掘研究,我需要能够从git存储库中提取所有文件名及其关联的更改日志,并将它们传输到文本文件。

我有兴趣解析每个相应文件的更改日志,并找到与之关联的bugzilla错误ID。

到目前为止命令:

git log --stat > gitoutputlog1.txt

让我接近我想要的东西,但那里有很多我不想要的信息,可能会让我的解析器感到困惑。

任何人对bash脚本或命令都有任何想法,可以专门干净地做我想要的事情吗?

3 个答案:

答案 0 :(得分:0)

我正在努力实现我对问题的理解。它可能不是你想要的,但我认为你可以从中得到你的确切答案。

要获取克隆存储库所需的所有文件名。

git clone http://github.com/{user}/{project} {dir_name}

现在,你可以像这样编写一些shell脚本

#!/bin/bash
FILES=/path/to/* #Give path to the directory you have cloned
for file in $FILES
do
  # $file store current file name
  git log $file --oneline >> somefile.txt 
done

我直接将git log $file --oneline的输出放在输出文件中。您需要操纵它并提取bugzilla id并正确发送到输出文件。

答案 1 :(得分:0)

因此,对于每次提交,您需要一个包含所有已更改文件的列表,并且您需要提交消息中的错误号。

doit() {
    bugnumber=$(git cat-file -p $1 | your-message-parser-here)
    git diff --name-only $1^! | xargs -n1 -d\\n echo $bugnumber 
}
git rev-list | doit

答案 2 :(得分:0)

git log --name-only返回易于解析的格式,每个文件名都在一个单独的行上,并且没有任何花哨的格式。您还可以查看--format参数,它接受带有%X占位符的格式字符串,用于显示所有信息。