изменения проецировании структуры тоже:
src/
foo/
bar/
v1/ (go code in package bar)
x.go
v2/
x.go
quux/
v1/ (go code in package main)
y.go
это единственно возможный способ справиться с другой версией LIBS.
с этим вы также решаете описанную проблему jnml, теперь каждая библиотека будет иметь свои собственные зависимости и версии для других библиотек.
обновление из-за комментариев:
согласно рабочей документации описано здесь:
http://golang.org/doc/code.html#Workspaces
ваша структура будет lõoke как
src/
foo/
bar/
v1/ (go code in package bar)
x.go
v2/
x.go
quux/
v1/ (go code in package main)
y.go
meier/
v1/ (go code in package main)
w.go
v2/ (go code in package main)
w.go
теперь в вашем бар Lib (х. go) вам нужны функции из lib * quux (y.go)
импортировать это напишет:
import "foo/quux/v1/"
так же, как примечание вы можете также сделать версию перед пакетом в вашей структуре, так вместо обув/quux/v1 Ваша структура может выглядеть следующим образом/Foo/v1/quux, то вам не нужно имя импорт.
Теперь Lib quux использует Lib Meier в версии 1
так импорт будет:
import "foo/meier/v1"
и в отношении к jnml, теперь вы импровизировать бар также нуждается в Lib Meier но в версии 2
поэтому импорт будет выглядеть так:
import "foo/meier/v2"
теперь, когда вы звоните: бар -> quux -> Meier
вы увидите, что вы не можете назначить/передать возвращаемое значение в бар к чему-то из Meier
, потому что: meier/v1! = Meier/v2
и это не удастся уже во время компиляции.
, если вам нужно работать с результатом от quux который исходит от Meier v1 вам нужно импортировать Meier/v1 в бар
Re: _ "Я хочу сделать это укажите тег в строке импорта, чтобы go get./... на моем дереве получена правильная версия схемы. "_ Это вообще не возможно. И это не характерно для Go. – zzzz
Итак, как я могу считать этот случай? (скажем, это автоматизированная система сборки) Есть ли способ обхода? – 3XX0
Если это невозможно в общем случае, тогда нет способа справиться с ним в общем случае. Рассмотрим a1-> b1-> d1 и a1-> c1-> d2. Какая версия d должна пройти проверку? Вы не можете одновременно иметь две (или более) разные версии репо в одном и том же месте. Но местоположение зависит исключительно от пути импорта, а не от любой версии. – zzzz