Подтвердить что ты не робот

Должен ли я совершать Godeps/_workspace или достаточно Godeps.json?

Я пишу проект в Go для развертывания на heroku, управляя зависимостями с godep.

Когда я godep save, я получаю файл Godeps.json, в котором перечислены мои зависимости с версиями и каталог _workspace/ с источником для всех зависимостей, скопированных в. Я бы предпочел не совершать _workspace, весь этот код уже на github в другом месте. Кажется, что Godeps.json имеет всю информацию, которая нам нужна для go get зависимостей, зависящих от версии, в момент времени heroku buildpack.

Несколько источников рекомендуют использовать полный каталог Godeps/, но другие предположим, что может не понадобиться.

Документы godep не очень помогают:

Это сохранит список зависимостей с файлом Godeps/Godeps.json и скопирует исходный код в Godeps/_workspace. Прочитайте его содержимое и убедитесь, что он выглядит разумным. Затем зафиксируйте файл для контроля версий.

Является ли Godeps.json файлом?

4b9b3361

Ответ 1

Официальный ответ:

Из проблемы GitHub # 131:

Предполагаемое использование godep относится к зависимостям поставщиков и передает каталог _workspace в управление версиями. См. Документ заявки @kr, связанный в # 123 (предложение: http://goo.gl/RpYs8e). Как обсуждалось в этом предложении, у богепа был режим ( -copy = false), которые не поддерживали независимость. Я предполагаю, что из-за этого может возникнуть неоднозначный язык в Readme. Этот режим был удален, как описано в № 123.

Здесь также godep автор говорит о своем проекте и идеях - Перенос вендоров и импорта пути

Личное мнение:

Я не думаю, что есть правильный способ сделать это.

Компоновка пакетов поставщиков выглядит неудобно, но имеет свои преимущества:

  • Вы не полагаетесь на внешние сервисы (GitHub и т.д.). У GitHub нет сбоев, может быть, у вас есть какая-то ужасная политика компании, которая мешает вам использовать ее, возможно, репозиторий исчезает или история переписывается, возможно, вы находитесь за брандмауэром (сервер постановки/сборки) и т.д.
  • Каждый раз, когда вы обновляете свои отпечатки, вы получаете отличную информацию о том, что изменилось. Это помогает при обновлении до более новой версии или просто отслеживании изменений, если вы используете экран, который используется.

В конце концов, вам нужно взвесить плюсы и минусы. Лично я сжимаю каждый раз, когда мне приходится комментировать код поставщика, но в моих проектах Go я делаю. По крайней мере на данный момент.

Кроме того, такие компании, как Google и Facebook, в основном хранят все в одном репозитории и включают код поставщика (или так я слышал).

Интересная статья по теме:  Перейти к управлению пакетами

Ответ 2

godep понадобится json файл для чтения зависимостей, как показано в update.go.
Таким образом, файл должен быть версией.

Но тогда godep заполнит содержимое godep/_workspace, что означает, что это "сгенерированный" контент: вам не нужно версия it.

Ответ 3

Просто добавьте файл Godeps.json в репо и _workspace в список .gitignore:).

Пока ваш код должен быть полностью включен в ваше репо, зависимости нужно как-то просто ссылаться (godep.json, package.json, git подмодуль... вы выбираете), и не более того. Та же самая тактика применяется к npm, bower, apt и всем другим менеджерам пакетов.

Ваше репо - ваши вещи + ссылки на вендоров поставщиков (конечно, когда это возможно, вы не можете ссылаться на zip файл sourceforge).

Как сказал @VonC, мы не хотим выпускать версии вендоров.