我有兩個項目A和B. 我有文件constants.java在A.我想在B.such保留它的鏡像副本,以便當A中constants.java改變它的自動更改B。 是否有任何Perforce.Help鍛鍊事先我出去感謝Perforce鏈接文件
回答
你不能用Perforce的自動做到這一點,但你可以輕鬆地設置一個cron作業(或構建工作,如果你有一個CI系統,如Jenkins )使用p4 integrate命令在一個任何更改合併到B.
您可以有change-commit trigger,做整合,從A時的提交到B做到這一點,但是,似乎是在一般一個可怕的想法,並且特別因爲Perforce將其稱爲:
當您使用觸發腳本時,請記住,將數據寫入到軟件倉庫的Perforce命令是危險的,應該避免。特別是,在 腳本中,請勿從觸發器 腳本中運行p4提交命令。
爲什麼不只是項目都參考相同的constants.java
文件?
你可能想要的東西像SVN的svn:externals
一樣工作。
我認爲最接近Perforce的是使用符號鏈接,這是一個很不好的替代品。你可以檢查一個符號鏈接到Perforce,它會理解鏈接。如果你有
/root
/project-A
file1
/project-B
link-to-file1
並且你想在project-B上工作,你需要檢查一切。 Perforce並沒有讓你的符號鏈接透明,而只是複製它。它也可能是一個Unix專用功能。
在perforce中,您可以通過clientview來定義工作空間(又名客戶端)的設置。 每個工作區/客戶端都有一個從軟件倉庫路徑到工作區路徑的映射列表。 您可以致電p4 client
查看/編輯它。 您的具體情況,你可以簡單地添加一個映射到與此類似項目-B客戶:
//depot/project-a/files/constant.java //project-b-client/files/constant.java
這很簡單,你有你所要求的東西。
但是:
在實踐中,如果幾個人在項目和項目-B這導致合作的幾個問題:
- 在適當的工作環境,每個人都應該有不同的工作區/客戶。因此每個人都需要做這個改變。這只是一個時間問題,直到有人忘記它或做錯了。
- 開發人員必須使用此功能,但對perforce不太熟悉的人,如果他們在其中一個項目中更改「constant.java」,則不會考慮對其他項目的影響。
- 想象你想要一個項目的代碼凍結(例如用於測試目的)。如果其他項目仍然想要改變「constant.java」會怎麼樣?
這種方法可能有更多的麻煩。 我寧願推薦將文件從a集成到b,反之亦然,或者(在更復雜的環境中)將文件(可能它不僅是源文件,而且還是jar或更大的lib)放到工件存儲庫中。然後項目從那裏獲得它(通過依賴管理器)。例如參見ivy或maven或gradle。
這些替代品肯定是更多的努力,但在一個稍微複雜的軟件項目中,他們肯定是值得的。
- 1. Perforce - 查詢Mercurial推送到Perforce存儲庫的鏈接
- 2. Perforce文件「.perforce」的用途是什麼?
- 3. perforce連接
- 4. Perforce:保持Perforce不改變文本文件格式
- 5. 從Perforce獲取文件
- 6. 鏈接到文檔附件的鏈接
- 7. 符號鏈接鏈接文件夾
- 8. 鏈接.obj文件與鏈接
- 9. 鏈接源文件
- 10. 鏈接文件/頭
- 11. 鏈接頭文件
- 12. 鏈接HTML文件
- 13. 鏈接C++文件
- 14. Flash文件鏈接
- 15. 鏈接對象的文件和鏈接包含這些文件
- 16. 隱藏符號鏈接文件夾到硬鏈接文件夾
- 17. Perforce從工作區中刪除文件並反映Perforce中的文件
- 18. perforce連接兩個不同文件的歷史
- 19. 鏈接PDF文件(文件)的條目
- 20. 上傳文件的文件夾鏈接
- 21. 將ActionScript文件鏈接到Flash文件?
- 22. 從CSS文件鏈接到CSS文件
- 23. 虛擬文件或'鏈接'文件
- 24. 在PHP文件中鏈接javaScript文件
- 25. 從文件夾取消鏈接文件
- 26. 打開文件「文件:\\」使用鏈接
- 27. 鏈接到/文件中的html文件
- 28. CakePHP鏈接css文件和javascript文件
- 29. 鏈接html文件和js文件
- 30. Matlab鏈接兩個文件
您是使用流還是傳統工作空間?這兩個項目是否使用不同的工作空間?你可以將'constants.java'從一個映射到另一個,儘管我沒有嘗試在同一個工作區中映射兩次文件。對於Streams,對於包含來自其他倉庫或流的只讀副本有很好的支持。 – gaige
爲什麼你想要一個「鏡像副本」?你爲什麼不在兩個項目中引用同一個文件? – raven