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

时间:2012-02-08 16:48:55

标签: version-control perforce p4v

我在我的软件仓库中有一个分支,我想要复制到软件仓库中当前不存在的并行位置。 (即我目前有\ depot \ rev6.2 ......我需要在\ depot \ rev6.2b创建另一个分支......)我还想做两件事:

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

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

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

2 个答案:

答案 0 :(得分:9)

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

How to enable branch history

关于第二个问题,如果要从原始分支中提取更改,可以再次运行集成。 Perforce跟踪集成历史记录,因此它知道何时创建分支,以及从那时起集成了哪些变更(如果有的话)。

答案 1 :(得分:0)

Perforce保留所有集成历史记录,正如其他人已经提到过的那样,所有内容都来自于' rev6.2b'分支机构将把它的历史追溯到' rev6.2'科。 P4V修订图可以直观地显示所有这些历史记录。在命令行上的' p4文件日志'或者' 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目录分支的。

我不确定您使用的Perforce服务器和P4V客户端的版本和操作系统,但这里有一些反馈。

关于是否在rev6.2中进行了新的更改,为了方便地将它们应用于rev6.2b分支,您也可以使用change-commit触发器来执行此操作。 您可以创建一个branchspec,其视图可以映射来自' rev6.2'的所有更改。到' rev6.2b'然后在copy或integ命令中使用分支规范。

请参阅管理员指南:更改提交触发器 https://www.perforce.com/perforce/doc.current/manuals/p4sag/chapter.scripting.html#scripting.triggers.submits.commit

示例BRANCHSPEC

以下是名为' 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

希望这有帮助!