【问题标题】:how to detect use of Perforce's "reopen for edit" from a script如何从脚本中检测使用 Perforce 的“重新打开以进行编辑”
【发布时间】:2009-10-24 03:05:21
【问题描述】:

我正在编写一个与 Perforce 交互的脚本,其中需要能够理解待处理的更改列表。为此,我使用'p4 describe'和'p4 opened',它们非常简单。例如,打开编辑的文件显示如下(从 p4 打开):

//source/stuff/things.h#1 add default change (text)

无法似乎想出的是如何检测用户分支文件然后对该文件使用“重新打开以进行编辑”命令的情况(相当于使用“ p4 edit' 在要分支的文件上)在提交之前。集成文件然后在提交集成之前使用“重新打开以进行编辑”也是如此。在分支情况下,文件显示为“添加”,但没有指示还有一个分支正在进行(因此上面的示例可能是真正的添加或重新打开的分支)。在集成情况下,它显示为“编辑”。在这两种情况下,在我提交更改后,我可以看到文件已分支/集成,但我需要能够为待处理的更改执行此操作。理论上我希望看​​到这样的东西,things.h 是从 thangs.h 分支和编辑的:

//source/stuff/things.h#1 add default change (text)
  branch from //source/other/thangs.h#42

有人知道实现此目的的方法吗?我还要提到我正在运行旧版本的 Perforce(从 2004 年开始),所以也许它在新版本中是可行的,我只需要更新我的软件。

【问题讨论】:

    标签: scripting perforce


    【解决方案1】:

    "p4 resolved" 几乎完全符合您的要求,但不幸的是它是 2007.2 中的新功能。

    [C:\dfp\Common\Code\Python]p4 opened foo.py
    //buddha/Common/Code/Python/foo.py#1 - add default change (kxtext)
    
    [C:\dfp\Common\Code\Python]p4 resolved foo.py
    c:\dfp\Common\Code\Python\foo.py - branch from //buddha/Common/Code/Python/memdump.py#1,#30
    

    您可能无法在用户运行“解决”之前检测到问题,但他们必须在提交之前解决。

    【讨论】:

    • 非常有趣 - 感谢您提供的信息。即使它不适用于我的旧版本,希望它可以帮助其他人。
    • 这正是我们的脚本所做的。针对 p4 解析的输出检查打开以进行编辑的文件,以便检查它们是否分支以及从何处分支。我不确定有没有更好的方法。
    【解决方案2】:

    我认为在发出“重新打开以进行编辑”时这是不可能的。正如您已经指出的那样,重新打开命令会将文件状态更改为不同的状态。我进行了本地测试(我正在运行 2008.2)。自您的版本以来,perforce 报告文件添加/编辑状态的方式似乎确实发生了一些变化,但您尝试做的事情似乎仍然不可能

    d:\sandbox\ctg_test>p4 integ test.txt test_branch.txt
    //ctg_test/test_branch.txt#1 - branch/sync from //ctg_test/Test.txt#1,#15
    
    d:\sandbox\ctg_test>p4 opened
    //ctg_test/test_branch.txt#1 - branch default change (text)
    

    请注意,打开的命令现在显示文件状态的“分支”而不是添加,我认为它可能在您的服务器版本中显示。但踢球者:

    d:\sandbox\ctg_test>p4 edit test_branch.txt
    //ctg_test/test_branch.txt#1 - reopened for add
    
    d:\sandbox\ctg_test>p4 opened
    //ctg_test/test_branch.txt#1 - add default change (text)
    

    我尝试使用 -ztag 选项查看是否提供了更多信息:

    d:\sandbox\ctg_test>p4 -ztag opened
    ... depotFile //ctg_test/test_branch.txt
    ... clientFile //client-mark.allender/ctg_test/test_branch.txt
    ... rev 1
    ... action add
    ... change default
    ... type text
    ... user mark.allender
    ... client client-mark.allender
    

    p4 fstat 也无济于事。

    【讨论】:

    • 老鼠,我担心这可能是答案。希望其他人可能知道一些魔法,否则我可能会不走运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 2018-02-19
    • 1970-01-01
    • 2013-06-25
    • 2018-10-11
    相关资源
    最近更新 更多