Fatto 1: progetti e repository sono sempre stati sinonimi su GitHub.
Fatto 2: questo non è più il caso.
C'è molta confusione su repository e progetti. In passato entrambi i termini sono stati usati praticamente in modo intercambiabile dagli utenti e dalla stessa documentazione di GitHub. Ciò si riflette in alcune delle risposte e dei commenti che spiegano le sottili differenze tra quei termini e quando l'uno era preferito rispetto all'altro. La differenza era sempre sottile, ad esempio come il tracker dei problemi che faceva parte del progetto ma non faceva parte del repository che potrebbe essere considerato una cosa strettamente git, ecc.
Non più.
Attualmente repository e progetti si riferiscono a diversi tipi di entità con API separate :
Da allora non è più corretto chiamare il repository un progetto o viceversa. Si noti che è spesso confuso nella documentazione ufficiale ed è un peccato che un termine già ampiamente utilizzato sia stato scelto come nome della nuova entità, ma è così e dobbiamo convivere con quello.
La conseguenza è che i repository e i progetti sono generalmente confusi e ogni volta che leggi dei progetti GitHub devi chiederti se si tratta davvero dei progetti o dei repository. Se avessero scelto un altro nome o un'abbreviazione come "proj", allora potremmo sapere che ciò che viene discusso è il nuovo tipo di entità, un oggetto preciso con proprietà concrete o un tipo di cose proiettile simile a un repository in generale.
Il termine che di solito non è ambiguo è "project board" .
Cosa possiamo imparare dall'API
Il primo endpoint nella documentazione dell'API di progetti:
è descritto come: Elenca progetti di repository . Significa che un repository può avere molti progetti. Quindi quei due non possono significare la stessa cosa. Include la risposta se i progetti sono disabilitati :
{
"message": "Projects are disabled for this repo",
"documentation_url": "https://developer.github.com/v3"
}
ciò significa che alcuni repository possono avere progetti disabilitati. Ancora una volta, quelli non possono essere la stessa cosa quando un repository può avere progetti disabilitati.
Esistono altri endpoint interessanti:
- Crea un progetto repository -
POST /repos/:owner/:repo/projects
- Crea un progetto organizzativo -
POST /orgs/:org/projects
ma non c'è :
Crea un progetto di un utente -POST /users/:user/projects
Il che ci porta ad un'altra differenza:
1. I repository possono appartenere a utenti o organizzazioni
2. I progetti possono appartenere a repository o organizzazioni
o, ancora più importante:
1. I progetti possono appartenere ai repository ma non viceversa
2. I progetti possono appartenere alle organizzazioni ma non agli utenti
3. I repository possono appartenere alle organizzazioni e agli utenti
Guarda anche:
So che è confuso. Ho provato a spiegarlo nel modo più preciso possibile.