我正在寻找可能在两次提交或两次约会之间发生的财产变更。
为了这个例子,在代码@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 blame
或git annotate
似乎不适合该任务,因为它们适用于文件而不输出差异。调整git log
格式似乎也不相关。
我不确定如何以及是否可以轻松制作这样的脚本。思考。