原文: http://answers.perforce.com/articles/KB_Article/How-To-Rollback-An-Integration

当我们需要将一个branch上的代码修改集成到另一个branch的时候,我们需要执行命令p4 integ + p4 resolve + p4 submit来完成,通称我们称以上的操作为一次integration或merge。

一 rollback integration/merge

有的时候在我们做了p4 integ 来把代码从一个branch merge到了另一个branch,但是发现有错误,或者这个merge不需要了,这时我们将需要撤销我们刚才的merge操作。

1)如果你只是执行了p4 integ 还没有执行p4 submit的时候,这时候只需要简单地在你的client里执行p4 revert就可以撤销merge了。

2)如果的merge结果已经submit到了p4 server了,则考虑以下几种方法:

第一种方法: superuser执行p4 obliterate 将merge的CL从p4 server彻底删除;

第二种方法: 手动对merge中修改的文件恢复到前一个版本,即手动对merge修改的文件执行edit/resolve/submit;

第三种方法: 使用p4v提供的rollback功能,将某个CL rollback,或者把某些文件rollback到先前的CL或时间或label;

二 rollback已经提交的merge的3中方法比较

当rollback已经提交的merge,最重要的考虑是目标文件(merge修改过的文件)是否又有新的修改。如果在merge后没有新的CL修改与merge相同的文件,使用p4 obliterate是最快速且干净的方法,如果merge修改的文件被后来的其他的CL修改了,则需要考虑使用p4v中的rollback或手动edit/resolve/submit。

以下的三种方法都各有一些限制。

当使用p4 obliterate的时候,虽然merge的CL的历史记录被删除了,但是如果在merge后有新的CL修改相同的文件,则被修改的文件中merge相关的修改内容不能被删除。

当使用p4v或用以上的第二种方法手动rollback到先前的版本时,所有相关的CL的记录将不会删除。当下次从新merge的时候会遇到文件已经被integrated的问题,需要使用p4 integ -f来强制merge。

更多详细:

http://answers.perforce.com/articles/KB_Article/How-To-Rollback-An-Integration

http://answers.perforce.com/articles/KB_article/Backing-Out-Submitted-Changelists

http://answers.perforce.com/articles/KB_Article/Backing-out-a-changelist-after-multiple-subsequent-changes

完!

p4中如何rollback/backout merge/integration的更多相关文章

  1. 开发与测试整体过程中的Git分支merge流程

    开发与测试整体过程中的Git分支merge流程 Git分支merge之开发流程 首先在Gitlab上有个仓库存储着原始的项目代码,其中包含一个叫master的分支.然后可能按功能进行分配,由不同的开发 ...

  2. Hibernate中对象的三种状态以及Session类中saveOrUpdate方法与merge方法的区别

    首先,用一张图说明一个对象,在Hibernate中,在调用了不同方法之后对象所处的不同状态 在Hibernate中,一个对象的状态可以被分为如图所示的三种 Transient:瞬时对象,该对象在数据库 ...

  3. SQLServer 2008中SQL增强之三 Merge(在一条语句中使用

    SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)   SQL Server 2008提供了一个增强的SQL命令Merge,用法参看M ...

  4. 【转】在Android布局中使用include和merge标签

    内容转自:http://fengweipeng1208.blog.163.com/blog/static/21277318020138229754135/ 在我们开发android布局时,经常会有很多 ...

  5. 【hibernate】Hibernate中save, saveOrUpdate, persist, merge, update 区别

    Hibernate Save hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原 ...

  6. jdk8中map新增的merge方法介绍

    1.Map.merge方法介绍 jdk8对于许多常用的类都扩展了一些面向函数,lambda表达式,方法引用的功能,使得java面向函数编程更为方便.其中Map.merge方法就是其中一个,merge方 ...

  7. 在 Laravel 中使用图片处理库 Integration/Image

    系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7 ...

  8. 解决Git中fatal: refusing to merge unrelated histories

    原文链接: https://blog.csdn.net/wd2014610/article/details/80854807 Git的报错 在使用Git的过程中有时会出现一些问题,那么在解决了每个问题 ...

  9. 如何在WPF中引用Windows.System.Forms.Integration

    转自 http://www.cnblogs.com/sinozhang1988/archive/2012/11/28/2792804.html “未找到程序集 WindowsFormsIntegrat ...

随机推荐

  1. 深入对比TOML,JSON和YAML

    坦率地说,在我开始与Hugo TOML合作之前,我感到羞耻是一个需要发现的新领域,但我对YAML和JSON非常熟悉.本文将帮助您了解如何通过不同的数据格式构建数据.       在Hugo中,您可以将 ...

  2. mysql多线程插入速度与不同数据库之间的比较

    package ThreadInsetMysql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQ ...

  3. poj3666 线性dp

    要把一个序列变成一个不严格的单调序列,求最小费用 /* 首先可以证明最优解序列中的所有值都能在原序列中找到 以不严格单增序列为例, a序列为原序列,b序列为升序排序后的序列 dp[i][j]表示处理到 ...

  4. python 全栈开发,Day65(MySQL练习题,参考答案)

    一.MySQL练习题 一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号.ps:针对的是自己的生物成绩比物理成绩高,再 ...

  5. python作业(day1)

    1.输入用户名密码 ,认证成功后显示欢迎信息 ,输错三次后锁定 ,锁定后再次登录时直接提示已锁定 2.多级菜单 三级菜单 可依次进入各子菜单 所需新知识点:列表.字典

  6. HDU 1517 (累乘 找规律)

    题意:2 个人玩游戏,从 1 开始,轮流对数进行累乘,直到超过一个指定的值. 解题思路:如果输入是 2 ~ 9 ,因为Stan 是先手,所以Stan 必胜如果输入是 10~18 ,因为Ollie 是后 ...

  7. 开始写博客,学习Linq(3)

    为什么需要Linq?(摘自原文) 读者会发现LINQ着眼于解决编程语言和数据库之间广发存在的不统一问题. 1.常见的问题,使用.NET Framework Class Library(FCL)提供了A ...

  8. 【UOJ】#49.铀仓库

    题解: 会发现实质上运一个点就是两个点之间的距离 暴力是n^2的 考虑二分距离来计算 二分完之后还要二分这个点对应的位置 nlognlogn的 考虑一种常用的思路 用一个点来更新另一个点 首先我们先二 ...

  9. MySQL中format()函数

    format()函数 format()函数:将数据内容格式化的,可以将数据格式化为整数或者带几位小数的浮点数(四舍五入). SELECT FORMAT();//取整 SELECT FORMAT();/ ...

  10. BZOJ1036 [ZJOI2008]树的统计Count 树链剖分

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1036 题意概括 一个树,每个节点有一个权值.3种操作. 1:修改某一个节点的权值. 2:询问某两个 ...