相当于 svn 对 Perforce 的指责

问题描述 投票:0回答:7

命令行上是否有相当于 svn 对 Perforce 的指责?

p4 annotate
不显示用户名——仅显示变更集编号(没有祖先历史!)。

我目前必须通过祖先跟踪代码并与文件日志进行比较,并且必须有一种更简单的方法——也许是 F/OSS 实用程序?

svn version-control perforce
7个回答
59
投票

我对blame命令不太熟悉,但我假设您正在寻找谁更改了特定的代码行。 最简单的方法是使用 p4win 和 p4v 中提供的 Perforce 的“延时视图”。

此工具使用注释和其他一些命令来为您提供代码行随时间变化的视图。 您可以查看谁修改了哪些代码、何时在代码行中插入或删除代码等。

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

编辑:我咨询了支持人员,您可以通过 p4v 启动延时视图,如下所示:

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

HTH.


11
投票

尝试查看一些我认为可以满足您大部分需求的工具:

1) p4pr Perl 脚本,作者:Bob Sidebotham 和 Jonathan Kamens。

2) Emacs Perforce 界面有一个命令“p4-print-with-rev-history”(绑定到“C-x p V”)。


6
投票

我用一个小脚本来指责

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

您可以将其连接到一些将传递文件名和行的编辑器。

有一个更复杂的版本这里


5
投票

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

延时视图有很多选项,例如单次修订、多次修订,可以分析更改内容、更改时间和更改者。


1
投票

@alanw123:p4pr 接近我正在寻找的内容,但它不会跨越分支边界:

last if $type eq 'branch';

这是我在尝试编写自己的实用程序时遇到的主要问题——您无法(轻松)知道这些行如何映射回分支的文件。


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.

0
投票

这可能是

p4 annotate
的迟到回复,有一个
-u
标志来显示向该行提交最后更改的用户。 还有一个
-c
标志用于显示更改列表编号而不是修订版本号。

© www.soinside.com 2019 - 2024. All rights reserved.