Progetto vs repository in GitHub


189

In GitHub, qual è la differenza concettuale tra un progetto (che può essere creato all'interno di un repository) e un repository?

Ho visto diverse domande simili ( qui , qui e qui ) in SO, ma nessuna di esse spiega cos'è un progetto GitHub, cos'è un repository GitHub e quando usarle.

Gradirei se qualcuno potesse spiegare ogni termine e fornire un esempio di quando usare / creare ognuno di essi. Ad esempio, se ho diverse applicazioni prototipo, tutte indipendenti l'una dall'altra, cosa creo per gestire in modo organizzato il codice sorgente per tutte?


1
Un repository github è solo una "directory" in cui possono esistere file e cartelle. Altre persone possono creare le proprie copie di questa "directory" e modificarle come desiderano, quindi richiedere che le loro modifiche vengano inserite nel repository principale. Per quanto riguarda i progetti, non sono sicuro poiché non li ho mai usati.
byxor,

1
Hai detto di aver visto una domanda simile, ma hai effettivamente letto il tuo primo link? "Questa è una cosa gitorious, non git. Puoi avere più repository per progetto." e un'altra risposta su quello stesso thread "Git non ha cose come progetti, solo repository". Se davvero intendessi progetti github, suggerirei di consultare i documenti github a riguardo help.github.com/articles/…
PeeHaa,

6
@PeeHaa sì, l'ho fatto. La prima frase afferma questo: "Questa è una cosa gitorious, non una git. Puoi avere più repository per progetto.". Per me, questo parla di Gitorius, non di GitHub. Inoltre, dice che in Gitorious puoi avere più repository per progetto, ma in GitHub è il contrario. Quindi, sarei davvero grato se potessi spiegare come sta rispondendo alla mia domanda?
carlossierra,

2
Penso che ciò tocchi la semantica in cui la nuova funzione Progetti - la scheda visiva - è in conflitto con l'uso sovraccarico del termine Progetto. Il voto negativo è probabile che questa non sia una domanda di programmazione.
Osowskit,

2
Questo dovrebbe avere tutto ciò di cui hai bisogno github.com/blog/…
osowskit

Risposte:


110

GitHub ha recentemente introdotto una nuova funzionalità chiamata Progetti . Ciò fornisce una scheda visiva tipica di molti strumenti di Project Management:

Progetto

Un repository come documentato su GitHub:

Un repository è l'elemento più basilare di GitHub. Sono più facili da immaginare come la cartella di un progetto. Un repository contiene tutti i file di progetto (compresa la documentazione) e memorizza la cronologia delle revisioni di ciascun file. I repository possono avere più collaboratori e possono essere pubblici o privati.

UN progetto come documentato su GitHub:

Le schede di progetto su GitHub ti aiutano a organizzare e dare priorità al tuo lavoro. È possibile creare schede di progetto per funzioni specifiche, tabelle di marcia complete o persino liste di controllo di rilascio. Con le schede di progetto, hai la flessibilità di creare flussi di lavoro personalizzati adatti alle tue esigenze.

Parte della confusione è che la nuova funzionalità, Progetti, è in conflitto con l'uso sovraccarico del termine progetto nella documentazione sopra.


1
Quindi sto usando Github per memorizzare il codice per i miei singoli progetti di ricerca A, B, C, ecc. Se lo capissi correttamente, ogni progetto di ricerca otterrebbe il proprio repository? Quindi A ottiene un repository, B ottiene un repository, C ottiene un repository, ecc.?
Plinto

Quando si esegue il fork di un repository, il fork ha accesso all'istantanea della scheda Progetto?
geominded

7
come viene scelta come risposta accettata? semplicemente copia incolla di ciò che è descritto. può essere letto dall'OP ma le persone vogliono sapere con semplici esempi.
Batmaci,

152

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.


Nel Bitbucket di Atlassian è possibile creare progetti che comprendono una famiglia di repository correlati. Github ha questa funzionalità organizzativa? Mi aspettavo che Github Projects fosse quella cosa, ma chiaramente non lo è. Non riesco a capire come rendere possibile questa organizzazione in Github. Sono molto abituato a Bitbucket, quindi potrebbe essere solo una curva di apprendimento.
Ungeheuer

In un certo senso avrebbe più senso per me se un progetto potesse avere più repository. Ho l'impressione che GitHub abbia notato che sta invecchiando e invece di fare una riprogettazione completa ho optato per fare una soluzione alternativa e venderlo come una cosa buona. A proposito, chi è il proprietario di GitHub in questo momento? Forse la risposta fornisce qualche indizio sul perché questo accada. Sto solo pensando ad alta voce.
Almir Campos,

19

I repository GitHub vengono utilizzati per archiviare tutti i file, le cartelle e le altre risorse a cui tieni.

Progetto Git: è anche una delle risorse nel repository Git e il suo uso principale è la gestione dei progetti con una lavagna visiva. Se si crea un progetto in Git Repository, viene creata una scheda visiva come una scheda Kanban per gestire il progetto.

In questo modo, è possibile avere più progetti in un repository.


4

In generale, su GitHub, 1 repository = 1 progetto . Ad esempio: https://github.com/spring-projects/spring-boot . Ma non è una regola difficile.

1 repository = molti progetti . Ad esempio: https://github.com/donhuvy/java_examples

1 progetti = molti repository . Ad esempio: https://github.com/zendframework/zendframework (1 progetto chiamato Zend Framework 3 ha 61 + 1 = 62 repository, non credete? Lasciate contare i moduli di Zend Frameworks + repository principale)

Sono assolutamente d'accordo con @Brandon Ibbotson 's commento :

Un repository GitHub è solo una "directory" in cui possono esistere cartelle e file.


Grazie per la risposta. Ma non credo che la tua definizione di progetto sia ciò che GitHub chiama progetto, poiché gli esempi di repository a più progetti non mostrano nulla nella scheda Progetti per tali repository. Potete per favore approfondire questo?
Carlossierra,

2
In realtà, l'esempio che utilizza Zend Framework è totalmente sbagliato! Secondo la nomenclatura di GitHub, esiste un'organizzazione denominata "zendframework" che possiede molti repository, incluso uno chiamato anche "zendframework" e uno per ciascun modulo del framework.
igorcadelima,

3
9 novembre 2017: l'esempio di 1 repository = molti progetti restituisce un 404.
Bram Vanroy

1
i collegamenti sono interrotti
PM

1
In termini di GitHub, questa risposta è in conflitto con altre risposte più popolari sopra.
Manohar Reddy Poreddy

1

Rispetto al vocabolario git, un progetto è la cartella in cui vive il contenuto (file) effettivo. Considerando che Repository (repo) è la cartella all'interno della quale git tiene traccia di ogni modifica effettuata nella cartella del progetto . Ma in senso generale, questi due possono essere considerati uguali. Progetto = Repository


1

La differenza concettuale nella mia comprensione è che un progetto può contenere molti repo e che sono indipendenti l'uno dall'altro, mentre contemporaneamente un repo può contenere molti progetti. Repo è solo un luogo di archiviazione per il codice mentre un progetto è una raccolta di attività per una determinata funzionalità.

Ha senso? Un repository di grandi dimensioni può avere molti progetti su cui diverse persone lavorano contemporaneamente (molte caratteristiche diverse vengono aggiunte a un monolite), un grande progetto può avere molti piccoli repository separati ma parte dello stesso progetto che interagiscono con ciascuno altro - microservizi? È una visione personale di ciò che vuoi fare. Penso che il repository (archiviazione) rispetto al progetto (attività) sia la differenza principale - se sbaglio, fammi sapere / spiegare! Grazie.


0

Questa è la mia comprensione personale sull'argomento.

Per un progetto, possiamo eseguire il controllo della versione da diversi repository. E per un repository, può gestire un intero progetto o parte di progetti.

Per quanto riguarda il tuo progetto (diverse applicazioni prototipo che sono indipendenti da ciascuna di esse). È possibile gestire il progetto da un repository o da più repository, la differenza:

  1. Gestire da un repository. Se una delle applicazioni viene modificata, l'intero progetto (tutte le applicazioni) verrà assegnato a una nuova versione.

  2. Gestire da diversi repository. Se un'applicazione viene modificata, avrà effetto solo sul repository che gestisce l'applicazione. La versione per altri repository non è stata modificata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.