Projekt vs Repository in GitHub

188

Was ist in GitHub der konzeptionelle Unterschied zwischen einem Projekt (das in einem Repository erstellt werden kann) und einem Repository?

Ich habe in SO mehrere ähnliche Fragen ( hier , hier und hier ) gesehen, aber keine erklärt, was ein GitHub-Projekt ist, was ein GitHub-Repository ist und wann jede einzelne von ihnen verwendet werden muss.

Ich würde mich freuen, wenn jemand jeden Begriff erklären und ein Beispiel dafür geben kann, wann jeder verwendet / erstellt werden soll. Wenn ich beispielsweise mehrere voneinander unabhängige Prototypanwendungen habe, was erstelle ich, um den Quellcode für alle auf organisierte Weise zu verwalten?

Carlossierra
quelle
1
Ein Github-Repository ist nur ein "Verzeichnis", in dem Dateien und Ordner vorhanden sein können. Andere Personen können ihre eigenen Kopien dieses "Verzeichnisses" erstellen und nach Belieben ändern und dann anfordern, dass ihre Änderungen in das Haupt-Repository übernommen werden. Bei Projekten bin ich mir nicht sicher, da ich sie nie benutzt habe.
Byxor
1
Sie sagten, Sie hätten eine ähnliche Frage gesehen, aber haben Sie tatsächlich Ihren ersten Link gelesen? "Das ist eine großartige Sache, keine blöde Sache. Sie können mehrere Repositorys pro Projekt haben." und eine weitere Antwort auf denselben Thread: "Git hat keine Projekte, nur Repositorys." Wenn Sie tatsächlich Github-Projekte gemeint haben, würde ich vorschlagen, die Github-Dokumente darüber zu lesen. Help.github.com/articles/…
PeeHaa
6
@ PeeHaa ja ich habe. Der allererste Satz besagt Folgendes : "Das ist eine herrliche, keine git-Sache. Sie können mehrere Repositories pro Projekt haben." Für mich handelt es sich um Gitorius, nicht um GitHub. Außerdem heißt es, dass Sie in Gitorious mehrere Repositorys pro Projekt haben können, in GitHub ist es umgekehrt. Ich würde mich sehr freuen, wenn Sie erklären könnten, wie dies meine Frage beantwortet.
Carlossierra
2
Ich denke, dies berührt die Semantik, in der die neue Funktion Projekte - die visuelle Tafel - im Widerspruch zur überlasteten Verwendung des Begriffs Projekt steht. Die Abwahl ist wahrscheinlich, dass dies keine Programmierfrage ist.
Osowskit
2
Dies sollte alles haben, was Sie brauchen github.com/blog/…
osowskit

Antworten:

109

GitHub hat kürzlich eine neue Funktion namens Projekte eingeführt . Dies bietet eine visuelle Tafel, die typisch für viele Projektmanagement-Tools ist:

Projekt

Ein Repository wie auf GitHub dokumentiert:

Ein Repository ist das grundlegendste Element von GitHub. Sie sind am einfachsten als Projektordner vorstellbar. Ein Repository enthält alle Projektdateien (einschließlich Dokumentation) und speichert den Revisionsverlauf jeder Datei. Repositorys können mehrere Mitarbeiter haben und entweder öffentlich oder privat sein.

Ein auf GitHub dokumentiertes Projekt :

Projekttafeln auf GitHub helfen Ihnen, Ihre Arbeit zu organisieren und zu priorisieren. Sie können Projekttafeln für bestimmte Feature-Arbeiten, umfassende Roadmaps oder sogar Release-Checklisten erstellen. Mit Projektplatinen haben Sie die Flexibilität, maßgeschneiderte Workflows zu erstellen, die Ihren Anforderungen entsprechen.

Ein Teil der Verwirrung besteht darin, dass die neue Funktion "Projekte" im Widerspruch zur überlasteten Verwendung des Begriffs " Projekt" in der obigen Dokumentation steht.

osowskit
quelle
1
Ich verwende Github also, um den Code für meine einzelnen Forschungsprojekte A, B, C usw. zu speichern. Wenn ich ihn richtig verstehe, würde jedes Forschungsprojekt ein eigenes Repository erhalten? Also bekommt A ein Repository, B bekommt ein Repository, C bekommt ein Repository usw.?
Sockel
Hat Ihre Verzweigung beim Verzweigen eines Repositorys Zugriff auf den Snapshot der Projektplatine?
Geominded
7
Wie wird dies als akzeptierte Antwort gewählt? Kopieren Sie einfach die Beschreibung. Es kann vom OP gelesen werden, aber die Leute wollen es mit einfachen Beispielen wissen.
Batmaci
151

