Проект проти сховища в GitHub


189

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

Я бачив кілька подібних питань ( тут , тут і тут ) в SO, але жодне з них не пояснює, що таке проект GitHub, що таке сховище GitHub і коли використовувати кожне з них.

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


1
Сховище github - це лише "каталог", де можуть існувати файли та папки. Інші люди можуть створювати власні копії цього "каталогу" та змінювати його за своїм бажанням, а потім вимагати, щоб їх зміни були внесені до основного сховища. Щодо проектів, я не впевнений, оскільки я ніколи їх не використовував.
byxor

1
Ви сказали, що бачили подібне питання, але чи читали ви своє перше посилання? "Це грізна, а не git річ. Ви можете мати кілька сховищ на проект." і ще одна відповідь на тому ж потоці: "У Git немає таких речей, як проекти, лише сховища." Якщо ви насправді мали на увазі проекти github, я б запропонував переглянути документи github про це help.github.com/articles/…
PeeHaa

6
@PeeHaa так, я зробив. У першому реченні сказано це: "Це грізна, а не грізна річ. Ви можете мати кілька сховищ на проект." Для мене це говорить про Gitorius, а не про GitHub. Крім того, там сказано, що в Gitorious ви можете мати кілька сховищ на проект, але в GitHub - навпаки. Отже, я дуже вдячний, якби ви могли пояснити, як це відповідає на моє запитання?
carlossierra

2
Я думаю, це стосується семантики, коли нова функція Проекти - візуальна дошка - суперечить перевантаженому використанню терміна Project. Проголосування проти, швидше за все, це не питання програмування.
osowskit

2
У цьому має бути все, що вам потрібно github.com/blog/…
osowskit

Відповіді:


110

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

Проект

Repository як описано на GitHub:

Репозиторій - найосновніший елемент GitHub. Їх найпростіше уявити як папку проекту. Репозиторій містить усі файли проекту (включаючи документацію) та зберігає історію редагування кожного файлу. Репозиторії можуть мати декілька співавторів і можуть бути як державними, так і приватними.

Проект як документовано на GitHub:

Дошки проектів на GitHub допоможуть вам упорядкувати та визначити пріоритетну роботу. Ви можете створювати дошки проектів для роботи з особливими функціями, вичерпними дорожніми картами або навіть випускати контрольні списки. За допомогою проектних дощок ви маєте можливість створювати індивідуальні робочі процеси, що відповідають вашим потребам.

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


1
Тому я використовую Github для зберігання коду для моїх індивідуальних дослідницьких проектів A, B, C тощо. Якщо я правильно це розумію, кожен дослідницький проект отримає власне сховище? Отже, A отримує сховище, B отримує сховище, C отримує сховище тощо?
Плінтус

Коли ви роздвоюєте сховище, чи має ваш форк доступ до знімка дошки проекту?
geominded

7
як це обрано як прийняту відповідь? просто скопіюйте пасту описаного. його можна прочитати в ОП, але люди хочуть знати на простих прикладах.
batmaci

152

Факт 1: Проекти та сховища завжди були синонімами на GitHub.

Факт 2: Це вже не так.

Є багато плутанини щодо сховищ та проектів. Раніше обидва терміни користувалися значною мірою взаємозамінно користувачами та власною власною документацією GitHub. Це відображається в деяких відповідях та коментарях, які пояснюють тонкі відмінності між цими термінами і коли один віддавав перевагу іншому. Різниця завжди була тонка, наприклад, наприклад, як трекер випуску є частиною проекту, але не є частиною сховища, яке може вважатися суто git річ тощо.

Більше не.

В даний час репозиції та проекти стосуються різних типів організацій, які мають окремі API :

З тих пір більше не правильно називати проект репо або навпаки. Зауважте, що це часто плутається в офіційній документації, і шкода, що термін, який уже широко застосовувався, був обраний як назва нової сутності, але це так, і ми повинні з цим жити.

