如何使用commit sha-1打印包含特定字符串的添加或抑制行?

时间:2014-06-05 12:16:41

标签: git shell

我正在寻找可能在两次提交或两次约会之间发生的财产变更。

为了这个例子,在代码@Value("${my.property}")中以这种方式注入属性。所以我正在寻找具有@Value字符串的行更改。

到目前为止,我已经能够实现的目标是以下命令。它给了我自某个日期或提交之间发生的每一个变化等等(当然取决于args)。

git log -S@Value --since=2014.5.16 --patch-with-stat
    | grep "^[+-].*@Value"
    | sed 's/^\([+-]\).*\${\([a-z0-9:.-]*\).*/\2 \1/'
    | sort
    | uniq

这给了我以下输出

some.consistency.level -
some.feature.global.consistency.level -
some.cluster.name +
some.feature.store.data.center.name +
some.feature.store.metrics.enabled:false +
some.feature.store.metrics.polling.period:60 +
some.feature.store.slow.metrics.enabled:false +
some.feature.store.consistency.level +
some.feature.store.consistency.level -
some.feature.store.read.consistency.level +

虽然我想要类似的东西(短sha-1,属性的正则表达式提取, - / +,提交消息):

abcdef1 some.consistency.level -                         # some change
abcdef2 some.feature.global.consistency.level -          # rename porperty
deffb34 some.cluster.name +                              # added cluster name
ef903ad some.feature.store.data.center.name +            # adds metrics
ef903ad some.feature.store.metrics.enabled:false +       # adds metrics
ef903ad some.feature.store.metrics.polling.period:60 +   # adds metrics
ef903ad some.feature.store.slow.metrics.enabled:false +  # adds metrics
fa3fb9e some.feature.store.consistency.level +           # refactors stuff
fa3fb9e some.feature.store.consistency.level -           # refactors stuff
fa3fb9e some.feature.store.read.consistency.level +      # refactors stuff

这对于跟踪此属性更改的原因非常有用, fields 当然可以添加或删除(如显示提交日期或作者)。

git blamegit annotate似乎不适合该任务,因为它们适用于文件而不输出差异。调整git log格式似乎也不相关。

我不确定如何以及是否可以轻松制作这样的脚本。思考。

0 个答案:

没有答案