提取 git 个图进行处理
Extract git graph for processing
给定一个 Github 存储库,我需要提取表示其提交、分支等的图表,以便我可以使用脚本对其进行处理。
我知道一旦克隆了存储库,我就可以使用如下日志命令:
git log --graph --abbrev-commit --decorate --date=relative --all
但无法处理其输出(或至少无法处理)。
经过多次无用的尝试后,我发现了这个工具 (git-dot) 可以生成一个代表给定存储库图形的 .dot 文件;然后很容易使用图形,因为我已经能够导入它读取 Networkx 中的 .dot 文件。但是,我认为这种工具不能很好地工作,因为我的提交少于 Github 存储库中写入的数量,循环太多等等。
我的问题是关于其他工具或日志命令的表示形式,它们为我提供了一个图表,我可以使用我的脚本进行处理。我希望你能帮助我。
看看 git help log
的 "PRETTY FORMATS" 部分:
使用 --pretty=format:"%H %P"
您将非常接近可解析的输出,它将为您提供 "commit -> parent" 信息
git rev-list --all --parents
将为您提供原始数据,您可以根据需要对其进行注释。 Git 祖先图没有循环。
以下是您找到的该工具必须执行的基本操作:
git rev-list --all --parents \
| awk ' BEGIN{print "strict digraph git {"}
NF==1 {print "\"""\";"}
NF>1 { for (n=2; n<=NF; ++n) print "\"""\" -> \""$n"\";" }
END{print "}"}' \
| dot -Tpng -otest.png
给定一个 Github 存储库,我需要提取表示其提交、分支等的图表,以便我可以使用脚本对其进行处理。
我知道一旦克隆了存储库,我就可以使用如下日志命令:
git log --graph --abbrev-commit --decorate --date=relative --all
但无法处理其输出(或至少无法处理)。
经过多次无用的尝试后,我发现了这个工具 (git-dot) 可以生成一个代表给定存储库图形的 .dot 文件;然后很容易使用图形,因为我已经能够导入它读取 Networkx 中的 .dot 文件。但是,我认为这种工具不能很好地工作,因为我的提交少于 Github 存储库中写入的数量,循环太多等等。
我的问题是关于其他工具或日志命令的表示形式,它们为我提供了一个图表,我可以使用我的脚本进行处理。我希望你能帮助我。
看看 git help log
的 "PRETTY FORMATS" 部分:
使用 --pretty=format:"%H %P"
您将非常接近可解析的输出,它将为您提供 "commit -> parent" 信息
git rev-list --all --parents
将为您提供原始数据,您可以根据需要对其进行注释。 Git 祖先图没有循环。
以下是您找到的该工具必须执行的基本操作:
git rev-list --all --parents \
| awk ' BEGIN{print "strict digraph git {"}
NF==1 {print "\"""\";"}
NF>1 { for (n=2; n<=NF; ++n) print "\"""\" -> \""$n"\";" }
END{print "}"}' \
| dot -Tpng -otest.png