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?
git
github
version-control
repository
carlossierra
źródło
źródło
Odpowiedzi:
GitHub niedawno wprowadził nową funkcję o nazwie Projekty . Zapewnia to wizualną tablicę typową dla wielu narzędzi do zarządzania projektami:
Repozytorium udokumentowane w GitHub:
Projektu , udokumentowane na GitHub:
Częściowym zamieszaniem jest to, że nowa funkcja, Projekty, koliduje z przeciążonym użyciem terminu projekt w powyższej dokumentacji.
źródło
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 :
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:
POST /repos/:owner/:repo/projects
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ć.
źródło
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.
źródło
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 :
źródło
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
źródło
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.
źródło
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:
Zarządzaj jednym repozytorium. Jeśli jedna z aplikacji zostanie zmieniona, cały projekt (wszystkie aplikacje) zostanie zatwierdzony do nowej wersji.
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.
źródło