在命令行上是否有相当于svn对Perforce的责任? p4 annotate
不显示用户名 - 仅显示变更集编号(没有祖先历史记录!)。
我目前必须通过祖先跟踪代码并与文件日志进行比较,而且必须有一种更简单的方法 - 也许是F / OSS实用程序?
答案 0 :(得分:55)
我对blame命令并不过分熟悉,但我认为你正在寻找改变特定代码行的人。最简单的方法是使用Perforce的p4win和p4v提供的“时间间隔视图”。
此工具使用注释和其他一些命令为您提供一段时间内代码行的视图。您可以看到谁修改了代码,从代码行插入或删除代码等等。
但这不是命令行。我在帮助中简要检查了一下,似乎没有办法直接从p4win或p4v调用启动时间推移视图。可能会有......我会进一步检查......
编辑:我检查了支持,您可以通过p4v启动游戏中时光倒流视图,如下所示:
p4v.exe -cmd "annotate //<path/to/file>"
HTH。
答案 1 :(得分:10)
尝试看一下我认为可以为您提供所需内容的几种工具:
1)p4pr Perl脚本由Bob Sidebotham和Jonathan Kamens撰写。
2)Emacs Perforce接口有一个命令'p4-print-with-rev-history'(绑定到'C-x p V')。
答案 2 :(得分:5)
我使用一个小脚本来指责
#!/bin/bash
FILE="$1"
LINE="$2"
p4 annotate -cq "${FILE}" | sed "${LINE}q;d" | cut -f1 -d: | xargs p4 describe -s | sed -e '/Affected files/,$d'
你可以将它挂钩到一些将传递文件名和行的编辑器。
有一个更复杂的版本here。
答案 3 :(得分:3)
从p4v客户端,您可以在所有视图显示文件(如文件,更改列表等)上获得“延时视图”上下文菜单。
时间推移视图有很多选项,例如单修订版,多修订版,用于分析更改内容,时间和人员。
答案 4 :(得分:1)
@ alanw123:p4pr接近我正在寻找的东西,但它没有跨越分支边界:
last if $type eq 'branch';
当我尝试编写自己的实用程序时,这是我遇到的主要问题 - 你不能(轻松)告诉行如何映射回分支的文件。
答案 5 :(得分:1)
p4 annotate
命令实际上可以在命令行上使用-I
和-i
命令进行合并/集成和分支(但不能同时执行这两项操作)曾经:():
-I
Follow integrations into the file. If a line was introduced into the file by a merge, the source of the merge is indicated as the changelist that introduced the line. If that source was itself the result of an integration, that source will be used instead, and so on.
The use of the -I option implies the -c option. The -I option cannot be combined with -i.
-i
Follow file history across branches. If a file was created by branching, Perforce includes revisions up to the branch point.
The use of the -i option implies the -c option. The -i option cannot be combined with -I.