Version control 将文件复制到新分支,并在P4V中保留更改列表历史记录

Version control 将文件复制到新分支,并在P4V中保留更改列表历史记录,version-control,perforce,p4v,Version Control,Perforce,P4v,我的仓库中有一个分支,我想将其复制到仓库中当前不存在的平行位置。(即,我目前拥有\depot\rev6.2…,我需要在\depot\rev6.2b…)创建另一个分支。我还希望发生两件事: 首先,我需要将rev6.2中的变更列表历史复制到rev6.2b。当我尝试使用集成功能时,我在仓库中有一个新分支,但历史记录是空白的(我提交创建分支的CL中只有一个条目) 其次(如果可能的话),我想找到一个快速的方法,这样如果在rev6.2中进行了新的更改,我也可以轻松地将它们应用到rev6.2b分支 我是一个非

我的仓库中有一个分支,我想将其复制到仓库中当前不存在的平行位置。(即,我目前拥有\depot\rev6.2…,我需要在\depot\rev6.2b…)创建另一个分支。我还希望发生两件事:

首先,我需要将rev6.2中的变更列表历史复制到rev6.2b。当我尝试使用集成功能时,我在仓库中有一个新分支,但历史记录是空白的(我提交创建分支的CL中只有一个条目)

其次(如果可能的话),我想找到一个快速的方法,这样如果在rev6.2中进行了新的更改,我也可以轻松地将它们应用到rev6.2b分支


我是一个非常基本的P4V用户(2011.1),所以细节越多越好。提前感谢您的帮助

您需要启用分支历史记录。单击我用红色圈出的图标,然后在下拉列表中选择“跟随分支操作”


关于第二个问题,如果您想从原始分支带来更改,您可以再次运行integrate。Perforce跟踪集成历史,因此它知道分支是何时创建的,以及自那时以来集成了哪些更改(如果有)。

Perforce保留所有集成历史,正如其他人已经提到的那样,因此从“rev6.2b”分支到“rev6.2”分支的所有内容都将跟踪其历史。P4V修订图直观地显示了所有这些历史记录。在命令行上,使用“p4 filelog”或“p4 filelog-i”命令,例如:

$ p4 filelog //depot/rev6.2b/...
//depot/rev6.2b/bar
... #1 change 12179 branch on 2016/02/25 by super1@super2015.2 (text) 'copy'
... ... branch from //depot/rev6.2/bar#1
//depot/rev6.2b/foo
... #1 change 12179 branch on 2016/02/25 by super1@super2015.2 (text) 'copy'
... ... branch from //depot/rev6.2/foo#1
输出显示rev6.2b中的文件是从rev6.2目录分支出来的

我不确定您正在使用的Performce server和P4V客户端的版本和操作系统,但这里有一些反馈

关于是否在rev6.2中进行了新的更改,为了方便地将其应用于rev6.2b分支,您还可以使用更改提交触发器来实现这一点。 您可以创建一个BranchSec,该BranchSec具有一个将所有更改从“rev6.2”映射到“rev6.2b”的视图,然后在copy或integ命令中使用分支规范

请参阅管理指南:更改提交触发器

示例BranchPec

这是名为“master6.2copy”的分支规范的视图

View:
    //depot/rev6.2/... //depot/rev6.2b/...
范例

下面是显示触发器脚本内容的*.bat文件。(这不是官方的Perforce脚本,只是一个可以调整的示例。) 下面的第一行也可以改为:

p4-p localhost:1666-u myuser-c mywksp copy-b master6.2copy

希望这有帮助

@echo off
::
:: Example:   The following change-commit trigger is an MS-DOS batch file
:: This trigger fires only after a changelist submission on a master directory
:: 
:: Add the following line to your triggers table:
::
:: copymaster change-commit //depot/rev6.2/... "/home/user/scripts/copyrev6-2.bat"

p4 -p localhost:1666 -u myuser -c mywksp integ -b master6.2copy
p4 -p localhost:1666 -u myuser -c mywksp resolve -at
p4 -p localhost:1666 -u myuser -c mywksp submit -d "rev6.2 copy to rev6.2b after changelist"
exit 0