2014-12-04 127 views
1

我做了一個相當大的重構,構建了一個二進制文件並提交給QA進行測試。我希望在等待QA迴歸時開始研究新功能,假設我可能必須根據質量檢查結果返回並更改一些內容。與此Git工作流程等效的Perforce工作流程是什麼?貨架?

在Git中,我會在分支bigRefactor上進行重構,基於此構建一個構建,提交到QA,然後從bigRefactor分支postBigRefactorNewFeature並繼續工作。當QA返回所需的更改時,我會切換回bigRefactor,進行必要的更改,提交,然後切換到postBigRefactorNewFeaturegit rebasegit cherry-pick,以將我的更改從bigRefactor轉換爲postBigRefactorNewFeature

在Perforce中,我可以想出的最好方法是將我用於QA的文件擱置在變更列表A上,並帶有描述「大型重構」,而無需在本地恢復,將本地更改(現在複製到書架)移動到帶有說明的新變更表B「發佈大型重構新功能」,然後繼續工作。當QA回來時,我將不得不擱置正在更改列表B中處理的內容,還原,從變更列表A取消擱置,進行必要的更改,然後以某種方式將變更列表B中的文件合併到工作區中。

據我所知,沒有辦法將擱板合併到工作區的當前狀態。我怎樣才能做到這一點?

回答

1

是的,您可以使用您描述的工作流程將貨架用作微型分支。 Perforce採取了「以某種方式合併來自書架的文件」部分的案例。

只要您有足夠的最新服務器版本(我相信此功能是在2011.1版本中添加的,但可能比此更早一點,您可以將更改從機箱合併到工作區的當前狀態)。

您可以'取消擱置到打開的文件';當您取消擱置已經編輯了您當前已打開的文件的書架時,Perforce會安排擱置的更改與打開的文件之間的解決方案。

整個過程與其他解析非常相似,使用非常簡單。

以下是新功能的發佈說明。

#299614 (Bug #38221, #39099) ** 
    Unshelving a file opened for edit over a file already opened 
    for edit in the workspace is now allowed. A resolve record is 
    created when unshelving, and the user must then run 'p4 resolve' 
    to resolve the workspace files with the shelved files. 

最近的其他貨架的功能包括通過分支規範來取消擱置的能力,並直接提交擱置改變不首先unshelving的能力。在最近的版本中,貨架已經發展了很多。

您可能會設置一個小型測試服務器並對此進行實驗,以便您更詳細地瞭解它的工作原理,並在Perforce行爲令人困惑時提出更精確的問題。

也就是說,我自己的經驗是,如果您的工作流程足夠複雜,那麼執行「use-shelves-as-mini-branches」方法會變得令人困惑,因此在某些時候可以簡單地創建分支。當然,Perforce完全支持分支,即使精確的機制與git不同。

+0

感謝您的回答。使用P4再過幾個月,貨架並沒有真正削減它。不幸的是,Perforce分支在某些方面嚴重缺乏 - 例如,沒有辦法在分支上修改兩個版本之間的差異,所以如果我修復了作爲重構的一部分的分支上的錯誤,我不能將* *錯誤修復回到主分支上,因爲Perforce希望合併整個文件,而不僅僅是修復錯誤的差異塊。 – damian 2015-02-23 13:20:00

+0

我一直都在描述櫻桃。我簡單地這樣做:p4集成了//depot/branch/[email protected]=NNN // depot/main/...,其中NNN是我想要集成的特定變更列表。還有更多的例子:更多細節見'p4 help revision'。 – 2015-02-23 14:43:01

+0

「沒有辦法讓櫻桃在分支上的兩個修訂版本之間選擇差異」。這意味着,如果我提交branch/file.cs#1,branch/file.cs#2,branch/file.cs#3,則無法將* 2和#3之間的差異僅帶到main /file.cs,忽略#1和#2之間的差異。 – damian 2015-03-05 13:04:50