Projet vs référentiel dans GitHub


190

Dans GitHub, quelle est la différence conceptuelle entre un projet (qui peut être créé dans un référentiel) et un référentiel?

J'ai vu plusieurs questions similaires ( ici , ici et ici ) dans SO, mais aucune d'entre elles n'explique ce qu'est un projet GitHub, ce qu'est un référentiel GitHub et quand utiliser chacun d'eux.

J'apprécierais que quelqu'un puisse expliquer chaque terme et donner un exemple de quand utiliser / créer chacun d'eux. Par exemple, si j'ai plusieurs applications prototypes, toutes indépendantes les unes des autres, que dois-je créer pour gérer de manière organisée le code source de chacune d'elles?


1
Un référentiel github est juste un "répertoire" où des fichiers et des dossiers peuvent exister. D'autres personnes peuvent créer leurs propres copies de ce «répertoire» et le modifier à leur guise, puis demander que leurs modifications soient placées dans le référentiel principal. Quant aux projets, je n'en suis pas sûr puisque je ne les ai jamais utilisés.
byxor

1
Vous avez dit que vous avez vu une question similaire, mais avez-vous réellement lu votre premier lien? "C'est un truc gitoire, pas git. Vous pouvez avoir plusieurs dépôts par projet." et une autre réponse sur ce même fil "Git n'a pas de projets tels que des référentiels.". Si vous vouliez vraiment dire des projets github, je suggérerais de consulter la documentation github à ce sujet help.github.com/articles
...

6
@PeeHaa oui je l'ai fait. La toute première phrase dit ceci: "C'est une chose gitorieuse, pas un truc git. Vous pouvez avoir plusieurs dépôts par projet.". Pour moi, cela parle de Gitorius, pas de GitHub. En outre, il indique que dans Gitorious, vous pouvez avoir plusieurs référentiels par projet, mais dans GitHub, c'est l'inverse. Alors, j'apprécierais vraiment que vous m'expliquiez comment cela répond à ma question?
carlossierra

2
Je pense que cela touche à la sémantique où la nouvelle fonctionnalité Projects - le panneau visuel - entre en conflit avec l'utilisation surchargée du terme Project. Le vote à la baisse est probable que ce n'est pas une question de programmation.
osowskit

2
Cela devrait avoir tout ce dont vous avez besoin github.com/blog
...

Réponses:


110

GitHub a récemment introduit une nouvelle fonctionnalité appelée Projets . Cela fournit un tableau visuel typique de nombreux outils de gestion de projet:

Projet

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

Un référentiel est l'élément le plus basique de GitHub. Ils sont plus faciles à imaginer comme le dossier d'un projet. Un référentiel contient tous les fichiers du projet (y compris la documentation) et stocke l'historique des révisions de chaque fichier. Les référentiels peuvent avoir plusieurs collaborateurs et peuvent être publics ou privés.

Un projet tel que documenté sur GitHub:

Les tableaux de projets sur GitHub vous aident à organiser et à prioriser votre travail. Vous pouvez créer des tableaux de projets pour des fonctionnalités spécifiques, des feuilles de route complètes ou même des listes de contrôle de publication. Avec les tableaux de projets, vous avez la possibilité de créer des flux de travail personnalisés qui répondent à vos besoins.

Une partie de la confusion est que la nouvelle fonctionnalité, Projets, entre en conflit avec l'utilisation surchargée du terme projet dans la documentation ci-dessus.


1
J'utilise donc Github pour stocker le code de mes projets de recherche individuels A, B, C, etc. Si je comprends bien, chaque projet de recherche aurait son propre référentiel? Donc A obtient un référentiel, B obtient un référentiel, C obtient un référentiel, etc.?
Plinth

Lorsque vous forkez un référentiel, votre fork a-t-il accès à l'instantané du tableau de projet?
géoréférencé

7
comment cela est-il choisi comme réponse acceptée? copiez simplement ce qui est décrit. il peut être lu par l'OP mais les gens veulent le savoir avec des exemples simples.
batmaci

153

Fait 1: les projets et les référentiels étaient toujours des synonymes sur GitHub.

Fait 2: Ce n'est plus le cas.

Il y a beaucoup de confusion sur les référentiels et les projets. Dans le passé, les deux termes étaient utilisés à peu près de manière interchangeable par les utilisateurs et par la propre documentation du GitHub. Cela se reflète dans certaines des réponses et des commentaires ici qui expliquent les différences subtiles entre ces termes et le moment où l'un a été préféré à l'autre. La différence était toujours subtile, par exemple, comme le suivi des problèmes faisant partie du projet mais ne faisant pas partie du référentiel qui pourrait être considéré comme une chose strictement git, etc.

Plus maintenant.

Actuellement, les dépôts et les projets font référence à différents types d'entités qui ont des API séparées :

Depuis lors, il n'est plus correct d'appeler le repo un projet ou vice versa. Notez qu'il est souvent confondu dans la documentation officielle et qu'il est dommage qu'un terme déjà largement utilisé ait été choisi comme nom de la nouvelle entité mais c'est le cas et il faut vivre avec ça.

