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
  • совершить

Но, конечно, это не очень хороший способ.

Другие вопросы по тегам