Наслідком цього є те, що репости та проекти зазвичай плутаються, і кожного разу, коли ви читаєте про проекти GitHub, вам належить задатися питанням, чи це насправді про проекти чи про репости. Якби вони обрали якусь іншу назву чи абревіатуру на кшталт "proj", тоді ми могли б знати, що йдеться про новий тип сутності, точний об'єкт з конкретними властивостями або загально кажучи репо-подібний проектний вид.

Термін, який, як правило, однозначний, - це «дошка проектів» .

Про що ми можемо дізнатися з API

Перша кінцева точка в документації 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. Репозиторії можуть належати організаціям та користувачам

Дивитися також:

Я знаю, що це заплутано. Я намагався пояснити це якомога точніше.


У Bitbucket Atlassian ви можете створювати проекти, які охоплюють сімейство споріднених репостів. Чи має Github цю організаційну особливість? Я очікував, що це проекти Github, але це явно не так. Я не можу зрозуміти, як зробити цю організацію можливою в Github. Я дуже звик до Bitbucket, тому це може бути просто кривою навчання.
Ungeheuer

Певним чином для мене було б більше сенсу, якби один проект міг мати декілька сховищ. Я маю враження, що GitHub помітив, що старіє, і замість того, щоб зробити повний перепроект, просто вирішив зробити обхід і продати його як гарну річ. До речі, хто зараз власник GitHub? Можливо, відповідь дає якусь підказку щодо того, чому це відбувається. Просто думаючи вголос.
Альмір Кампос

19

Репозиторії GitHub використовуються для зберігання всіх файлів, папок та інших ресурсів, які вас цікавлять.

Git Project: Він також є одним із ресурсів у Git Repository, і основне його використання полягає в управлінні проектами за допомогою візуальної дошки. Якщо ви створюєте проект у сховищі Git, створіть візуальну дошку, як дошку Kanban для управління проектом.

Таким чином, ви можете мати кілька проектів у сховищі.


4

Загалом на 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 коментар :

Репозиторій GitHub - це лише "каталог", де можуть існувати папки та файли.


Дякую за Вашу відповідь. Але я не думаю, що ваше визначення проекту - це те, що GitHub називає проектом, оскільки приклади множинних сховищ проектів нічого не показують на вкладці Проекти для цих сховищ. Чи можете ви, будь ласка, детальніше розглянути це?
carlossierra

2
Власне, приклад використання Zend Framework абсолютно невірний! Відповідно до номенклатури GitHub, існує організація під назвою "zendframework", яка володіє багатьма сховищами, включаючи одне також назване "zendframework" і по одному для кожного модуля фреймворку.
igorcadelima

3
9 листопада 2017 року: приклад 1 сховища = багато проектів повертає 404.
Брам Ванрой

1
посилання порушені
Pmpr

1
Що стосується GitHub, ця відповідь суперечить іншим більш популярним відповідям вище.
Манохар Редді Поредді

1

Що стосується лексики git, то Project - це папка, в якій живе власний вміст (файли). Тоді як Repository (repo) - це папка, всередині якої git зберігає запис про всі зміни, внесені в папку проекту . Але в загальному сенсі ці двоє можна вважати однаковими. Проект = сховище


1

Концептуальна різниця в моєму розумінні того, що проект може містити багато репо і не залежать один від одного, тоді як одночасно репо може містити багато проектів. Repo є просто місцем зберігання коду, тоді як проект є сукупністю завдань для певної функції.

Чи має це сенс? У великому РЕПО може бути багато проектів, над якими працюють різні люди одночасно (в моноліт додається безліч відмінностей), у великого проекту може бути багато невеликих репостів, які є окремими, але є частиною одного і того ж проекту, який взаємодіє з кожним інше - мікросервіси? Це особисте сприйняття того, що ви хочете зробити. Я думаю, що головна відмінність - репо (зберігання) проти проекту (завдання) - якщо я помиляюся, будь ласка, дайте мені знати / поясніть! Дякую.


0

Це моє особисте розуміння теми.

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

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

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

  2. Управління кількома сховищами. Якщо одна програма буде змінена, вона вплине лише на сховище, яке керує програмою. Версія для інших сховищ не змінена.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.