首頁  >  文章  >  後端開發  >  Go 模組可以與先前的非模組模組發佈在同一路徑嗎?

Go 模組可以與先前的非模組模組發佈在同一路徑嗎?

王林
王林轉載
2024-02-10 09:51:09834瀏覽

Go 模块可以与之前的非模块模块发布在同一路径吗?

Go模組是Go語言1.11版本引入的重要特性,它可以幫助開發者更好地管理和依賴專案中的第三方程式庫。對於先前的非模組模式下開發的項目,php小編香蕉告訴大家,可以將模組與非模組模組發佈在同一路徑下。這樣做的好處是可以方便地將現有的專案逐步遷移到模組模式下,同時也可以保持專案的可用性和穩定性。不過要注意的是,在同一路徑下發布模組和非模組模組時,需要遵循一些規則和約定,以確保專案的正常運作。

問題內容

我有一個小型庫,一直託管在非模組儲存庫中,但我現在想將其轉換為 go 模組。

我成功執行了:

go mod init
go mod tidy

go.modgo.sum 檔案的建立沒有錯誤,而且該程式庫仍然通過了測試。

之前的版本是v2.0.0,所以我將版本增加到v3.0.0,並將/v3加入go. mod中的模組名稱末尾。從我在網路上看到的情況來看,這就是所需要的。 我的 go.mod 檔案如下所示:

module tssgit.reyrey.com/teschste/go-utils/v3

go 1.19

require (
    github.com/lib/pq v1.10.9
    golang.org/x/text v0.9.0
)

然後我將庫發佈到我們的內部 git 伺服器,並認為我已經準備好了。

當我嘗試將庫添加到新的 go 模組專案時,我收到以下資訊:

Installing: tssgit.reyrey.com/teschste/go-utils/v3
Installing dependency: tssgit.reyrey.com/teschste/go-utils/v3
go: module tssgit.reyrey.com/teschste/go-utils@upgrade found (v2.0.0+incompatible), but does not contain package tssgit.reyrey.com/teschste/go-utils/v3
Failed to add dependencies: exit status 1

我發現,如果我將v3.0.0 發佈到新路徑(tssgit.reyrey.com/teschste/go-utils2),我就能夠成功地將其添加到我的新專案中,即使我再次增加了主專案版本。

我是否缺少一些可以讓我繼續以相同路徑發布的東西,或者這只是你不能做的事情?

如有任何幫助,我們將不勝感激!

解決方法

是的,這是支援的。版本子目錄是可選的。

我發現一種​​情況會導致您看到的錯誤。當主分支未更新(仍指向標籤 v2.0.0)且新標籤 v3.0.0 未推送到伺服器時,就會發生這種情況。請仔細檢查以確保遠端儲存庫已更新。

如果遠端儲存庫已更新但仍無法正常運作,您可以這樣縮小問題範圍:

  1. 使用 -x 選項執行 go get

    $ go get -x tssgit.reyrey.com/teschste/go-utils/v3
  2. cd 進入輸出中顯示的目錄。目錄路徑是這樣的:

    /home/username/go/pkg/mod/cache/vcs/96f42aa32430149c99ad6625ceafc5b59e047b9e11d6a03f687d59845b53b2d5
  3. 在此目錄中,執行 git ls-remote -q origin 並檢查輸出。下面的例子是我的機器上不工作時的例子。可以看到headv2.0.0都指向同一個commit id,且沒有v3.0.0

    $ git ls-remote -q origin
    5ac4c172806e80461086ea9feb485cec0b6a27f0    HEAD
    5ac4c172806e80461086ea9feb485cec0b6a27f0    refs/heads/main
    bbdc583c0b83489db1a30fa6ca8559ffa295a74d    refs/heads/other-branch
    5ac4c172806e80461086ea9feb485cec0b6a27f0    refs/tags/v2.0.0

以上是Go 模組可以與先前的非模組模組發佈在同一路徑嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除