p4中如何rollback/backout merge/integration


 

原文: 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

 

完!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM