Projekt vs repozytorium w GitHub

189

Jaka jest koncepcyjna różnica między projektem (który można utworzyć w repozytorium) a repozytorium w GitHub?

Widziałem kilka podobnych pytań ( tutaj , tutaj i tutaj ) w SO, ale żadne z nich nie wyjaśnia, czym jest projekt GitHub, czym jest repozytorium GitHub i kiedy z nich korzystać.

Byłbym wdzięczny, gdyby ktoś mógł wyjaśnić każdy termin i podać przykład, kiedy użyć / utworzyć każdy z nich. Na przykład, jeśli mam kilka aplikacji prototypowych, wszystkie niezależne od siebie, co utworzę, aby zarządzać w sposób zorganizowany kodem źródłowym dla nich wszystkich?

carlossierra
źródło
1
Repozytorium github to tylko „katalog”, w którym mogą istnieć pliki i foldery. Inne osoby mogą tworzyć własne kopie tego „katalogu” i modyfikować je według własnego uznania, a następnie zażądać umieszczenia ich zmian w głównym repozytorium. Jeśli chodzi o projekty, nie jestem pewien, ponieważ nigdy z nich nie korzystałem.
byxor
1
Powiedziałeś, że widziałeś podobne pytanie, ale czy faktycznie przeczytałeś swój pierwszy link? „To jest banalna, a nie głupia sprawa. W jednym projekcie możesz mieć wiele repozytoriów”. i inna odpowiedź w tym samym wątku „Git nie ma takich rzeczy jak projekty, tylko repozytoria”. Jeśli rzeczywiście miałeś na myśli projekty na githubie,
PeeHaa
6
@ PeeHaa tak, zrobiłem. Już w pierwszym zdaniu jest napisane : „To jest gitoria, a nie git. Możesz mieć wiele repozytoriów na projekt.”. Dla mnie dotyczy to Gitorius, a nie GitHub. Mówi się również, że w Gitorious możesz mieć wiele repozytoriów na projekt, ale w GitHub jest odwrotnie. Byłbym więc naprawdę wdzięczny, gdybyś mógł wyjaśnić, jak to odpowiada na moje pytanie?
carlossierra
2
Myślę, że dotyka to semantyki, w której nowa funkcja Projekty - tablica wizualna - koliduje z przeładowanym użyciem terminu Projekt. Głosowanie przeciwne jest prawdopodobne, że nie jest to kwestia programowania.
osowskit
2
To powinno mieć wszystko, czego potrzebujesz github.com/blog/…
osowskit

Odpowiedzi:

110

GitHub niedawno wprowadził nową funkcję o nazwie Projekty . Zapewnia to wizualną tablicę typową dla wielu narzędzi do zarządzania projektami:

Projekt

Repozytorium udokumentowane w GitHub:

Repozytorium to najbardziej podstawowy element GitHub. Najłatwiej je sobie wyobrazić jako folder projektu. Repozytorium zawiera wszystkie pliki projektu (w tym dokumentację) i przechowuje historię zmian każdego pliku. Repozytoria mogą mieć wielu współpracowników i mogą być publiczne lub prywatne.

Projektu , udokumentowane na GitHub:

Tablice projektów na GitHub pomagają organizować i ustalać priorytety pracy. Możesz tworzyć tablice projektów do pracy z określonymi funkcjami, kompleksowe plany, a nawet wydawać listy kontrolne. Tablice projektów zapewniają elastyczność tworzenia niestandardowych przepływów pracy, które odpowiadają Twoim potrzebom.

Częściowym zamieszaniem jest to, że nowa funkcja, Projekty, koliduje z przeciążonym użyciem terminu projekt w powyższej dokumentacji.

osowskit
źródło
1
Więc używam Github do przechowywania kodu dla moich indywidualnych projektów badawczych A, B, C itp. Jeśli dobrze go rozumiem, każdy projekt badawczy miałby swoje własne repozytorium? A więc A otrzymuje repozytorium, B otrzymuje repozytorium, C otrzymuje repozytorium itd.?
Cokół
Kiedy rozwidlisz repozytorium, czy twój fork ma dostęp do migawki tablicy projektu?
geominded
7
w jaki sposób wybrano tę odpowiedź jako zaakceptowaną? po prostu skopiuj wklej to, co jest opisane. może zostać odczytany przez PO, ale ludzie chcą wiedzieć na prostych przykładach.
batmaci
152

