Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah modul Go diterbitkan dalam laluan yang sama seperti modul bukan modul sebelumnya?

Bolehkah modul Go diterbitkan dalam laluan yang sama seperti modul bukan modul sebelumnya?

王林
王林ke hadapan
2024-02-10 09:51:09831semak imbas

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

Modul Go ialah ciri penting yang diperkenalkan dalam bahasa Go versi 1.11, yang boleh membantu pembangun mengurus dan bergantung pada perpustakaan pihak ketiga dalam projek dengan lebih baik. Untuk projek sebelumnya yang dibangunkan dalam mod bukan modul, editor PHP Banana memberitahu semua orang bahawa modul dan modul bukan modul boleh diterbitkan dalam laluan yang sama. Kelebihan ini ialah ia boleh memindahkan projek sedia ada dengan mudah dan beransur-ansur ke mod modul, sambil mengekalkan kebolehgunaan dan kestabilan projek. Walau bagaimanapun, perlu diingatkan bahawa apabila menerbitkan modul dan modul bukan modul di bawah laluan yang sama, anda perlu mengikuti beberapa peraturan dan konvensyen untuk memastikan operasi normal projek.

Kandungan soalan

Saya mempunyai perpustakaan kecil yang telah dihoskan dalam repositori bukan modul, tetapi saya kini mahu menukarnya kepada modul go.

Saya berjaya melaksanakan:

go mod init
go mod tidy

go.modgo.sum Fail dibuat tanpa ralat dan perpustakaan masih lulus ujian.

Versi sebelumnya adalah v2.0.0,所以我将版本增加到v3.0.0,并将/v3添加到go.mod di hujung nama modul. Daripada apa yang saya lihat dalam talian, inilah yang diperlukan. Fail go.mod saya kelihatan seperti ini:

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
)

Saya kemudian menerbitkan perpustakaan ke pelayan git dalaman kami dan fikir saya sudah bersedia.

Apabila saya cuba menambah perpustakaan pada projek modul go baharu, saya mendapat mesej berikut:

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

Saya mendapati bahawa jika saya menambah v3.0.0 发布到新路径 (tssgit.reyrey.com/teschste/go-utils2), saya berjaya menambahkannya pada projek baharu saya, walaupun saya menambah versi projek utama sekali lagi.

Adakah saya kehilangan sesuatu yang membolehkan saya meneruskan penerbitan pada laluan yang sama, atau adakah ini hanya sesuatu yang anda tidak boleh lakukan?

Sebarang bantuan akan sangat dihargai!

Penyelesaian

Ya, ini disokong. Subdirektori versi adalah pilihan.

Saya menemui situasi yang menyebabkan ralat yang anda lihat. Ini berlaku apabila cawangan induk tidak dikemas kini (masih menunjuk pada tag v2.0.0)并且新标签 v3.0.0 dan tidak ditolak ke pelayan. Sila semak semula untuk memastikan repositori jauh dikemas kini.

Jika repositori jauh telah dikemas kini tetapi masih tidak berfungsi, anda boleh mengecilkan masalah seperti ini:

  1. Gunakan -x 选项运行 go get:

    $ go get -x tssgit.reyrey.com/teschste/go-utils/v3
  2. cd Pergi ke direktori yang ditunjukkan dalam output. Laluan direktori adalah seperti ini:

    /home/username/go/pkg/mod/cache/vcs/96f42aa32430149c99ad6625ceafc5b59e047b9e11d6a03f687d59845b53b2d5
  3. Dalam direktori ini, jalankan 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

Atas ialah kandungan terperinci Bolehkah modul Go diterbitkan dalam laluan yang sama seperti modul bukan modul sebelumnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam