5

我想设计一个shell脚本,它将根据'p4 resolve'显示的差异块做出解析决定

我脚本的当前状态类似于 -

p4 integ -b @=CL #这将在我的默认CL中打开文件。

p4 resolve #现在会一一解析在我的默认CL中打开的文件

现在我的问题是,通过 p4 解析,我无法将其输出重定向到某个文件或读取差异块,因为它显示了一个文件的差异块并等待用户输入以进行解析决定。我希望脚本做出非常明显的解决决定。

那么,有没有办法在我的默认 CL 中找到文件的差异块?这样,我无论如何都可以阅读这些差异块并做出这些明显的解决决定?

4

3 回答 3

2

我想做类似的事情;输出 Jenkins 工作中的实际冲突,以便将信息发送给相关的开发工程师。

我注意到 jwd 提供的方便的 p4-dump-conficts 脚本,基于此,也许以下就足够了

echo -e "d\ns\n" | P4EDITOR=cat p4 resolve

(即让 p4 解析为 (d)iff,然后 (s)kip 并使用cat输出结果。这适用于工作区中的所有“待处理”文件)

于 2016-04-15T07:17:02.220 回答
1

是的,您可以使用p4 resolve -n打印与 相同的输出p4 resolve,而无需提示输入或采取任何操作。从p4 解析文档

-n 列出需要解析而不实际执行解析的文件。

于 2014-09-02T22:14:35.747 回答
1

我最近也有类似的需求,并用 shell 脚本编写了一个解决方案。

对我来说,问题在于它p4 resolve想要交互,但我只想查看文件中的冲突。

我不想运行p4 resolve -f,因为这会将文件标记为在 Perforce 中已解决。

我只是想查看冲突,也许将它们通过电子邮件发送给其他人,而没有真正解决。(e)dit您可以使用 的和(s)kip命令以交互方式执行此操作p4 resolve,但我想要一个不干涉的版本。

将此脚本另存为p4-dump-conflicts

#!/usr/bin/env bash

function cat_to_file() {
    cat "$@" > "$OUTFILE"
}
export -f cat_to_file
destFileName=$(dirname "$1")/CONFLICTS_$(basename "$1")
OUTFILE="$destFileName" P4EDITOR=cat_to_file p4 resolve "$1" <<END_INPUT
e
s
END_INPUT

如果你运行p4-dump-conflicts myfile,它会写出CONFLICTS_myfile,包含冲突标记。但是,它会使文件在 Perforce 中无法解析。

注意:仅适用于一个文件,原样。

特别是对于您的问题,您可以根据需要处理 CONFLICTS_xxx 文件,然后将其结果用于最终合并解决方案。

于 2015-08-27T18:46:32.013 回答