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.