簡體   English   中英

Go - 我是否為所有項目都有一個工作區,或者每個項目有一個工作區?

[英]Go - Do I have one workspace for all projects, or one workspace per project?

使用Go如何組織項目? 我對工作區部分感到有點困惑。 我已經閱讀了以下內容: https//golang.org/doc/code.html#Workspaces ...這部分讓我失望了:

典型的工作空間包含許多包含許多包和命令的源存儲庫。 大多數Go程序員將他們所有的Go源代碼和依賴項保存在一個工作區中。

這是否意味着我創建的每個項目都是一個單獨的工作區? 例如,如果兩個項目使用相同的包,我將在我的計算機上有兩個該包的副本。

或者,這是否意味着您有一個主工作區,您的項目共享這些包?

有點困惑。

我個人希望每個項目都有不同的GOPATH。 如果您可以使用工具自動化該過程,則可以使用vg來管理項目的不同GOPATH。

整潔的一點是它與大多數shell集成並在你cd它們時自動檢測項目。

您有一個工作區,項目共享包。

它在概述部分

程序員通常會將所有Go代碼保存在一個工作區中。

請注意,這與其他編程環境不同,在這些環境中,每個項目都有一個單獨的工作區,工作區與版本控制存儲庫緊密相關。

編輯 :如果您使用vendoring ,您可以有效地為每個項目獲得一個單獨的工作區。 這使得事情更接近其他編程語言的工作方式。

到目前為止,當我想使用不同版本的Go或者我想將我的私人作品與孩子和我喜歡的代碼分開時,我使用不同的工作區。 此外,如果我想玩一些開源代碼,但想要一個簡單的方法來清理它。

就像是

mk /tmp/tmpgo
cd /tmp/tmpgo
# Copy or edit a setenv file
. setenv  # I use bash

setenv文件看起來像這樣。

export GOROOT=$HOME/go16
export GOPATH=$PWD
export GOBIN=$GOPATH/bin
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
export PS1='\[\033[01;32m\]workspacenamehere\[\033[01;33m\] \W\[\033[00m\] '

這給了我一個go工作區,它有自己的bin,src,pkg子目錄。 我可以得到任何我想要的東西。 如果我願意,我可以刪除整個臨時目錄。 從像github.com這樣的存儲庫中獲取東西的趨勢是從其他貢獻者那里獲得許多包,但是因為它將它們全部放入一個干凈的src子目錄中,所以很容易使用find並查看已被刪除的內容。 后來再次從高清中刪除所有內容變得更加容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM