2013-06-13 41 views
0

我是Go的新手,我正在努力尋找處理Git存儲庫的最佳方法。處理Go Git存儲庫及其非代碼資源

在這一刻我使用Go的官方建議的目錄結構,但我認爲它有許多陷阱。

這件事情就像

$GOPATH 
    bin 
    non-important-stuff 
    pkg 
    non-important-stuff 
    src 
    github.com 
     username 
     reponame 

的情況是,我有許多非代碼資源,如默認的設置文件,HTML模板和圖片...但它似乎有點怪我將它放在「src/github.com/username/reponame」目錄(因爲第一個「src」部分)。

這個問題最常見的解決方案是什麼?

我現在面臨的另一個問題是,我不知道最常見的「make」工具是用外部資源(如默認設置文件或html)構建整個項目(僅限「go build/install」命令照顧源代碼文件)。如何在可執行文件「安裝」時關注相對路徑?

聲明:我已閱讀此主題:How to access resource files after the 'go' tool installed the executable?,但我沒有看到可靠的解決方案。我的可執行文件是一個服務器,並且它不是嵌入設置文件的選項,並且每次我想重新配置服務器時都不會重新編譯(並且它不是通過執行參數傳遞所有設置參數的選項,因爲設置文件非常複雜) 。

回答

1

我假設你正在談論web開發。

正如您正確指出的那樣,目錄結構僅用於代碼,而go工具套件只關注構建二進制文件並將其放入傳統位置(pkgbin)。

你想要的是一個二進制+資源文件的完整部署過程。

您應該推出自己的部署過程,或者使用現有的框架。

自制程序的草圖:

  • 把所有的資源在特定目錄下的項目(如resources/
  • 使用git archive resources/捆綁文件
  • 將文件複製旁邊的可執行
  • 選擇一種方式來調整本地參數(db服務器,db名稱等)。
  • 選擇一種方法來讓你的服務器重新加載資源(重新啓動服務器/系統重新讀取資源/檢查修改日期/ ...)

如果你正在尋找一個現有的web框架:

Revel是一個選項,它需要照顧其中有很多點,其中包括開發過程中的熱重新編譯以及deployment procedure