Fakt 1: Projekte und Repositories waren auf GitHub immer Synonyme.

Fakt 2: Dies ist nicht mehr der Fall.

Es gibt viel Verwirrung über Repositories und Projekte. In der Vergangenheit wurden beide Begriffe von den Benutzern und der eigenen Dokumentation des GitHub ziemlich austauschbar verwendet. Dies spiegelt sich in einigen der Antworten und Kommentare wider, die die subtilen Unterschiede zwischen diesen Begriffen erklären und erklären, wann der eine dem anderen vorgezogen wurde. Der Unterschied war immer subtil, z. B. dass der Issue-Tracker Teil des Projekts war, aber nicht Teil des Repositorys, was man als reine Idiotie usw. betrachten könnte.

Nicht länger.

Derzeit beziehen sich Repos und Projekte auf verschiedene Arten von Entitäten mit separaten APIs :

Seitdem ist es nicht mehr richtig, das Repo als Projekt zu bezeichnen oder umgekehrt. Beachten Sie, dass dies in der offiziellen Dokumentation häufig verwechselt wird und es bedauerlich ist, dass ein bereits weit verbreiteter Begriff als Name der neuen Einheit gewählt wurde. Dies ist jedoch der Fall, und wir müssen damit leben.

Die Folge ist, dass Repos und Projekte normalerweise verwirrt sind und jedes Mal, wenn Sie über GitHub-Projekte lesen, müssen Sie sich fragen, ob es wirklich um die Projekte oder um Repos geht. Hätten sie einen anderen Namen oder eine Abkürzung wie "proj" gewählt, könnten wir wissen, dass es sich um den neuen Entitätstyp, ein genaues Objekt mit konkreten Eigenschaften oder eine allgemein sprechende repoähnliche projektische Art handelt.

Der Begriff, der normalerweise eindeutig ist, ist "Projektvorstand" .

Was können wir aus der API lernen?

Der erste Endpunkt in der Dokumentation der Projekt-API:

wird beschrieben als: Liste der Repository-Projekte . Dies bedeutet, dass ein Repository viele Projekte haben kann. Diese beiden können also nicht dasselbe bedeuten. Es enthält Antwort, wenn Projekte deaktiviert sind :

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

Dies bedeutet, dass bei einigen Repos Projekte deaktiviert werden können. Auch dies kann nicht dasselbe sein, wenn in einem Repo Projekte deaktiviert werden können.

Es gibt einige andere interessante Endpunkte:

  • Erstellen Sie ein Repository-Projekt -POST /repos/:owner/:repo/projects
  • Organisationsprojekt erstellen -POST /orgs/:org/projects

aber es gibt keine :

  • Erstellen Sie ein Benutzerprojekt -POST /users/:user/projects

Was uns zu einem weiteren Unterschied führt:

1. Repositorys können Benutzern oder Organisationen gehören.
2. Projekte können Repositorys oder Organisationen gehören

oder, was noch wichtiger ist:

1. Projekte können zu Repositorys gehören, aber nicht umgekehrt.
2. Projekte können zu Organisationen gehören, aber nicht zu Benutzern.
3. Repositorys können zu Organisationen und Benutzern gehören

Siehe auch:

Ich weiß, dass es verwirrend ist. Ich versuchte es so genau wie möglich zu erklären.

rsp
quelle
In Atlassians Bitbucket können Sie Projekte erstellen, die eine Familie verwandter Repos umfassen. Hat Github dieses organisatorische Merkmal? Ich hatte erwartet, dass Github Projects das Ding sein würde, aber das ist es eindeutig nicht. Ich kann anscheinend nicht herausfinden, wie ich diese Organisation in Github ermöglichen kann. Ich bin sehr an Bitbucket gewöhnt, daher kann es nur eine Lernkurve sein.
Ungeheuer
In gewisser Weise wäre es für mich sinnvoller, wenn ein Projekt mehrere Repositorys haben könnte. Ich habe den Eindruck, dass GitHub bemerkt hat, dass es alt wird, und anstatt ein komplettes Redesign durchzuführen, habe ich mich einfach dafür entschieden, eine Problemumgehung zu finden und es als gute Sache zu verkaufen. Übrigens, wer ist momentan der Besitzer von GitHub? Vielleicht gibt die Antwort einen Hinweis darauf, warum dies geschieht. Ich denke nur laut nach.
Almir Campos
19

GitHub-Repositorys werden verwendet, um alle Dateien, Ordner und anderen Ressourcen zu speichern, die Sie interessieren.

