Kann ein Go-Modul im gleichen Pfad wie ein vorheriges Nicht-Modul-Modul veröffentlicht werden?

王林
Freigeben: 2024-02-10 09:51:09
nach vorne
834 Leute haben es durchsucht

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

Das Go-Modul ist eine wichtige Funktion, die in der Go-Sprachversion 1.11 eingeführt wurde und Entwicklern helfen kann, Bibliotheken von Drittanbietern in Projekten besser zu verwalten und sich darauf zu verlassen. Für die vorherigen Projekte, die im Nicht-Modul-Modus entwickelt wurden, teilt der PHP-Editor Banana allen mit, dass Module und Nicht-Modul-Module im selben Pfad veröffentlicht werden können. Dies hat den Vorteil, dass bestehende Projekte einfach und schrittweise in den Modulmodus migriert werden können und gleichzeitig die Benutzerfreundlichkeit und Stabilität des Projekts erhalten bleibt. Es ist jedoch zu beachten, dass Sie beim Veröffentlichen von Modulen und Nicht-Modulmodulen unter demselben Pfad einige Regeln und Konventionen befolgen müssen, um den normalen Betrieb des Projekts sicherzustellen.

Frageninhalt

Ich habe eine kleine Bibliothek, die in einem Nicht-Modul-Repository gehostet wurde, aber ich möchte sie jetzt in ein Go-Modul konvertieren.

Ich habe Folgendes erfolgreich ausgeführt:

go mod init
go mod tidy
Nach dem Login kopieren

go.modgo.sum Die Datei wird fehlerfrei erstellt und die Bibliothek besteht die Tests trotzdem.

Vorherige Versionen standen v2.0.0,所以我将版本增加到v3.0.0,并将/v3添加到go.mod am Ende des Modulnamens. Nach dem, was ich online gesehen habe, ist dies das, was benötigt wird. Meine go.mod-Datei sieht so aus:

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
)
Nach dem Login kopieren

Ich habe die Bibliothek dann auf unserem internen Git-Server veröffentlicht und dachte, ich wäre bereit.

Wenn ich versuche, eine Bibliothek zu einem neuen Go-Modulprojekt hinzuzufügen, erhalte ich die folgende Meldung:

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
Nach dem Login kopieren

Ich habe festgestellt, dass ich es erfolgreich zu meinem neuen Projekt hinzufügen konnte, wenn ich v3.0.0 发布到新路径 (tssgit.reyrey.com/teschste/go-utils2 hinzufügte, selbst wenn ich die Hauptprojektversion erneut erhöhte.

Übersehe ich etwas, das es mir ermöglichen würde, auf dem gleichen Weg weiter zu veröffentlichen, oder ist das einfach etwas, was Sie nicht tun können?

Jede Hilfe wäre sehr dankbar!

Workaround

Ja, dies wird unterstützt. Das Versionsunterverzeichnis ist optional.

Ich habe eine Situation gefunden, die den angezeigten Fehler verursacht. Dies geschieht, wenn der Hauptzweig nicht aktualisiert wird (immer noch auf das Tag verweist v2.0.0)并且新标签 v3.0.0 und nicht an den Server gepusht wird. Bitte überprüfen Sie noch einmal, ob das Remote-Repository aktualisiert ist.

Wenn das Remote-Repository aktualisiert wurde, aber immer noch nicht funktioniert, können Sie das Problem wie folgt eingrenzen:

  1. Verwenden Sie -x 选项运行 go get:

    $ go get -x tssgit.reyrey.com/teschste/go-utils/v3
    Nach dem Login kopieren
  2. cd Gehen Sie in das in der Ausgabe angezeigte Verzeichnis. Der Verzeichnispfad sieht so aus:

    /home/username/go/pkg/mod/cache/vcs/96f42aa32430149c99ad6625ceafc5b59e047b9e11d6a03f687d59845b53b2d5
    Nach dem Login kopieren
  3. Führen Sie in diesem Verzeichnis git ls-remote -q origin 并检查输出。下面的例子是我的机器上不工作时的例子。可以看到headv2.0.0都指向同一个commit id,并且没有v3.0.0 aus.

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

    Das obige ist der detaillierte Inhalt vonKann ein Go-Modul im gleichen Pfad wie ein vorheriges Nicht-Modul-Modul veröffentlicht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!