Perforce责备

在命令行上是否有相当于svn的责任,Perforce? p4 annotate不显示用户名 – 只有变更集编号(没有祖先历史!)。

我现在必须通过祖先跟踪代码,并与文件日志进行比较,而且必须有一个更简单的方法 – 可能是F / OSS实用程序?

试着看看几个工具,我想可以让你得到你所需要的大部分:

1)Bob Sidebotham和Jonathan Kamens的p4pr Perl脚本。

2) Emacs Perforce接口有一个命令'p4-print-with-rev-history'(绑定到`Cx p V')。

我并不太熟悉blame命令,但是我认为你正在寻找谁改变了一行代码。 最简单的方法是使用Perforce的p4win和p4v提供的“时间推移视图”。

这个工具使用注解和其他一些命令来随时间给你一个代码行的视图。 你可以看到谁修改了什么代码,当它被插入或从代码行中删除,等等

这不是命令行。 我在帮助中简单地检查了一下,似乎没有办法直接从p4win或p4v调用启动延时视图。 有可能…我会进一步检查…

编辑:我检查了支持,你可以通过p4v启动timelapse视图如下:

 p4v.exe -cmd "annotate //<path/to/file>" 

HTH。

我用一个小脚本来指责

 #!/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' 

你可以把它挂到一些编辑器,它们会传递文件名和行。

这里有一个更复杂的版本。

从p4v客户端,你可以得到所有的视图显示文件,如文件,更改列表等“延时视图”上下文菜单。

时间stream逝视图有很多选项,比如单一修订版,多次修订版来分析什么是变化的,什么时候以及由谁来做的。

@ alanw123:p4pr与我正在寻找的东西很接近,但它不会跨越分支边界:

 last if $type eq 'branch'; 

当我尝试编写自己的实用程序时,这是我遇到的主要问题 – 您无法(轻易地)告诉线路如何映射回分支的文件。

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.