Fakt 1: Projekty i repozytoria zawsze były synonimami na GitHub.

Fakt 2: to już nie ma miejsca.

Istnieje wiele nieporozumień związanych z repozytoriami i projektami. W przeszłości oba terminy były używane zamiennie przez użytkowników i własną dokumentację GitHub. Znajduje to odzwierciedlenie w niektórych odpowiedziach i komentarzach, które wyjaśniają subtelne różnice między tymi terminami i kiedy jeden z nich był preferowany. Różnice były zawsze subtelne, np. Jak tracker problemów jest częścią projektu, ale nie jest częścią repozytorium, co może być uważane za rzecz ściśle gitową itp.

Nigdy więcej.

Obecnie repozytoria i projekty odnoszą się do różnych rodzajów jednostek, które mają oddzielne interfejsy API :

Od tego czasu nie jest już poprawne nazywanie repozytorium projektem lub odwrotnie. Zauważ, że jest to często mylone w oficjalnej dokumentacji i szkoda, że ​​termin, który był już szeroko używany, został wybrany jako nazwa nowego podmiotu, ale tak jest i musimy z tym żyć.

Konsekwencją jest to, że repozytoria i projekty są zwykle mylone i za każdym razem, gdy czytasz o projektach GitHub, musisz się zastanawiać, czy naprawdę chodzi o projekty, czy o repozytoria. Gdyby wybrali jakąś inną nazwę lub skrót, taki jak „proj”, moglibyśmy wiedzieć, że omawiany jest nowy typ bytu, precyzyjny obiekt o konkretnych właściwościach lub ogólnie rzecz biorąc, projekt przypominający repozytorium.

Terminem, który jest zwykle jednoznaczny, jest „tablica projektu” .

Czego możemy się nauczyć z API

Pierwszy punkt końcowy w dokumentacji Projects API:

jest opisana jako: Lista projektów repozytoriów . Oznacza to, że repozytorium może mieć wiele projektów. Więc te dwa nie mogą oznaczać tego samego. Obejmuje odpowiedź, jeśli projekty są wyłączone :

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

co oznacza, że ​​niektóre repozytoria mogą mieć wyłączone projekty. Ponownie, nie może to być to samo, gdy repozytorium może mieć wyłączone projekty.

Jest kilka innych interesujących punktów końcowych:

  • Utwórz projekt repozytorium -POST /repos/:owner/:repo/projects
  • Utwórz projekt organizacji -POST /orgs/:org/projects

ale nie ma :

  • Utwórz projekt użytkownika -POST /users/:user/projects

Co prowadzi nas do kolejnej różnicy:

1. Repozytoria mogą należeć do użytkowników lub organizacji.
2. Projekty mogą należeć do repozytoriów lub organizacji

lub, co ważniejsze:

1. Projekty mogą należeć do repozytoriów, ale nie na odwrót
2. Projekty mogą należeć do organizacji, ale nie do użytkowników
3. Repozytoria mogą należeć do organizacji i do użytkowników

Zobacz też:

Wiem, że to zagmatwane. Starałem się to jak najdokładniej wytłumaczyć.

rsp
źródło
W Bitbucket firmy Atlassian możesz tworzyć projekty obejmujące rodzinę powiązanych repozytoriów. Czy Github ma tę funkcję organizacyjną? Spodziewałem się, że Github Projects będzie tym, ale tak nie jest. Nie potrafię wymyślić, jak uczynić tę organizację możliwą na Githubie. Jestem bardzo przyzwyczajony do Bitbucket, więc może to być po prostu krzywa uczenia się.
Ungeheuer
W pewnym sensie bardziej sensowne byłoby dla mnie, gdyby jeden projekt miał wiele repozytoriów. Mam wrażenie, że GitHub zauważył, że się starzeje i zamiast całkowicie przeprojektować, zdecydowałem się obejść ten problem i sprzedać go jako dobrą rzecz. Swoją drogą, kto jest teraz właścicielem GitHuba? Może odpowiedź daje wskazówkę, dlaczego tak się dzieje. Po prostu głośno myślę.
Almir Campos
19

Repozytoria GitHub służą do przechowywania wszystkich plików, folderów i innych zasobów, na których Ci zależy.

