【问题标题】:Is there a way to get the sum of all additions and deletions of a set of files in a git repository?有没有办法获得 git 存储库中一组文件的所有添加和删除的总和?
【发布时间】:2016-08-10 09:54:50
【问题描述】:

我想知道在整个生命周期中对文件集做了多少添加删除 em> 的存储库,无论作者或提交如何。

有没有办法从 git 获取这些信息?或者有没有办法通过使用 git 命令和一些 shell 魔法来获取这些信息?

【问题讨论】:

  • 我不知道是否有特殊命令,但您可以使用git log --all --oneline 并解析输出。
  • 这个问题可能有点不明确。例如,假设我创建了一个新存储库并添加了所有文件。然后我检查一个孤立分支并再次添加所有文件。然后我合并这两个分支(这不会改变任何文件中的行)。如果只有一个文件F,它有五行,我是加了5行还是10行?
  • @torek 正如您所说,合并不会更改任何行和任何文件。所以每个分支上应该有 5 行添加。我弄错了吗?
  • @legionth git log --all --oneline 仅返回提交哈希和消息。
  • 那么,那十行是否改变了?我们正在做 sum(delta(k,p) \forall p \elem parents(k) \forall k \elem commits(repository))? (其中 delta(k, _) 当 k 是根提交 = 差异对空树)

标签: git shell repository


【解决方案1】:

这是一个起点,但可能还有更多工作要做:

git rev-list --branches --parents |
while read hash parents; do
    # $hash is a commit; it has $parents as its parents
    set -- $parents
    for p do    # loop over all of $hash's parents
        git diff $p $hash --stat -- $pathlimiters
    done
done | awk '/files changed, / { print }'

输出会有很多行的形式:

 2 files changed, 10 insertions(+), 1 deletion(-)
 3 files changed, 924 insertions(+), 550 deletions(-)

修改awk 代码(或用您喜欢的任何语言编写一些东西)以查找插入和删除计数并将它们汇总。

您可能还需要为根提交(当$parents 为空时)添加一个特殊情况,以便与the empty tree 进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2021-06-16
    • 1970-01-01
    相关资源
    最近更新 更多