È buona prassi che ogni progetto (all'interno di una directory) sia suddiviso in un proprio repository?

1

Sono nuovo di Git e sto imparando il più possibile a riguardo.

L'ultima cosa che vorrei sapere è come affrontare questo problema: ho una singola cartella ( R ) che ho inizialmente impostato come repository Git.

Da quando ho impostato R su, ora contiene diversi progetti e ora ho diverse filiali, ognuna delle quali riflette un progetto diverso e non mi piace perché è disordinata e disorganizzata.

Come tale, penso che il modo migliore per affrontare il problema potrebbe essere quello di creare un nuovo repository per ogni progetto. (Nota che ogni progetto è una sottodirectory di R .)

Tuttavia, so che creare un nuovo repository significa ricominciare da capo (cioè niente rami o commit precedenti). Secondo - Sono sicuro che la risposta è sì - ma mi chiedo se posso copiare su un ramo da R dove ho usato per tracciare le modifiche in precedenza in modo da poter continuare con il nuovo progetto come repository invece di essere un sub -directory di un altro repository.

Quindi ho due domande:

  1. È una buona idea dividere ogni progetto nel proprio repository? (In tal caso, ciò influenzerà la struttura generale di R ? L'idea è che smetto di usare R come repository e utilizzi invece R\Project1 e R\Project2 , ecc. Come repository separati.)
  2. Esiste un modo per copiare un ramo da R nel nuovo repository?

Nota: Al momento sono l'unico sviluppatore / utente di questi file - nessun altro è coinvolto.

    
posta MusTheDataGuy 24.07.2018 - 12:19
fonte

3 risposte

2

1 > NO - non è GENERALMENTE una buona idea (ma forse una buona idea in alcuni casi).

2 > Puoi sempre clonare un repository ed eliminare i rami indesiderati.

Un buon modo per avere un'idea di un layout di progetto git appropriato è di passare qualche ora a vagare in giro per github e osservare cosa fanno gli altri.

In generale, la luce guida su ciò che ha senso essere in un singolo repository ha molto poco da fare con l'organizzazione del codice - ma la vita dell'evoluzione. L'unica cosa che si vuole evitare, è quella di dover apportare modifiche ai confini del repository CROSS (può succedere, ma scegliere una struttura in cui ciò sia estremamente improbabile).

E scegli una struttura in cui la transizione da alpha test, a beta, a rilasciare tutto avverrà nello stesso momento.

È sempre possibile COMPOSTA i repository in blocchi più grandi con sottomoduli. Ma dividerli in parti più piccole è più difficile (a causa delle altre dipendenze di team / membri del team sulla struttura del repository esistente).

    
risposta data 24.07.2018 - 16:36
fonte
2

Risposta alla domanda 1:

Se questi progetti non dipendono l'uno dall'altro, basta dividerli in repository separati.

Se dipendono l'uno dall'altro: dividerli e impostarli utilizzando i moduli secondari . Oppure - se hai strumenti di composizione per la tua piattaforma - usali.

    
risposta data 24.07.2018 - 17:44
fonte
0

1) Se ogni progetto è una dipendenza di un progetto più grande, vorrei non dividerli in repository separati.

Se dividi una dipendenza in un altro repository, alla fine diventerà , e la versione utilizzata tra i servizi dipendenti divergerà alla fine causando interruzioni delle modifiche.

Puoi trarre vantaggio dal fatto che sono logicamente suddivisi in diverse cartelle per la maggior parte dei casi d'uso. per esempio. distribuirli e ridimensionare ogni "progetto" come servizio diverso.

Sento che dovresti dividerlo in più repository git se vuoi consentire a persone diverse di accedere a parti diverse del codice, o se vuoi qualcosa come la configurazione in un repository separato, in realtà dipende dalla tua situazione.

Tuttavia, tu dici che stai imparando, la cosa migliore da fare è provarlo.

2) Per dividerli in nuovi repository, basta spostare le cartelle e avviare il repository. Quindi creare il repository su github e aggiungere il telecomando per ciascuno di questi repository. Ad esempio

mv ../old-repo/new-repo . 
cd new-repo 
git init 
git remote add origin [email protected]:User/UserRepo.git
git add -A
git commit -m "init"
git push origin master
    
risposta data 25.07.2018 - 10:22
fonte

Leggi altre domande sui tag