找出近似的"所有权" git中的源文件

时间:2017-07-20 08:16:06

标签: git gitlab

我在一个大型协作项目中有一些重构工作

我找到了如何列出我添加的文件here

我发现列出所有文件I:

很有用
  1. 进行了至少X次更改
  2. 或以其他方式表明我已对该档案进行过重大工作
  3. 是否有可以实现此目的的命令或工具?

    注意:git也托管在Gitlab 9.2

1 个答案:

答案 0 :(得分:1)

此命令为您提供包含创建者的文件列表:

git ls-files -z
  • \0 - 由git log --reverse --format='%cN' '{}' | head -n1
  • 分隔的文件列表
  • xargs -I[] echo '[];{}' - 提供文件创建者的姓名
  • creator;filename - 将输出修改为grep -E "^your name;"
  • N - 仅将输出减少到您的文件;不要忘记修改它,否则你会得到空的结果。

要列出超过git ls-files -z | xargs -0 -I{} -n1 sh -c "git log --numstat --format='%cN' '{}' | sed -E -n -e '1h;3{s/\s+/;/g;H;x;s/\n/;/;p}'" | grep -E "^your name;" | awk -v limit=10 -F';' '{files[$4] += $2 + $3} END {for(file in files) if(files[file] > limit){print file, files[file]}}' 次更改的文件,您可以使用以下命令:

git ls-files -z
  • \0 - 由git log --numstat --format='%cN' '{}'
  • 分隔的文件列表
  • sed -E -n -e '1h;3{s/\s+/;/g;H;x;s/\n/;/;p}' - 具体提交的打印提交者名称和更改次数(文件中新行数和已删除行数)
  • commiter;new lines;deleted lines;filename - 将输出修改为grep -E "^your name;"
  • awk -v limit=10 -F';' '{files[$4] += $2 + $3} END {for(file in files) if(files[file] > limit){print file, files[file]}}' - 仅将输出减少到您的文件;不要忘记修改它,否则你会得到空的结果。
  • 10 - 仅打印超过-v limit=10次更改的文件。更改计算为新行和删除行的总和。如果您想要打印文件的更改限制,只需将$(document).ready(function(){ var nav = $('.col-nave'); var scrolled = false; $(window).scroll(function () { if (500 < $(window).scrollTop() && !scrolled) { nav.addClass('visible').css({ "position":"fixed"}); nav.addClass('visible').velocity('transition.bounceIn'); scrolled = true; } if (200 > $(window).scrollTop() && scrolled) { nav.addClass('visible').css({ "position":"relative"}); nav.addClass('visible').velocity('transition.bounceIn '); setTimeout(function(){ nav.removeClass('visible');},500); scrolled = false; } }); }); 更改为您的号码。

我希望这就是你想要的。