问题:2个项目共享主干并正在更新一些相同的文件.现在需要发布一个项目,因此在项目开始之前从检查点创建了一个新分支.
我列出了主线上的变更清单编号.使用它我可以使用带有一系列'p4 describe#'命令的脚本生成列表更改文件和diff输出.
我可以重新格式化该输出并以某种方式将其应用于新分支吗?
小智 21
对标题的回答:"是否可以使用一组更改列表创建补丁?" 是.
p4 diff2 -u //path_to_your_sources/...@cln_minus_1 //path_to_your_sources/...@cln > /tmp/cln.patch.
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用/tmp/cln.patch作为补丁实用程序的输入.这里,'cln'是您要为其创建补丁的提交的更改列表编号.
我刚刚花了两个小时才挣扎.使用cygwin patch,我不得不把路径弄得一直被识别出来.
最后,神奇的咒语看起来像这样(断线):
p4 diff2 -u //depot/foo/main/...@100003 //depot/foo/main/...@100000 |
sed 's@//depot/@E:/Source/@g' |
sed '/^+++\|---/s@/@\\@g' |
patch
Run Code Online (Sandbox Code Playgroud)
那是:
p4 diff2在-u我关注的两个修订版之间获得部分版本的统一diff().第二个修改列表是一个前的第一个我想要的,否则它不包含在差异中.sed改变//depot/来E:/Source/,这是我的工作空间生活.patch.Cygwin patch非常聪明,可以检查Perforce中的文件,但我不确定如何让它默默地执行.它提示Get file 'e:\Source\foo\whatever' from Perforce with lock?.
这是p4版本2010.1,一个在PowerShell上运行的最近安装的Cygwin.
哦,在此之后,patch写出了Unix风格的行结尾,所以我过去常常u2d修复它们.
Perforce 将让您挑选用于集成的更改列表,这可能比尝试生成和应用补丁更容易。Perforce 将跟踪您在何处集成了哪些修订,这可能会使未来的集成更容易。
假设您曾经有一个行李箱:
//depot/mycode/trunk
Run Code Online (Sandbox Code Playgroud)
您在那里签入了所有更改。您在过去的某个时候将主干分支为:
//depot/mycode/rel
Run Code Online (Sandbox Code Playgroud)
并且您有要合并的主干上的更改列表列表。从映射 rel 的客户端规范中,集成每个更改列表:
p4 integrate //depot/mycode/trunk/...@1234,1234 //depot/mycode/rel/...
Run Code Online (Sandbox Code Playgroud)
1234更改列表编号在哪里。每次积分后解决。您可能还希望在集成期间的各个检查点构建、测试和提交您的集成,前提是您可以确定这样做的好处。(Perforce 可以在每次提交时处理多个集成,但如果您犯了错误,则需要恢复到最后一个签入的版本并重做中间集成和解决。)
| 归档时间: |
|
| 查看次数: |
21281 次 |
| 最近记录: |