Git-Projekt: Es ist auch eine der Ressourcen im Git-Repository und wird hauptsächlich zum Verwalten der Projekte mit einer visuellen Tafel verwendet. Wenn Sie ein Projekt in Git Repository erstellen, wird eine visuelle Karte wie eine Kanban-Karte erstellt, um das Projekt zu verwalten.

Auf diese Weise können Sie mehrere Projekte in einem Repository haben.

Digamber
quelle
4

Im Allgemeinen ist auf GitHub 1 Repository = 1 Projekt . Zum Beispiel: https://github.com/spring-projects/spring-boot . Aber es ist keine harte Regel.

1 Repository = viele Projekte . Zum Beispiel: https://github.com/donhuvy/java_examples

1 Projekte = viele Repositories . Zum Beispiel: https://github.com/zendframework/zendframework (1 Projekt mit dem Namen Zend Framework 3 hat 61 + 1 = 62 Repositorys, glauben Sie nicht? Lassen Sie die Module + das Haupt-Repository von Zend Frameworks zählen)

Ich stimme dem Kommentar von @Brandon Ibbotson voll und ganz zu :

Ein GitHub-Repository ist nur ein "Verzeichnis", in dem Ordner und Dateien vorhanden sein können.

Mach Nhu Vy
quelle
Vielen Dank für Ihre Antwort. Ich glaube jedoch nicht, dass Ihre Definition eines Projekts das ist, was GitHub als Projekt bezeichnet, da die Beispiele für Repositorys mit mehreren Projekten auf der Registerkarte Projekte für diese Repositorys nichts anzeigen. Können Sie das bitte näher erläutern?
Carlossierra
2
Eigentlich ist das Beispiel mit Zend Framework völlig falsch! Laut der Nomenklatur von GitHub gibt es eine Organisation namens "zendframework", die viele Repositorys besitzt, darunter eines mit dem Namen "zendframework" und eines für jedes Modul des Frameworks.
Igorcadelima
3
9. November 2017: Das Beispiel von 1 Repository = viele Projekte gibt eine 404 zurück.
Bram Vanroy
1
Links sind kaputt
Pmpr
1
In Bezug auf GitHub widerspricht diese Antwort anderen populäreren Antworten oben.
Manohar Reddy Poreddy
1

In Bezug auf das Git-Vokabular ist ein Projekt der Ordner, in dem sich der eigentliche Inhalt (Dateien) befindet. Während Repository (Repo) der Ordner ist, in dem git jede Änderung im Projektordner aufzeichnet . Aber im Allgemeinen können diese beiden als gleich angesehen werden. Projekt = Repository

Anshu Aditya
quelle
1

Der konzeptionelle Unterschied in meinem Verständnis ist, dass ein Projekt viele Repos enthalten kann und dass sie unabhängig voneinander sind, während gleichzeitig ein Repo viele Projekte enthalten kann. Repo ist nur ein Speicherort für Code, während ein Projekt eine Sammlung von Aufgaben für eine bestimmte Funktion ist.

Ist das sinnvoll? In einem großen Repo können viele Projekte gleichzeitig von verschiedenen Personen bearbeitet werden (viele verschiedene Funktionen werden einem Monolithen hinzugefügt). In einem großen Projekt können viele kleine Repos vorhanden sein, die separat sind, aber Teil desselben Projekts sind und mit jedem interagieren andere - Microservices? Es ist eine persönliche Einstellung zu dem, was Sie tun möchten. Ich denke, dass Repo (Speicher) vs Projekt (Aufgaben) der Hauptunterschied ist - wenn ich falsch liege, lass es mich wissen / erklären! Vielen Dank.

Jeremy
quelle
0

Dies ist mein persönliches Verständnis für das Thema.

Für ein Projekt können wir die Versionskontrolle über verschiedene Repositorys durchführen. Und für ein Repository kann es ein ganzes Projekt oder einen Teil von Projekten verwalten.

In Bezug auf Ihr Projekt (mehrere Prototypanwendungen, die von jedem unabhängig sind). Sie können das Projekt über ein Repository oder über mehrere Repositorys verwalten. Der Unterschied:

  1. Verwalten durch ein Repository. Wenn eine der Anwendungen geändert wird, wird das gesamte Projekt (alle Anwendungen) auf eine neue Version festgeschrieben.

  2. Verwalten durch mehrere Repositorys. Wenn eine Anwendung geändert wird, wirkt sich dies nur auf das Repository aus, das die Anwendung verwaltet. Die Version für andere Repositorys wurde nicht geändert.

See
quelle