Godep обработки пользовательских пакетов
Вот моя проблема. У меня есть go-приложение, которое использует несколько пользовательских пакетов, которые я создал сам. Я не хочу публиковать эти пакеты в git или где-либо еще. Это просто пакеты с определенной функциональностью.
Итак, папка моего проекта выглядит так:
|--src/github/u-mulder
|--/project_name
|--/Godeps
|--/public
|--/vendor
|--main.go
|--Procfile
Я помещаю свои пакеты в vendor
папка:
-/Godeps
-/public
-/vendor
|---/github.com/u-mulder/package_one/package_one.go
|---/github.com/u-mulder/package_two/package_two.go
-main.go
-Procfile
Ладно по моему main.go
Я успешно импортирую эти пакеты:
import (
"database/sql"
"fmt"
"github.com/u-mulder/package_one"
"github.com/u-mulder/package_two"
// more packages here
)
И все работает отлично.
Теперь я хочу подготовить свой проект к развертыванию на героку с помощью godep
, Итак, в корневой папке моего проекта я запускаю
> godep save ./...
И тут возникает моя проблема - так как мои пакеты уже находятся в vendor
папка, я получаю сообщение об ошибке:
godep: пакет (github.com/u-mulder/package_one) не найден
Конечно, я могу создать проект для каждого из моих пакетов. Тогда структура src
будет выглядеть так:
|--src/github/u-mulder
|--/package_one
|-package_one.go
|--/package_two
|-package_two.go
|--/project_name
|--/Godeps
|--/public
|--/vendor
|--main.go
|--Procfile
Тогда вышеупомянутая проблема исчезла, но появляется вторая:
godep: ошибка при проверке
"$GOPATH/src/github.com/u-mulder/package_one"
: каталог"$GOPATH/src/github.com/u-mulder/package_one"
не использует известную систему контроля версий
Так что, конечно, я могу создать .git
репозиторий в каждом пакете проекта (и, возможно, эта проблема исчезнет), но я не хочу, это только локальные пакеты только для моего использования.
Итак, вопрос - где разместить мои пользовательские (или, скажем, локальные) пакеты так godep
можете найти их и не хотите, чтобы они были "настоящими" пакетами?
Нечто подобное я нашел здесь, но это не про vendor
папка.
1 ответ
Благодаря комментариям @JimB я узнал следующее:
самое очевидное и простое решение просто
сохраняйте свои зависимости в GOPATH с контролем версий и просто позволяйте godep обрабатывать их все (@JimB)
Так что да, это означает добавление пакетов в git и все такое.
Если вы не хотите / не можете этого сделать, порядок действий может быть следующим:
- Код
- Тестовое задание
- Удалить ваши локальные зависимости (пакеты) из
vendor
- Бежать
godep
обновить другие зависимости (например,httprouter
,libpq
, так далее) - Вручную добавьте свои локальные зависимости обратно в
vendor
- совершить
Но, конечно, это не очень хороший способ.