我经常使用 git log -p <file>
或 git log -p <directory>
获取一个文件或一组文件中更改的综合摘要。它输出影响文件的提交历史,以及每个提交的统一差异。
使用 Perforce 我可以做到 p4 changes <file>
或 p4 changes <directory>/...
获取提交列表。但是似乎没有显示相应差异的选项。
是否有我可以使用的 Perforce 等价物?如果需要 shell 脚本,一个完整的功能会很好。
如果你想知道我为什么错过这个功能,这里有一些东西 git log -p
让我非常快速地做:
- 最后一个是什么
.cpp
要修改的文件? - 查找字符串
FOO
所在的所有提交已添加到文件中。 - 一个函数刚刚被弃用;其他开发人员用什么替换了它?
- 一般来说,只知道给定目录中最近发生的事情。
最佳答案
这是一个合理的近似值:
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 通过 less -F 将其大部分输出通过管道传输
关于git - p4 命令行相当于 “git log -p” ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22503860/