我正在进行一些数据挖掘研究,我需要能够从git存储库中提取所有文件名及其关联的更改日志,并将它们传输到文本文件。
我有兴趣解析每个相应文件的更改日志,并找到与之关联的bugzilla错误ID。
到目前为止命令:
git log --stat > gitoutputlog1.txt
让我接近我想要的东西,但那里有很多我不想要的信息,可能会让我的解析器感到困惑。
任何人对bash脚本或命令都有任何想法,可以专门干净地做我想要的事情吗?
答案 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
占位符的格式字符串,用于显示所有信息。