Go, go get, go install, lokale Pakete und Versionskontrolle

Lesezeit: 2 Minuten

Ich habe Schwierigkeiten, den Arbeitsablauf zum Erstellen eines Go-Projekts mit lokalen Paketen zu verstehen.

Angenommen, ich erstelle ein neues Projekt mit git für die Versionskontrolle, das eine main.go-Datei und eine tools.go-Datei enthält, die sich im Paket utils befinden. Also habe ich eine Verzeichnisstruktur wie diese:

/myproject/
   main.go
   utils/
     tools.go

main.go sieht so aus:

package main
import "./utils"
func main() {
    utils.DoSomthing()
}

und tools.go sieht so aus:

package utils;
func DoSomething() {
}

Alles funktioniert gut lokal, mit geh bauen und geh Rennen. Aber dies wird auf Github gehostet, und ich möchte, dass andere es verwenden können geh holen Befehl, um es zu installieren. Daher muss der lokale Paketimport geändert werden, um das Format “github.com/user/project/utils” zu verwenden, was funktioniert, außer dass ich jetzt zwei Kopien des Quellcodes habe und das eigentliche Problem darin besteht, dass die Kopie mit dem Git-Verlauf hat einen Import, der die heruntergeladene Kopie verwendet. Wenn ich also an der Kopie mit dem Git-Verlauf arbeite, bleiben alle Änderungen an tools.go unbemerkt, da es die heruntergeladene Kopie verwendet.

Ich frage mich also, ob jemand die richtige Art der Verwendung erklären kann geh holenVersionskontrolle und Paketimporte innerhalb desselben Projekts.

  • Ich habe das in letzter Zeit selbst in den Griff bekommen. Angefangen habe ich damit, einen einzigen GOPATH zu haben und meine Projekte darin symbolisch zu verlinken. Auf diese Weise kann ich leicht bauen, aber die eigentlichen Projekte in ihren eigenen Repos behalten. Es fühlt sich bisher nach einem ziemlich sauberen Ansatz an.

    – jdi

    5. Mai 2012 um 5:53 Uhr

  • Der Github-Pfad ist in der Regel lang und ich bin faul, also habe ich meinem bashrc einen Alias ​​hinzugefügt: alias g="cd /home/me/goroot/src/github.com/me/". Jetzt kann ich mit einem einfachen g-Befehl auf meine Projekte zugreifen.

    – Sebastian Bartos

    6. Januar 2014 um 15:57 Uhr

  • Wie verfolgen Sie die externen Abhängigkeiten, die Ihre Pakete verwenden?

    – mohi666

    19. November 2014 um 1:47 Uhr

  • Kann dies angewendet werden, wenn ich einen CI-Server verwende? Ich gehe davon aus, dass der CI bei jedem Stoß versuchen würde go get das lokale Paket aus der master -Zweig, der möglicherweise nicht dieselbe zu testende Version ist. Irgendwelche Hinweise zur Verwendung eines CI mit go ? @tux21b

    – George Ananda Eman

    18. November 2017 um 9:45 Uhr

  • @tux21b kann ich dir noch eine Frage stellen, wie man das Projekt auf einem anderen Repo hostet? stackoverflow.com/questions/51413252/…

    – rellociert Holz

    19. Juli 2018 um 1:56 Uhr

  • Ich hatte ein ähnliches Problem und habe Ihre Richtlinien hier befolgt, aber ich erhalte jetzt einen Fehler “Importschleife”. Ich habe meine Quelle in \godev\src\github.com\user\project und das Projekt importiert “github.com/user/project”.

    – Alec

    18. April 2012 um 5:00 Uhr


  • Ihr Projekt sollte nicht versuchen, sich selbst zu importieren. Wenn Sie sich immer noch an den obigen Beispielcode halten, sollte Ihr Hauptprogramm “github.com/user/project/utils” importieren.

    – Sonja

    18. April 2012 um 18:55 Uhr

  • Dies! Oder Sonias Antwort.

    – Benutzer7610

    21. November 2017 um 14:00 Uhr

1307620cookie-checkGo, go get, go install, lokale Pakete und Versionskontrolle

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy