我经常使用git log -p <file>
或git log -p <directory>
来全面了解文件或文件集中的更改。它输出影响文件的提交历史记录,以及每个提交的统一差异。
使用Perforce我可以p4 changes <file>
或p4 changes <directory>/...
获取提交列表。但似乎没有显示相应差异的选项。
我可以使用Perforce等效项吗?如果需要shell脚本,那么完全正常工作的函数会很好。
如果你想知道为什么我会错过这个功能,这里有一些git log -p
让我快速非常的事情:
.cpp
文件是什么?FOO
添加到文件中的所有提交。答案 0 :(得分:5)
这是一个合理的近似值:
p4log () {
p4 changes "$1" | awk '{print $2}' | xargs -i p4 describe -du {} | less -F
}
请注意,与git log -p
不同,参数是必需的。您可以提供类似p4log ...
的模式,以递归方式对当前目录下的所有内容运行它。
详情
p4 changes "$1"
:获取与模式匹配的文件的单行更改摘要(最新到最旧)。
awk '{print $2}'
:提取更改编号。
p4 describe -du CHANGE [$CHANGE2 etc]
:输出完整的更改说明和差异。 -du指定统一的diff格式,它最接近git的diff格式。
xargs -i p4 describe -du {}
:运行describe命令,将所有更改编号作为参数。
less -F
:如果页面超过一个屏幕,则转到终端。 Git默认管道输出的大部分输出为-F