2014-02-24 86 views
3

是否有可能只允許合併到一個分支並且不能在perforce中直接簽入?只允許在perforce中集成到一個分支

我想要做的事情非常簡單,如果我們有兩個分支,Dev和Release,我希望允許開發人員直接檢查Dev的變化,但只合併到Dev的Release,因此避免直接在發佈分支上進行更改。

回答

0

絕對。

您只需編輯權限表以限制對發佈流的訪問。

我總是會建議你通過組來管理權限,而不是單獨管理權限......它只是一個惡夢,否則就會維持。因此,我們假設您有一個名爲的開發人員,並且您希望他們寫入Dev流並能夠讀取發佈流。

您的表格條目看起來像這樣。

write group Developer * //Depot/Dev_Stream/... 
read group Developer * //Depot/Rel_Stream/... 

現在,只有對發佈流的讀取訪問權限,他們將無法將代碼合併或複製到發佈流/分支。他們將能夠將代碼合併/複製到開發流。

+0

謝謝您的回答。我們沒有發佈管理器,因此開發人員可以信任,並且需要將代碼自行合併到發佈中。我的問題是可以允許他們檢查MERGE修改爲版本,但不能直接在該分支上進行文件更改。我不完全確定我所問的是否可能,因爲它們可能沒有區別,但它可以避免發佈分支上的意外更改。 – Blueberry

+1

好吧,你可以做兩件事情之一(至少可以想到,可能有其他選擇)編寫一個「表單」觸發器來限制提交更改(非合併)到發佈流,這將需要一個腳本(我不善於編寫腳本),或者您可以簡單地授予個人在合併需要完成時寫入對發佈流的訪問權限......除非持續合併,否則我會建議這樣做。 – James

1

我之前編寫了一個Perforce服務器觸發器來解決這個特殊的問題。你可以找到它的位置:https://swarm.workshop.perforce.com/files/guest/matt_attaway/bash-scripts/noedits.sh

在你的情況下,觸發項將是:

no_edits change-submit //Depot/Rel_Stream/... "bash noedits.sh %clienthost% %client% %changelist% %serverport%" 
+0

聽起來像要走的路。不幸的是,我們在Windows環境中,但我會翻譯你的腳本併發回。謝謝。 – Blueberry