Auf der Rückseite von https://github.com/golang/go/issues/15201#issuecomment -208602586
Wir schlagen ein Mittel vor, mit dem cmd/go und seine Freunde reguläre Dateien nutzen, um ein Symlink-ähnliches Verhalten innerhalb eines Repositorys während der GOPATH-Paketauflösung auf plattformunabhängige Weise zu simulieren
https://docs.google.com/document/d/1n5y3mZPs_4PjI80a0vZEaHLe7r9PeiiE9xsIrQFT8Is/edit
Vielen Dank an @kardianos für das Teilen seiner ersten Gedanken offline
_Der Name "Symlink" wird an und für sich zwangsläufig zu einer guten Diskussion führen: Ich hoffe, wir können Namen/Benennung getrennt vom Kern des Vorschlags diskutieren_
Ein paar Anmerkungen/Fragen:
@kostya-sch
Der Begriff "Repository" ist nicht definiert
Die erste Fußnote gibt Details - es ist die gleiche Definition wie hier angenommen. Aber ich stimme zu, es bleibt immer noch die Frage, ob "Repository" irgendwo formal definiert ist?
Was ist, wenn der Quellcode in GOPATH nicht von einer VSC oder von Subversion stammt, die das Auschecken eines Verzeichnisses unterstützt?
Offene Frage - Ich gebe zu, dass bisher nur Code in Betracht gezogen wurde, der Teil eines "Repositorys" ist. Ich habe unten einen Abschnitt "Offene Fragen" hinzugefügt, der auf diese Frage verweist.
Wenn ein Repository mehrere öffentliche Binärdateien enthält, ist es nicht erforderlich, Abhängigkeiten mehrmals zu kopieren. Herstellerabhängigkeiten können unter cmd/vendor abgelegt werden
Tatsächlich ist dies ein Ansatz, um bereitgestellten Code zwischen Binärdateien zu teilen. Aber der "Symlink"-Ansatz hilft, den Ansatz zu erleichtern, diesen "Anbieter" mit dem Bibliothekscode zu teilen (siehe nächster Punkt).
Soweit ich das beurteilen kann, löst dieser Vorschlag das Problem "Bibliothek und Programm im selben Repository" nicht.
Dieser Vorschlag allein tut es nicht, nein. Aber das im Abschnitt „Motivierendes Beispiel“ verlinkte Repository beschreibt, wie dieses Problem gelöst werden kann, indem eine Kombination aus „Symlinks“ und GOPATH-Ergänzung verwendet wird.
Symlinks sind zu problematisch. Es scheint unklug, sie zuzulassen.