В GitHub, какова концептуальная разница между проектом (который может быть создан внутри хранилища) и хранилищем?
Я видел несколько похожих вопросов ( здесь , здесь и здесь ) в SO, но ни один из них не объясняет, что такое проект GitHub, что такое репозиторий GitHub и когда использовать каждый из них.
Я был бы признателен, если бы кто-то мог объяснить каждый термин и дать пример того, когда использовать / создавать каждый из них. Например, если у меня есть несколько прототипных приложений, не зависящих друг от друга, что я создаю, чтобы организованно управлять исходным кодом для всех них?
git
github
version-control
repository
carlossierra
источник
источник
Ответы:
GitHub недавно представил новую функцию под названием Projects . Это обеспечивает визуальную панель, которая типична для многих инструментов управления проектами:
Repository как описано на GitHub:
Проект как документировано на GitHub:
Частично путаница заключается в том, что новая функция «Проекты» конфликтует с перегруженным использованием термина « проект» в приведенной выше документации.
источник
Факт 1: Проекты и репозитории всегда были синонимами на GitHub.
Факт 2: это больше не так.
Существует много путаницы в отношении хранилищ и проектов. В прошлом оба термина использовались в значительной степени взаимозаменяемо пользователями и собственной документацией GitHub. Это отражено в некоторых ответах и комментариях, которые объясняют тонкие различия между этими терминами и тем, когда один из них предпочтительнее другого. Разница всегда была неуловимой, например, трекер проблем был частью проекта, но не частью репозитория, который можно было бы считать строго мерзкой вещью и т. Д.
Уже нет.
В настоящее время репозитории и проекты относятся к различным видам сущностей, которые имеют отдельные API :
С тех пор уже не правильно называть репо проектом или наоборот. Обратите внимание, что это часто путают в официальной документации, и, к сожалению, термин, который уже широко использовался, был выбран в качестве имени новой сущности, но это так, и мы должны с этим мириться.
Как следствие, репо и проекты обычно перепутаны, и каждый раз, когда вы читаете о проектах GitHub, вы должны задаться вопросом, действительно ли речь идет о проектах или о репо. Если бы они выбрали какое-то другое имя или аббревиатуру, например, «proj», тогда мы могли бы знать, что речь идет о новом типе сущности, точном объекте с конкретными свойствами или общепринятой репо-подобной проектной штуке.
Термин, который обычно однозначен, - «проектная доска» .
Что мы можем узнать из API
Первая конечная точка в документации по Projects API:
описывается как: Список проектов репозитория . Это означает, что в хранилище может быть много проектов. Так что эти двое не могут означать одно и то же. Включает ответ, если проекты отключены :
Это означает, что в некоторых репозиториях проекты могут быть отключены. Опять же, это не может быть то же самое, когда в репо могут быть отключены проекты.
Есть и другие интересные конечные точки:
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 + основной репозиторий)
Я полностью согласен с @Brandon Ибботсон «s комментарий :
источник
Что касается словаря git, Проект - это папка, в которой находится фактический контент (файлы). Принимая во внимание, что Repository (repo) - это папка, внутри которой git хранит записи обо всех изменениях, внесенных в папку проекта . Но в общем смысле эти два можно считать одинаковыми. Проект = Репозиторий
источник
Концептуальная разница в моем понимании заключается в том, что проект может содержать много репо и которые не зависят друг от друга, в то время как репо может содержать много проектов. Repo - это просто хранилище кода, а проект - набор задач для определенной функции.
Имеет ли это смысл? В большом репо может быть много проектов, над которыми работают разные люди одновременно (в монолит добавлено много разных функций), в большом проекте может быть много небольших репо, которые являются отдельными, но являются частью одного и того же проекта, взаимодействующего с каждым другое - микросервисы? Это личный взгляд на то, что вы хотите сделать. Я думаю, что основное отличие - репо (хранение) от проекта (задачи) - если я ошибаюсь, пожалуйста, дайте мне знать / объяснить! Спасибо.
источник
Это моё личное понимание по теме.
Для проекта мы можем осуществлять контроль версий в разных репозиториях. А для хранилища он может управлять целым проектом или частью проектов.
Относительно вашего проекта (несколько прототипов приложений, которые не зависят от каждого из них). Вы можете управлять проектом одним хранилищем или несколькими хранилищами, разница:
Управление одним хранилищем. Если одно из приложений будет изменено, весь проект (все приложения) будет зафиксирован в новой версии.
Управление несколькими репозиториями. Если изменить одно приложение, оно повлияет только на репозиторий, который управляет приложением. Версия для других репозиториев не была изменена.
источник