302 votes

Projet vs référentiel dans GitHub

Dans GitHub, quelle est la différence conceptuelle entre un projet (qui peut être créé à l'intérieur d'un référentiel) et un référentiel?

J'ai vu plusieurs questions similaires (ici, ici et ici) dans l'affirmative, mais aucun d'entre eux explique ce qu'est un projet GitHub, ce qui est un dépôt GitHub et quand utiliser chacun d'eux.

Je vous serais reconnaissant si quelqu'un peut expliquer chaque terme, et de fournir un exemple de cas d'utilisation/création de chacun. Par exemple, si j'ai plusieurs prototypes d'applications, tous indépendants les uns des autres, que dois-je créer afin de gérer de manière organisée le code source pour tous les?

223voto

rsp Points 11526

Fait 1: les Projets et les Dépôts ont toujours été synonymes sur GitHub.
Fait 2: Ce n'est plus le cas.

Il y a beaucoup de confusion au sujet de Dépôts et de Projets. Dans le passé, les deux termes ont été utilisés assez bien de façon interchangeable par les utilisateurs et le GitHub est très propre documentation. Cela se traduit par quelques-uns des réponses et des commentaires ici qui expliquent les différences subtiles entre ces termes et quand l'un a été préférée à une autre. La différence étaient toujours subtile, par exemple, de la question de traqueur de faire partie du projet, mais pas le repo qui pourrait être bien comme strictement git chose etc.

N'est plus du tout.

Actuellement, les repos et les projets se réfèrent à différents types d'entités qui ont séparé les Api:

Depuis lors, il n'est plus correct d'appeler le dépôt d'un projet ou vice versa. Notez qu'il est souvent confondu dans la documentation officielle et il est regrettable qu'un terme qui a déjà été largement utilisé a été choisi comme le nom de la nouvelle entité, mais c'est le cas et nous devons vivre avec cela.

La conséquence est que le repos et les projets sont généralement confus et chaque fois que vous lisez sur GitHub projets que vous avez à me demander si c'est vraiment sur les projets ou sur les pensions de titres. S'ils avaient choisi un autre nom ou une abréviation, comme le "projet" puis nous avons pu savoir que ce qui est discuté est le nouveau type d'entité, un objet précis avec le béton des propriétés, ou d'une manière générale repo-comme projectish genre de truc.

Le terme qui est généralement sans ambiguïté est "projet".

Que pouvons-nous apprendre à partir de l'API

Le premier point de terminaison dans la documentation des Projets de l'API:

est décrite comme suit: Liste de dépôt des projets. Cela signifie qu'un référentiel peut avoir de nombreux projets. Ces deux-là ne peut pas dire la même chose. Il comprend Réponse si les projets sont désactivés:

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

ce qui signifie que certaines repos peut avoir des projets désactivé. Encore une fois, ceux qui ne peuvent pas être la même chose quand un repo peut avoir des projets désactivé.

Il y a quelques points de terminaison:

  • Créer un référentiel de projet - POST /repos/:owner/:repo/projects
  • La création d'une organisation de projet - POST /orgs/:org/projects

mais il n'y est pas:

  • Créer un projet utilisateur - POST /users/:user/projects

Ce qui nous amène à une autre différence:

1. Les référentiels peuvent appartenir à des utilisateurs ou des organisations
2. Les projets peuvent appartenir à des référentiels ou des organisations

ou, plus important encore:

1. Les projets peuvent appartenir à des référentiels, mais pas l'inverse
2. Les projets peuvent appartenir à des organisations, mais pas pour les utilisateurs
3. Les référentiels peuvent appartenir à des organisations et des utilisateurs

Voir aussi:

163voto

osowskit Points 2100

GitHub a récemment introduit une nouvelle fonctionnalité appelée Projets. Cela fournit un visuel du conseil qui est typique de nombreux outils de Gestion de Projet:

Project

Un Référentiel tel que documenté sur GitHub:

Un référentiel est l'élément le plus fondamental de GitHub. Ils sont plus faciles à imaginez que d'un projet de dossier. Un référentiel contient tous les les fichiers de projet (y compris la documentation), et les magasins de chaque fichier révision de l'histoire. Les référentiels peuvent avoir plusieurs collaborateurs et peut être soit public ou privé.

Un Projet tel que documenté sur GitHub:

Projet de conseils sur GitHub vous aider à organiser et prioriser votre travail. Vous pouvez créer un projet les planches pour particularité de travail, complet de feuilles de route, ou même la libération des listes de contrôle. Avec projet de conseils, vous avez la possibilité de créer des flux de travail personnalisés qui répondent à vos besoins.

La confusion est en partie que la nouvelle fonctionnalité, les Projets, les conflits avec la surcharge de l'utilisation du terme de projet dans la documentation ci-dessus.

25voto

Digamber Points 41

Les référentiels GitHub sont utilisés pour stocker tous les fichiers, dossiers et autres ressources qui vous intéressent.

Projet Git: C'est également l'une des ressources du référentiel Git et son utilisation principale est de gérer les projets avec un tableau visuel. Si vous créez un projet dans Git Repository, il crée un tableau visuel comme un tableau Kanban pour gérer le projet.

De cette façon, vous pouvez avoir plusieurs projets dans un référentiel.

8voto

dovy Points 358

En général, sur GitHub, 1 référentiel = 1 projet. Par exemple: https://github.com/spring-projects/spring-boot . Mais ce n'est pas une règle absolue.

1 référentiel = de nombreux projets. Par exemple: https://github.com/donhuvy/java_examples

1 = beaucoup de dépôts. Par exemple: https://github.com/zendframework/zendframework (1 projet nommé Zend Framework 3 a 61 + 1 = 62 dépôts, ne croyez pas? laissez-comte Zend Frameworks' modules + dépôt principal)

Je suis totalement d'accord avec @Brandon Ibbotson's commentaire:

Un dépôt GitHub est juste un "répertoire" où les dossiers et fichiers peuvent existent.

1voto

lake Points 92

C'est ma compréhension personnelle sur le sujet.

Pour un projet, nous pouvons faire le contrôle de version par différents référentiels. Et pour un dépôt, il permet de gérer l'ensemble du projet ou une partie de projets.

Concernant votre projet (plusieurs prototypes d'applications qui sont indépendants de chacun d'eux). Vous pouvez gérer le projet par un référentiel ou par plusieurs référentiels, la différence:

  1. Gérer par un référentiel. Si l'une des applications est modifié, l'ensemble du projet (toutes les applications) seront engagés pour une nouvelle version.

  2. Gérer plusieurs dépôts. Si une application est changé, il affectera seulement le référentiel qui gère l'application. Version pour les autres dépôts n'a pas été modifié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X