2014-02-06 86 views
3

我有兩個項目A和B. 我有文件constants.java在A.我想在B.such保留它的鏡像副本,以便當A中constants.java改變它的自動更改B。 是否有任何Perforce.Help鍛鍊事先我出去感謝Perforce鏈接文件

+0

您是使用流還是傳統工作空間?這兩個項目是否使用不同的工作空間?你可以將'constants.java'從一個映射到另一個,儘管我沒有嘗試在同一個工作區中映射兩次文件。對於Streams,對於包含來自其他倉庫或流的只讀副本有很好的支持。 – gaige

+3

爲什麼你想要一個「鏡像副本」?你爲什麼不在兩個項目中引用同一個文件? – raven

回答

1

你不能用Perforce的自動做到這一點,但你可以輕鬆地設置一個cron作業(或構建工作,如果你有一個CI系統,如Jenkins )使用p4 integrate命令在一個任何更改合併到B.

1

可以change-commit trigger,做整合,從A時的提交到B做到這一點,但是,似乎是在一般一個可怕的想法,並且特別因爲Perforce將其稱爲:

當您使用觸發腳本時,請記住,將數據寫入到軟件倉庫的Perforce命令是危險的,應該避免。特別是,在 腳本中,請勿從觸發器 腳本中運行p4提交命令。

爲什麼不只是項目都參考相同的constants.java文件?

0

你可能想要的東西像SVN的svn:externals一樣工作。

我認爲最接近Perforce的是使用符號鏈接,這是一個很不好的替代品。你可以檢查一個符號鏈接到Perforce,它會理解鏈接。如果你有

/root 
    /project-A 
     file1 
    /project-B 
     link-to-file1 

並且你想在project-B上工作,你需要檢查一切。 Perforce並沒有讓你的符號鏈接透明,而只是複製它。它也可能是一個Unix專用功能。

0

在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)放到工件存儲庫中。然後項目從那裏獲得它(通過依賴管理器)。例如參見ivymavengradle

這些替代品肯定是更多的努力,但在一個稍微複雜的軟件項目中,他們肯定是值得的。