【问题标题】:Perforce pending changelist diff scriptPerforce 挂起的更改列表差异脚本
【发布时间】:2012-03-26 12:15:43
【问题描述】:

有人有这样的脚本可以分享吗?

  • 将挂起的更改列表编号作为输入
  • 输出统一的差异(包括为添加而打开的文件)

我从经验中知道,很多整天都在使用 perforce 的人都有这些问题。当通过“p4 diff”区分新添加的文件时,我真的可以在“文件不在客户端视图中”的整个问题上使用帮助。

【问题讨论】:

标签: diff perforce patch


【解决方案1】:

我没有时间找到合适的解决方案,所以我使用了这个衬垫:

p4 describe $CHANGELIST | sed -ne 's:^\.\.\. \(.*\)#[0-9][0-9]* [a-z][a-z]*$:\1:p' | xargs p4 diff -du

这是它的工作原理:

自从——

...待处理的更改列表显示为“待处理”,并且不显示文件差异。

p4 describe $CHANGELIST

本身不会做,但你可以用它作为一个起点。它获取(除其他外)在您的$CHANGELIST 中更改的文件列表。

sed -ne 's:^\.\.\. \(.*\)#[0-9][0-9]* [a-z][a-z]*$:\1:p'

仅打印... <depot-file>#<revision> <action> 形式的行的<depot-file> 部分

xargs p4 diff -du

获取仓库文件列表并在其上运行p4 diff -du-d 标志将 u(统一格式)传递给您的 $P4DIFF 程序(应该是 diff)。

【讨论】:

  • 这在 Windows 上有效吗,我得到“sed”是无法识别的命令。如何获得彩色格式的文件差异(包括删除和添加),我可以通过电子邮件将其发送给同行进行审查?
  • sedxargsdiff 通常出现在类 Unix 系统上。在 Windows 上,您可以安装第 3 方类 Unix 实用程序,或尝试使用 PowerShell。见:stackoverflow.com/q/127318/110488
【解决方案2】:

这对我有用:

p4 diff2 //depot/a/b/c/... //depot/a/b/c/...@=$CHANGELIST | grep -v '<none>'

路径越具体,执行速度越快。 您还可以针对不同的分支对更改列表进行 diff2。

【讨论】:

    【解决方案3】:

    p4 describe -du changelist 不适合你吗?

    【讨论】:

    • 不,原因如下:脚本输出将是“差异”或“补丁”(取决于您喜欢的术语)。试金石是“能否将其提供给 unix 补丁实用程序以完全重新创建更改?”请注意,p4 describe 不包括“opened for add”文件的内容,因此补丁会丢失所有新添加的文件。
    • 啊,我明白了 - 作为一种解决方法,您可以在整个目录上运行“p4 add”,并忽略已经存在的文件。下一个版本将提供更好的解决方案(状态命令)。一旦知道添加了哪些文件,就可以将它们的内容转储到补丁中。所以我认为它需要一个脚本。
    • p4 describe 根本不显示任何差异,即使对于已修改的文件,如果更改列表处于待处理状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 2012-12-19
    相关资源
    最近更新 更多