Heim >Backend-Entwicklung >Golang >Kann ein Go-Modul im gleichen Pfad wie ein vorheriges Nicht-Modul-Modul veröffentlicht werden?
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.
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
go.mod
和 go.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 )
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
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!
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:
Verwenden Sie -x
选项运行 go get
:
$ go get -x tssgit.reyrey.com/teschste/go-utils/v3
cd
Gehen Sie in das in der Ausgabe angezeigte Verzeichnis. Der Verzeichnispfad sieht so aus:
/home/username/go/pkg/mod/cache/vcs/96f42aa32430149c99ad6625ceafc5b59e047b9e11d6a03f687d59845b53b2d5
Führen Sie in diesem Verzeichnis git ls-remote -q origin
并检查输出。下面的例子是我的机器上不工作时的例子。可以看到head
和v2.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
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!