2015-02-24 77 views
7

我已經閱讀了大量的文章和關於導入第三方軟件包的問題,​​這些軟件看起來很簡單,但我不明白的是,我沒有看到任何對版本控制的引用。在Dartlang中有一個pubspec文件,它定義了你的軟件包,包括它的版本和它的依賴關係,包括他們需要的版本。如果我做了go get github.com/gorilla/sessions並寫了我的應用程序,然後6個月後,我必須清除我的目錄並重新獲得所有內容,在這段時間內該軟件包已更新並與我的代碼使用舊版本時向後兼容?如何在golang中更新軟件包?

回答

9

正式版,從GO FAQ

如果您使用的是外部提供的包,並擔心它可能會以意想不到的方式發生變化,最簡單的辦法是將它複製到你的本地倉庫。 (這是Google內部採取的方法。)將該副本存儲在新的導入路徑下,將其標識爲本地副本。

有許多替代這種方法,主要是基於聲明您使用的這些項目的確切版本。

例如,見 「Dead Simple Dependencies in Go -- Keep it simple and keep your sanity.」(基於emil2k/vend

對圍棋依賴管理的主要不同選項在上市:

Go Package Management -- A summary of dependency management in Go
(及其聯繫人GOPM mailing list

2015年7月更新:

更新2017年第四季度:如前所述belowgo dep是釘住依賴版本的官方工具(即使該釘扎的方法也不是沒有批評:詳見「The cargo cult of versioning」)。
當Go 1.10開發開始時,它應該被合併到工具鏈中,according to its roadmap

+0

+1包括良好的鏈接。我喜歡使用gopkg.in(在上一個鏈接中提到),因爲它似乎是一種理智的方式來聲明「我想要什麼版本?」,因爲「我想要什麼提交哈希?」對於使用你寫的東西的新開發者來說有點神祕。 – pswaminathan 2015-02-25 05:40:26

1

我使用dep作爲golang項目的依賴項管理工具。請使用以下鏈接dep tool獲取更多信息。

dep是Go的原型依賴管理工具。它需要Go 1.8或更新來編譯。

dep是官方的實驗,但還沒有官方的工具。

現狀: 2017年11月

dep是生產安全使用。

相關問題