3 回答

TA貢獻1843條經驗 獲得超7個贊
這是一個常見的問題。“基于位置”的參考系統因此它在“正確”路徑中搜索這些文件。Idk if go modules 解決了這個問題,但至少在不使用 go modules 時你必須解決它。
你可以解決它
解決方案 1
下載您通過以下方式分叉的原始存儲庫:
將您的分叉添加為遠程
git remote 添加 awesome-you-fork http://github.com/awesome-you/tool
您必須在原始下載的 repo 的文件夾中進行更改,并向/從您的叉子推送和拉取。
git pull --rebase awesome-you-fork
git push awesome-you-fork
方案二
解決 go get:您創建原始存儲庫的路徑,但將您自己的分支克隆到其中。這樣你就可以推拉你的叉子。這可能是更好的解決方案
cd $GOPATH
mkdir -p {src,bin,pkg}
mkdir -p src/github.com/awesome-org/
cd src/github.com/awesome-org/
git clone [email protected]:awesome-you/tool.git # OR: git clone https://github.com/awesome-you/tool.git
cd tool/
go get ./...
這些解決方案是在這里找到的:http://code.openark.org/blog/development/forking-golang-repositories-on-github-and-managing-the-import-path

TA貢獻1818條經驗 獲得超7個贊
一個 go 包的分叉副本的問題是當包實際上是一個 repo 中的多個 go 包時,導入語句引用原始基礎 repo,即:github.com/orig/repo
。
對于只有一個 go 包的 repos 來說這不是問題,因為它從不引用自己。
但是如果它有多個,即:包github.com/orig/repo/A
導入github.com/orig/repo/B
然后你把它分叉為:github.com/fork/repo
然后當 go 編譯器看到import "github.com/orig/repo/B"
源代碼時,它會去下載原始版本而不是你的 fork。
幸運的是,go modules解決了這個問題。
go.mod
基本上,在你的分叉回購的頂部?創建一個并添加:module github.com/orig/repo
然后,go 編譯器將假定您是“orig/repo”,而不管您實際上是從哪里檢出的。
所以,當orig/repo/A
imports時orig/repo/B
,它會在本地查找。
如果您需要覆蓋主分支倉庫之外的其他導入,您還可以使用replace強制依賴項來自另一個地方

TA貢獻1828條經驗 獲得超3個贊
解決了
起初我以為是 FORK 的問題(這是 Go 語言 repo 的 fork 的常見問題),但事實證明,這是 Repo 特定的問題。必須重新安裝其中一個依賴庫才能使分叉的回購工作,這在原始回購文檔中沒有提到。問題不是通用的,而是特定于 repo 我按照上面鏈接中的以下步驟解決了對 go-bindata 的依賴
go?get?github.com/jteeuwen/go-bindata cd?$GOPATH/src/github.com/jteeuwen/go-bindata/go-bindata go?build
- 3 回答
- 0 關注
- 157 瀏覽
添加回答
舉報