2012-04-07 24 views
1

我在閱讀「如何寫代碼」教程,我不禁想知道如何建立一個穩定的工作流程。 Git說,當然,我的代碼會處於源代碼控制之下。現在我想要能夠做到以下幾點:重複發佈與去依賴包

  • 構建我的項目的可執行文件 - 並確保對於給定的Git版本,可執行文件將構建相同。
  • 爲我的項目運行連續構建以在每次提交時激活。我需要確定,無論連續構建在我的工作站上都​​可以重現。
  • 創建我的項目的版本。我需要知道,如果我從我的代碼的同一個git版本再次執行,可以重新創建發行版。

Go爲它提供了「go get」工具 - 但這裏是我感到困惑的地方。應該支持這個的工具,「去獲取」,設置依賴包的源代碼控制回購。這給我以下問題:

  1. 我不能把依賴包放在我自己的源代碼管理下。這意味着如果我和我的合作者,或者我和我的持續構建系統之間有任何環境差異,我們將很難找出這些差異。
  2. 如果網絡關閉,我將無法從頭開始構建我的代碼。或者,換一種說法,我的持續構建系統在每次構建發行版時都必須打開所有這些外部服務器。這可能是脆弱的,甚至不是我願意讓外界知道的東西。
  3. Go定義了一個將包的版本與基本語言的包進行同步的約定,但不能保證包作者會遵循該約定。如果他們不這樣做,一個乾淨的工作空間將會選擇一個可能被破壞的任意釋放。
  4. 如果我依賴的項目被放棄,我可能會失去構建程序的能力。

我可以通過手動導入依賴項目的代碼並且根本不使用「go get」來解決這些問題 - 但是,我避免使用專門爲該用途設計和推廣的語言的工具。

有什麼建議嗎?我錯過了什麼嗎?

回答

1

去得到正好使用分佈式版本控制系統的源碼庫。它將使用回購的本地副本。我會盡力在這裏解決你的每一個問題。

  1. 你一定能夠做出修改,在當地回購,如果你提交他們那裏 想。
  2. go get使用它首先構建的本地存儲庫,除非您告訴它明確更新。
  3. go get不會吹走存儲庫,它仍然存在。而且由於go獲知的所有源代碼都是分佈式源代碼管理系統,所以沒有這個原因,因爲你無法保持項目的一個分支。