基本上,我希望在每次提交后获得存储库中的代码行数.

我发现的唯一(非常糟糕的)方法是使用git filter-branch来运行wc -l *,一个脚本在每次提交时运行git reset --hard,然后运行wc -l

更清楚地说,当该工具运行时,它将输出第一次提交的代码行,然后是第二次提交的代码行,依此类推.这就是我希望工具输出的内容(例如):

me@something:~/$ gitsloc --branch master
10
48
153
450
1734
1542

我已经使用过ruby'git'库,但我发现最接近的方法是在diff上使用.lines()方法,它似乎应该给出添加的行(但没有:例如,当删除行时,它返回0)

require 'rubygems'
require 'git'

total = 0
g = Git.open(working_dir = '/Users/dbr/Desktop/code_projects/tvdb_api')    

last = nil
g.log.each do |cur|
  diff = g.diff(last, cur)
  total = total + diff.lines
  puts total
  last = cur
end

推荐答案

您也可以考虑gitstats,它将此图生成为HTML文件.

Ruby相关问答推荐

回声ABC | ruby -p -e "sub('a','A').sub('b', 'B')": 为什么不是 "ABc"?

数组到哈希:字数

如何替换 ruby​​ 中模式的每个实例?

冒号:和粗箭头=>有什么区别

需要在Ruby中将数组拆分为指定大小的子数组

如何从 Ruby 中的线程返回值?

退出(exit)和中止(abort)有什么区别?

从href html标签中提取带有Ruby中nokogiri的链接(URL)?

Ruby 中有类似 Python 生成器的东西吗?

判断文件是否包含字符串

我可以在 Ruby 中使用默认值创建一个数组吗?

删除 Ruby 数组中的 nil 和空白字符串

将 2 元素数组的数组转换为哈希,其中重复键附加附加值

Ruby:继承与类变量一起工作的代码

Ruby 与计算机科学相关的 yield 特性

Ruby 的所有/最佳列表?

如何在没有 RVM 的 Ubuntu 上安装 Ruby 2

如何在器上下文中运行 ruby​​ 脚本?

Ruby 中的 each 和 collect 方法有什么不同

Integer 和 Fixnum 有什么区别?