2009-05-26 108 views
2

我確定這是其他人已經解決的一個常見問題,因此我要求其他開發人員/項目經理在集體智慧中尋求一些幫助。如何構建具有多個依賴項目的VCS

我有一些項目:

  • 應用
  • 的WebApp
  • ServerApp
  • 開發utils的
  • ORM

全部/ utils的依賴於應用程序在ORM上:ORM更改時,需要編譯所有應用程序需要重新編譯並部署。現在我的VCS結構是怎樣的一個混亂的:

  • AppName的
    • 幹線
      • 應用
      • 的WebApp
      • ServerApp
      • 開發utils的(約4個文件夾,現在,但越來越多)
      • ORM
    • RELASE
      • 項目名(可以是應用程序或Web應用程序)version.number
    • 分行
      • ExperimentName_DevName

理想情況下,我想每個應用程序都有一個根文件夾(Application/WebApp/ORM等),每個文件夾都有自己的中繼線/分支/發佈等,以便在邏輯上和物理上將它們分開。我的推理是,因爲在應用程序上完成了大量工作,並且更頻繁地發佈,每個發佈分支具有相同應用的相同副本等。同時檢查Trunk以使其工作始終意味着所有其他項目會出現。

但是,分離將意味着將某些項目從解決方案中剝離出來,並且同時修改任何項目是2-3個IDE之間的跳躍(尤其是對ORM進行更改時)。

我正在考慮這個問題,因爲很快我將一臺CI機器放在一起(準備在一個星期左右的時間裏就這個問題提出問題),並試圖找出一種方法讓這些版本自動創建/部署。通常情況下,只需將應用程序通過腳本複製部署到所有工作站在啓動時從服務器獲取的服務器上,但正如我之前所說的那樣,如果ORM更改/發佈,則所有其他應用程序都應該重新構建和部署。

(今天我打破了我們的網站,3個公用事業,因爲我改變了ORM並與應用程序的更新版本部署它,卻忘了重建/部署的其他應用程序與新的ORM - 哎呀)

+0

您的IDE可以同時加載多組項目嗎?例如,Eclipse有一些工作集,可以幫助解決這個問題。另外,每個模塊的變化頻率如何? – GreenKiwi 2009-05-26 03:52:23

+0

關於CI,您可以在這裏查看/搜索TeamCity,Electric Could和CruiseControl以查看其他人已完成的工作。 – GreenKiwi 2009-05-26 04:00:27

回答

1

將代碼分解成不同的「項目」可能非常困難。我們在每個單獨的「可部署」邊界都做到了這一點。包括其他人共同使用的「平臺」層,作爲單獨的項目。但是這也不是很完美。

我不能強調的一點是,需要有一些形式的連續迴歸/測試,在簽入之後和實際部署任何內容之前運行。此外,一個「釋放」過程,甚至可能涉及一些手動測試,可能會有所幫助,並且肯定會阻止一些雞蛋在臉上的情況。 (更好地釋放它幾天已晚破。)

(對不起,不能直接解決你的問題)

2

把自己在開發者的鞋子。這不應該很難,因爲它聽起來像你是其中之一:-)不是從架構的角度來看你的版本控制佈局,而是從可用性的角度來看。問問你自己:每天我們作爲開發人員用我們的源代碼做什麼是最常見的事情?具體考慮您與VCS系統的交互和項目佈局。你想讓普通的東西容易死腦筋。只要你有一個記錄如何去做的記錄,那麼不太常見的用例就很難得到,所以當(如果不是)!人們忘記了,他們會知道在哪裏可以提醒自己如何。

我已經看到很多VCS佈局嘗試在架構上是「完美」的,但最終會導致從日常使用的角度來看麻煩和麻煩的結束。我並不是說兩者不能相互吻合,而只是從用戶角度思考問題,並讓它成爲您的指導。

從CI的角度來看,我仍然會採取這種方法。即使您的設置變得越來越複雜,無法在您選擇的配置項中進行定義,您只需進行一次設置即可。如果佈局在開發過程中易於使用,則大部分CI設置也應該相對容易。然後,您只需關注需要更多時間的最後一個位。

相關問題