Проект против репозитория в GitHub

В GitHub, какова концептуальная разница между проектом (который может быть создан внутри хранилища) и хранилищем?

Я видел несколько похожих вопросов ( здесь, здесь и здесь) в SO, но ни один из них не объясняет, что такое проект GitHub, что такое репозиторий GitHub и когда использовать каждый из них.

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

8 ответов

Решение

GitHub недавно представил новую функцию под названием Projects. Это обеспечивает визуальную панель, которая типична для многих инструментов управления проектами:

проект

Репозиторий, как описано на GitHub:

Репозиторий является самым основным элементом GitHub. Их проще всего представить в виде папки проекта. Репозиторий содержит все файлы проекта (включая документацию) и хранит историю изменений каждого файла. Репозитории могут иметь несколько соавторов и могут быть как общедоступными, так и частными.

Проект, документированный на GitHub:

Доски объявлений на GitHub помогут вам организовать и расставить приоритеты в вашей работе. Вы можете создавать доски проектов для работы с конкретными функциями, всесторонних дорожных карт или даже выпускать контрольные списки. С досками проектов у вас есть возможность создавать индивидуальные рабочие процессы в соответствии с вашими потребностями.

Частично путаница заключается в том, что новая функция "Проекты" конфликтует с перегруженным использованием термина " проект" в приведенной выше документации.

Факт 1: Проекты и репозитории всегда были синонимами на GitHub.
Факт 2: это больше не так.

Существует много путаницы в отношении хранилищ и проектов. В прошлом оба термина использовались в значительной степени взаимозаменяемо пользователями и собственной документацией GitHub. Это отражено в некоторых ответах и ​​комментариях, которые объясняют тонкие различия между этими терминами и тем, когда один из них предпочтительнее другого. Разница всегда была неуловимой, например, трекер проблем, являющийся частью проекта, но не репозиторий, который мог бы быть просто мерзавцем и т. Д.

Уже нет.

В настоящее время репозитории и проекты относятся к различным видам сущностей, которые имеют отдельные API:

С тех пор уже не правильно называть репо проектом или наоборот. Обратите внимание, что это часто путается в официальной документации, и, к сожалению, термин, который уже широко использовался, был выбран в качестве имени новой сущности, но это так, и мы должны с этим мириться.

Как следствие, репо и проекты обычно перепутаны, и каждый раз, когда вы читаете о проектах GitHub, вы должны задаться вопросом, действительно ли речь идет о проектах или о репо. Если бы они выбрали какое-то другое имя или аббревиатуру, например "proj", тогда мы могли бы знать, что речь идет о новом типе сущности, точном объекте с конкретными свойствами или общепринятом репо-подобном проектном виде вещей.

Термин, который обычно однозначен, является "доской проекта".

Что мы можем узнать из API

Первая конечная точка в документации по Projects API:

описывается как: Список проектов хранилища. Это означает, что в репозитории может быть много проектов. Так что эти двое не могут означать одно и то же. Включает ответ, если проекты отключены:

{
  "message": "Projects are disabled for this repo",
  "documentation_url": "https://developer.github.com/v3"
}

Это означает, что в некоторых репозиториях проекты могут быть отключены. Опять же, это не может быть то же самое, когда в репо могут быть отключены проекты.

Есть и другие интересные конечные точки:

  • Создать проект репозитория - POST /repos/:owner/:repo/projects
  • Создать проект организации - POST /orgs/:org/projects

но нет

  • Создать проект пользователя - POST /users/:user/projects

Что приводит нас к другому различию:

1. Хранилища могут принадлежать пользователям или организациям
2. Проекты могут принадлежать репозиториям или организациям

или, что более важно:

1. Проекты могут принадлежать репозиториям, но не наоборот
2. Проекты могут принадлежать организациям, но не пользователям
3. Хранилища могут принадлежать организациям и пользователям

Смотрите также:

Репозитории GitHub используются для хранения всех файлов, папок и других ресурсов, которые вам нужны.

Git Project: это также один из ресурсов в Git Repository, и основное его использование - управление проектами с помощью визуальной доски. Если вы создаете проект в Git Repository, он создает визуальную доску, например доску Канбан, для управления проектом.

Таким образом, вы можете иметь несколько проектов в хранилище.

В общем, на GitHub, 1 репозиторий = 1 проект. Например: https://github.com/spring-projects/spring-boot. Но это не жесткое правило.

1 репозиторий = много проектов. Например: https://github.com/donhuvy/java_examples

1 проектов = много репозиториев. Например: https://github.com/zendframework/zendframework (1 проект с именем Zend Framework 3 имеет 61 + 1 = 62 репозитория, не верьте? Давайте посчитаем модули Zend Frameworks + основной репозиторий)

Я полностью согласен с byxor:

Репозиторий GitHub - это просто "каталог", в котором могут существовать папки и файлы.

Концептуальная разница в моем понимании заключается в том, что проект может содержать много репо, которые независимы друг от друга, в то время как одновременно репо может содержать много проектов. Repo - это просто место для хранения кода, в то время как проект представляет собой набор задач для определенной функции.

Имеет ли это смысл? В большом репо может быть много проектов, над которыми одновременно работают разные люди (в монолит добавляется множество различных функций), в большом проекте может быть много небольших репозиториев, которые являются отдельными, но являются частью одного и того же проекта, которые взаимодействуют с каждым из них. другое - микросервисы? Это личное мнение о том, чем вы хотите заниматься. Я думаю, что основная разница между репо (хранилищем) и проектом (задачами) - если я ошибаюсь, дайте мне знать / объяснить! Спасибо.

Прочитав ответы на этот вопрос, я пришел к выводу, что эти два термина взаимозаменяемы, и никому на самом деле не удалось провести различие между ними четко и понятно!

Это моё личное понимание по теме.

Для проекта мы можем осуществлять контроль версий в разных репозиториях. А для хранилища он может управлять целым проектом или частью проектов.

Относительно вашего проекта (несколько прототипов приложений, которые не зависят от каждого из них). Вы можете управлять проектом одним хранилищем или несколькими хранилищами, разница:

  1. Управление одним хранилищем. Если одно из приложений будет изменено, весь проект (все приложения) будет зафиксирован в новой версии.

  2. Управление несколькими репозиториями. Если изменить одно приложение, оно повлияет только на репозиторий, который управляет приложением. Версия для других репозиториев не была изменена.

Что касается словаря git, Проект - это папка, в которой находится фактический контент (файлы). Принимая во внимание, что Repository (repo) - это папка, внутри которой git хранит записи обо всех изменениях, внесенных в папку проекта. Но в общем смысле эти два можно считать одинаковыми. Проект = Репозиторий

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