La conséquence est que les dépôts et les projets sont généralement confus et chaque fois que vous lisez des projets GitHub, vous devez vous demander s'il s'agit vraiment des projets ou des dépôts. S'ils avaient choisi un autre nom ou une abréviation comme "proj", alors nous pourrions savoir que ce qui est discuté est le nouveau type d'entité, un objet précis avec des propriétés concrètes, ou un genre de chose projectish de type repo.

Le terme généralement sans ambiguïté est «conseil de projet» .

Que pouvons-nous apprendre de l'API

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

est décrit comme suit : Liste des projets de référentiel . Cela signifie qu'un référentiel peut avoir de nombreux projets. Donc, ces deux-là ne peuvent pas signifier la même chose. Il inclut la 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 certains dépôts peuvent avoir des projets désactivés. Encore une fois, ce ne peut pas être la même chose lorsqu'un dépôt peut avoir des projets désactivés.

Il existe d'autres points de terminaison intéressants:

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

mais il n'y a 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 à des utilisateurs
3. Les référentiels peuvent appartenir à des organisations et à des utilisateurs

Voir également:

Je sais que c'est déroutant. J'ai essayé de l'expliquer aussi précisément que possible.


Dans Bitbucket d'Atlassian, vous pouvez créer des projets qui englobent une famille de dépôts associés. Github a-t-il cette fonctionnalité d'organisation? Je m'attendais à ce que Github Projects soit ce truc, mais ce n'est clairement pas le cas. Je n'arrive pas à comprendre comment rendre cette organisation possible dans Github. Je suis très habitué à Bitbucket, donc ce n'est peut-être qu'une courbe d'apprentissage.
Ungeheuer

D'une certaine manière, cela aurait plus de sens pour moi si un projet pouvait avoir plusieurs référentiels. J'ai l'impression que GitHub a remarqué que cela vieillissait et qu'au lieu de faire une refonte complète, il a simplement choisi de faire une solution de contournement et de la vendre comme une bonne chose. Au fait, qui est actuellement le propriétaire de GitHub? Peut-être que la réponse donne une idée de pourquoi cela se produit. Je pense juste à voix haute.
Almir Campos

19

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 le référentiel Git, 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.


4

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

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

1 projets = plusieurs référentiels . Par exemple: https://github.com/zendframework/zendframework (1 projet nommé Zend Framework 3 a 61 + 1 = 62 référentiels, ne croyez pas? Comptons les modules de Zend Frameworks + le référentiel principal)

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

Un référentiel GitHub est juste un "répertoire" où des dossiers et des fichiers peuvent exister.


Merci pour votre réponse. Mais je ne pense pas que votre définition d'un projet soit ce que GitHub appelle un projet, car les exemples de référentiels à plusieurs projets ne montrent rien dans l'onglet Projets de ces référentiels. Pourriez-vous nous expliquer cela?
carlossierra

2
En fait, l'exemple utilisant Zend Framework est totalement faux! Selon la nomenclature de GitHub, il existe une organisation nommée "zendframework" qui possède de nombreux référentiels, dont un également nommé "zendframework" et un pour chaque module du framework.
igorcadelima

3
9 nov.2017: l'exemple 1 repository = many projects renvoie un 404.
Bram Vanroy

1
les liens sont rompus
Pmpr

1
En termes de GitHub, cette réponse est en contradiction avec d'autres réponses plus populaires ci-dessus.
Manohar Reddy Poreddy

1

En ce qui concerne le vocabulaire git, un projet est le dossier dans lequel se trouve le contenu réel (fichiers). Tandis que Repository (repo) est le dossier dans lequel git garde l'enregistrement de chaque modification apportée dans le dossier du projet . Mais dans un sens général, ces deux peuvent être considérés comme identiques. Projet = Référentiel


1

La différence conceptuelle dans ma compréhension est qu'un projet peut contenir de nombreux dépôts et qui sont indépendants les uns des autres, alors que simultanément un dépôt peut contenir de nombreux projets. Le dépôt n'est qu'un lieu de stockage pour le code, tandis qu'un projet est un ensemble de tâches pour une certaine fonctionnalité.

Cela a-t-il du sens? Un grand dépôt peut avoir de nombreux projets en cours de travail par différentes personnes en même temps (beaucoup de fonctionnalités de différence étant ajoutées à un monolithe), un grand projet peut avoir de nombreux petits dépôts séparés mais faisant partie du même projet qui interagissent avec chacun autre - microservices? C'est une vision personnelle de ce que vous voulez faire. Je pense que le repo (stockage) vs projet (tâches) est la principale différence - si je me trompe, veuillez me le faire savoir / expliquer! Merci.


0

C'est ma compréhension personnelle du sujet.

Pour un projet, nous pouvons faire le contrôle de version par différents référentiels. Et pour un référentiel, il peut gérer un projet entier ou une partie de projets.

Concernant votre projet (plusieurs applications prototypes indépendantes de chacune d'elles). 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ée, l'ensemble du projet (toutes les applications) sera engagé dans une nouvelle version.

  2. Gérer par plusieurs référentiels. Si une application est modifiée, cela n'affectera que le référentiel qui gère l'application. La version des autres référentiels n'a pas été modifiée.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.