перейти на разветвленное репозиторий github, возникла непредвиденная ошибка пути к модулю

В настоящее время я работаю над AWS Cloudformation, который использует это репо https://github.com/awslabs/goformation. Поскольку я сделал некоторые настройки, я сделал вилку https://github.com/vrealzhou/goformation.

Теперь в моем другом проекте (с использованием модуля go) я пытаюсь использовать go get github.com/vrealzhou/[email protected], и у меня есть эта ошибка:

go: github.com/vrealzhou/[email protected]: parsing go.mod: unexpected module path "github.com/awslabs/goformation"
go: error loading module requirements

Кто-нибудь знает причину и как решить эту проблему? Спасибо


person vreal    schedule 14.05.2019    source источник
comment
угадайте, вы меняете только основную ветку, а не тег v2.3.1?   -  person zzn    schedule 14.05.2019
comment
Вилка github - это новый пакет с новым путем импорта и на 100% не связанный с оригиналом. Вы должны переписать весь импорт в вашей вилке.   -  person Volker    schedule 14.05.2019
comment
@zzn Мое изменение было в ветке add_features и помечено как v2.3.1. Вы можете проверить мой источник.   -  person vreal    schedule 15.05.2019
comment
@Volker Я уже сделал то, что вы сказали в мастере, с тегом v2.3.2, но все еще получаю аналогичную ошибку, когда запускаю go get github.com/vrealzhou/[email protected]   -  person vreal    schedule 15.05.2019
comment
Вы должны понимать, что вы в основном не можете форкнуть (в смысле Github) репозиторий Go. Что вы можете сделать, так это создать новый пакет, и все в нем должно использовать новый путь импорта пакета, начиная с go.mod и всех операций импорта. Вероятно, вам не следует настраивать гоформацию, а предоставить оболочку.   -  person Volker    schedule 15.05.2019
comment
Вы можете использовать replace в своем go.mod, чтобы делать именно то, что вы ищете - использовать вилку без обновления импорта или чего-то еще. Я отправил ответ с обновлениями, необходимыми для go.mod.   -  person Tyler Bui-Palsulich    schedule 29.05.2019


Ответы (1)


Вы можете использовать replace в своем go.mod, чтобы использовать форк вместо исходной версии. Таким образом, вы можете вносить любые необходимые изменения в код без необходимости обновлять путь к модулю или пути импорта.

Чтобы быть конкретным, в этом случае вы можете сделать следующее в своем go.mod (я проверил это, разветвив репо, сделав небольшое изменение и подтвердив, что оно появилось):

require github.com/awslabs/goformation v1.4.1

replace github.com/awslabs/goformation => github.com/vrealzhou/goformation master

При первой сборке или тестировании master будет заменен последней псевдо-версией для вашей вилки, чтобы гарантировать, что вы получите повторяемые сборки. Для замены replace требуется конкретная версия.

person Tyler Bui-Palsulich    schedule 29.05.2019
comment
Я считаю, что здесь отсутствует строка module в верхней части примера. В этом случае будет работать любое имя модуля, так как оно не опубликовано. - person David; 15.01.2021