it-swarm.com.de

Projekt vs Repository in GitHub

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

Ich habe mehrere ähnliche Fragen ( hier , hier und hier ) in SO gesehen, aber keine erklärt, was ein GitHub-Projekt ist, was ist ein GitHub-Repository und wann soll jedes verwendet werden?.

Ich würde mich freuen, wenn jemand jeden Begriff erklären und ein Beispiel dafür geben könnte, wann jeder verwendet/erstellt werden sollte. Wenn ich zum Beispiel mehrere Prototypanwendungen habe, die alle unabhängig voneinander sind, was erstelle ich, um den Quellcode für alle auf organisierte Weise zu verwalten?

84
carlossierra

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

Project

A 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.

A Projekt wie auf GitHub dokumentiert:

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

Ein Teil der Verwirrung ist, dass die neue Funktion "Projekte" mit der überlasteten Verwendung des Begriffs " Projekt" in der obigen Dokumentation in Konflikt steht.

57
osowskit

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

Fakt 2: Dies ist nicht mehr der Fall.

In Bezug auf Repositories und Projekte herrscht große Verwirrung. In der Vergangenheit wurden beide Begriffe von den Benutzern und der GitHub-eigenen Dokumentation ziemlich synonym verwendet. Dies spiegelt sich in einigen Antworten und Kommentaren 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. wie wenn der Issue Tracker Teil des Projekts ist, aber nicht Teil des Projektarchivs, was man sich als reine Idiotensache vorstellen könnte.

Nicht mehr.

Derzeit beziehen sich Repos und Projekte auf eine unterschiedliche Art von Entitäten , die separate APIs haben :

Seitdem ist es nicht mehr richtig, das Repo als Projekt oder umgekehrt zu bezeichnen. Beachten Sie, dass es in der offiziellen Dokumentation häufig zu Verwechslungen kommt und es bedauerlich ist, dass ein Begriff, der bereits häufig verwendet wurde, 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 Sie sich jedes Mal, wenn Sie über GitHub-Projekte lesen, fragen müssen, ob es sich wirklich um Projekte oder Repos handelt. Hätten sie einen anderen Namen oder eine Abkürzung wie "proj" gewählt, dann könnten wir wissen, dass es sich um den neuen Entitätstyp handelt, um ein genaues Objekt mit konkreten Eigenschaften oder um ein allgemein gesprochenes repo-ähnliches projektartiges Ding.

Der in der Regel eindeutige Begriff lautet "Projektplatine" .

Was können wir aus der API lernen?

Der erste Endpunkt in der Dokumentation der Projects-API:

wird beschrieben als: Repository-Projekte auflisten . 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"
}

das bedeutet, dass bei einigen Repos Projekte deaktiviert sein können. Dies kann wiederum nicht dasselbe sein, wenn für ein Repo Projekte deaktiviert werden können.

Es gibt einige andere interessante Endpunkte:

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

aber es gibt kein :

  • Projekt eines Benutzers erstellen - 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 zu Repositories oder Organisationen gehören

oder noch wichtiger:

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

Siehe auch:

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

82
rsp

GitHub-Repositorys werden zum Speichern aller Dateien, Ordner und anderer Ressourcen verwendet, 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.

8
Digamber

In der Regel 1 Projekt in GitHub = 1 Projekt . Zum Beispiel: https://github.com/spring-projects/spring-boot . Aber es ist keine harte Regel.

1 Projektarchiv = 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 von Zend Frameworks + das Hauptrepository zählen )

Ich stimme vollkommen zu @ Brandon Ibbotson 's Kommentar :

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

4
D Vy

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

1
Anshu Aditya

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

Für ein Projekt können wir die Versionskontrolle über verschiedene Repositories 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 nach einem Repository oder nach mehreren Repositorys verwalten, der Unterschied:

  1. Verwalten von einem Repository. Wenn eine der Anwendungen geändert wird, wird das gesamte Projekt (alle Anwendungen) auf eine neue Version übertragen.

  2. Verwalten von mehreren Repositories. 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.

0
lake