我搜索了一下,什么也没找到;所以,决定看看社区在这方面能提供什么。
当你提交到GitHub时,它会执行一个diff,告诉你添加了多少 * 行 *,删除了多少 * 行 *。
从度量的Angular 来看,考虑到我使用的许多语言并不依赖于空格字符来运行,这并没有给我留下太多印象,因此,可以在一行中定义一个包含50个方法的整个类(当然,您不会这么做)。
测量线可以让我们相信单线解决方案本质上比其他方案更好。
所以,我很好奇是否有一种方法可以让GitHub(或Git)显示非空格字符数的差异。
示例:
class Something
{
function hello()
{
}
}
变更为:
class Something {
function hello() {
}
}
会导致这样的结果:
生产线变更:字符更改:0
2条答案
按热度按时间nfs0ujit1#
使用以下命令查找线路变化(从显示的最终结果中减去1)
产量:3
输出:
ufj5ltwl2#
我遇到了类似的问题,并尝试使用
git diff
的--word-diff
参数来解决它。医生
echo $(git diff --cached --word-diff --color | grep -oP '\x1b\[[0-9;]*m\{\+([^\x1b]*)\+\}\x1b' | cut -d+ -f 2- | rev | cut -d+ -f 2- | tr -d '\n' | wc -c) - $(git diff --cached --word-diff --color | grep -oP '\x1b\[[0-9;]*m\[\-([^\x1b]*)\-\]\x1b' | cut -d- -f 2- | rev | cut -d- -f 2- | tr -d '\n' | wc -c) | bc
一些解释:
git diff --cached --word-diff --color
根据HEAD打印当前暂存的单词diff。
grep -oP '\x1b\[[0-9;]*m\{\+([^\x1b]*)\+\}\x1b'
过滤所有添加的内容(如果在git config中更改了颜色也是如此)。
cut -d+ -f 2- | rev | cut -d+ -f 2-
复杂的版本过滤周围的
{+
和+}
之间的内容,我不能拿出一个可靠的替代版本。tr -d '\n' | wc -c
计算不带换行符的字符数。
第二部分实际上是完全相同的,但是对于删除的内容,匹配
[-
和-]
而不是{+
和+}
,毕竟echo
用-
连接两个数字,这样bc
就可以计算出差值。还有一点意见:我选择了彩色输出,因为这使得模式匹配更加容易(在添加用于匹配开始或结束的字符时,如
+}
、[-
等)下面是用Python编写的基本相同的逻辑:
将它保存在一个文件中,然后从git仓库中调用它。