Projekt Git: Jest to również jeden z zasobów w repozytorium Git, a jego głównym zastosowaniem jest zarządzanie projektami za pomocą tablicy wizualnej. Jeśli tworzysz projekt w repozytorium Git, tworzy on wizualną tablicę, taką jak tablica Kanban do zarządzania projektem.

W ten sposób możesz mieć wiele projektów w repozytorium.

Digamber
źródło
4

Ogólnie w GitHub, 1 repozytorium = 1 projekt . Na przykład: https://github.com/spring-projects/spring-boot . Ale to nie jest trudna zasada.

1 repozytorium = wiele projektów . Na przykład: https://github.com/donhuvy/java_examples

1 projekt = wiele repozytoriów . Na przykład: https://github.com/zendframework/zendframework (1 projekt o nazwie Zend Framework 3 ma 61 + 1 = 62 repozytoria, nie wierzysz? Policzmy moduły Zend Frameworks + główne repozytorium)

I całkowicie zgadzam się z @Brandon Ibbotson „s komentarzu :

Repozytorium GitHub to po prostu „katalog”, w którym mogą istnieć foldery i pliki.

Do Nhu Vy
źródło
Dzięki za twoją odpowiedź. Ale nie sądzę, aby Twoja definicja projektu była tym, co GitHub nazywa projektem, ponieważ przykłady repozytoriów wielu projektów nie pokazują niczego na karcie Projekty dla tych repozytoriów. Czy możesz to rozwinąć?
carlossierra
2
Właściwie przykład użycia Zend Framework jest całkowicie błędny! Zgodnie z nomenklaturą GitHub istnieje organizacja o nazwie „zendframework”, która jest właścicielem wielu repozytoriów, w tym jednego o nazwie „zendframework” i jednego dla każdego modułu frameworka.
igorcadelima
3
9 listopada 2017: przykład 1 repozytorium = wiele projektów zwraca 404.
Bram Vanroy
1
linki są zepsute
Pmpr
1
Jeśli chodzi o GitHub, ta odpowiedź jest sprzeczna z innymi, bardziej popularnymi odpowiedziami powyżej.
Manohar Reddy Poreddy,
1

W odniesieniu do słownictwa git, projekt to folder, w którym znajduje się rzeczywista zawartość (pliki). Natomiast Repozytorium (repo) to folder, w którym git przechowuje zapis każdej zmiany dokonanej w folderze projektu . Ale w ogólnym sensie te dwa można uznać za to samo. Projekt = repozytorium

Anshu Aditya
źródło
1

Koncepcyjna różnica w moim zrozumieniu, że projekt może zawierać wiele repozytoriów i które są od siebie niezależne, podczas gdy jednocześnie repozytorium może zawierać wiele projektów. Repo to tylko miejsce do przechowywania kodu, podczas gdy projekt jest zbiorem zadań dla określonej funkcji.

Czy to ma sens? Duże repozytorium może mieć wiele projektów, nad którymi pracują jednocześnie różne osoby (wiele różnych funkcji jest dodawanych do monolitu), duży projekt może mieć wiele małych repozytoriów, które są oddzielne, ale stanowią część tego samego projektu, które współdziałają ze sobą inne - mikrousługi? To osobiste podejście do tego, co chcesz robić. Myślę, że repozytorium (przechowywanie) vs projekt (zadania) to główna różnica - jeśli się mylę, daj mi znać / wyjaśnij! Dzięki.

Jeremy
źródło
0

To jest moje osobiste zrozumienie tematu.

W przypadku projektu możemy przeprowadzić kontrolę wersji przez różne repozytoria. A w przypadku repozytorium może zarządzać całym projektem lub częścią projektów.

Dotyczy twojego projektu (kilka prototypowych aplikacji, które są niezależne od każdego z nich). Możesz zarządzać projektem przez jedno repozytorium lub przez kilka repozytoriów, różnica:

  1. Zarządzaj jednym repozytorium. Jeśli jedna z aplikacji zostanie zmieniona, cały projekt (wszystkie aplikacje) zostanie zatwierdzony do nowej wersji.

  2. Zarządzaj przez kilka repozytoriów. Jeśli jedna aplikacja zostanie zmieniona, wpłynie to tylko na repozytorium, które zarządza aplikacją. Wersja dla innych repozytoriów nie została zmieniona.

jezioro
źródło