I migliori modi per gestire i miei repository Git con progetti che condividono lo stesso codice [duplicato]

3

Il mio background:

Ho programmato per molti anni, ma non ho mai usato un sistema di controllo della versione. Sentivo che un sistema del genere mi avrebbe risparmiato un sacco di tempo e mi avrebbe permesso di essere più produttivo, ma non ho mai avuto la possibilità di impararne uno, a causa della mancanza di tempo che avrei dovuto spendere per apprendere un tale sistema. p>

Finalmente mi sono ritrovato insieme e ho fatto una ricerca su cosa sono i VCS e quali sono le loro differenze. Poi, ho dovuto lavorare su qualche progetto, quindi ho lasciato che le informazioni raccolte sul CVS affondassero per qualche mese in più.

Mentre le informazioni stavano affondando, ho fatto la mia scelta con Git e ho iniziato ad impararlo. Ho finito il libro, chiamato "Git Magic", ho letto molti tutorial online e tutorial e ho giocato con diversi strumenti interattivi di apprendimento Git online. Ora, ho quasi finito con 'Git user manual'.

Sezione domande:

Dato che non ho una vera esperienza, ad eccezione di quella educativa, per favore consigli sul modo migliore di usare git nelle mie situazioni:

  1. Diciamo che ho un progetto (un programma) che sto sviluppando.
    Nel corso degli anni, è cresciuto con la sua libreria di funzioni / moduli.
    Ho avviato un altro progetto (un programma diverso), in cui utilizzo la stessa libreria con quelle funzioni.

    Rendo questi due programmi e la libreria come un unico repository, poiché condividono le stesse librerie?
    Oppure dividerli in 3 diversi repository git: uno per ogni programma e uno per le librerie, ma come posso testare il programma nella directory di lavoro o rilasciare il progetto di lavoro completo con tutte le librerie?
    Fai qualche tipo di branching che condividerà la stessa cartella della libreria, ma programmi diversi ciascuno nel proprio ramo?

    Qual è il modo migliore per rendere quei programmi come programmi individuali, ma in modo che possano usare quelle librerie in ogni programma?

  2. Un'altra situazione è:

    Ho un progetto completato, che varia per scopi diversi. Voglio dire, ho diverse modifiche per un compito diverso. Ad esempio, ogni attività ha gli stessi file core, ma design diversi. Dovrei usare un ramo diverso per ogni progetto, pur mantenendo il core nella sua propria diramazione, ma, quindi, come posso rilasciare o testare il programma nel modo in cui il core si unisce a uno dei progetti necessari. Per progettazione, voglio dire - ogni interfaccia per il suo core avrà una diversa struttura del database, diverse forme, diversi gestori di eventi, ecc., Ma le stesse routine di base.

posta igoryonya 14.03.2016 - 04:14
fonte

1 risposta

3

Utilizzerei sempre tre repository nella prima situazione che descrivi, perché altrimenti quando correggi bug nel codice condiviso, dovrai ricordarti di farlo in entrambi i punti.

Ci sono diversi modi di organizzare le cose in modo che tu possa far funzionare la libreria con i tuoi programmi.

  1. Puoi utilizzare git submodules

  2. Se utilizzi un IDE che ha un modo di gestire le dipendenze tra i progetti in uno spazio di lavoro (ad esempio Eclipse / Visual.Studio), puoi utilizzarlo

  3. Se stai lavorando in un linguaggio che ha uno strumento di compilazione in grado di gestire le dipendenze (es. Maven per Java, NuGet per C #, Cabal per Haskell, ecc.) puoi usare anche questo.

Per quanto riguarda il tuo secondo scenario, vorrei rifattorizzare il progetto in modo che il più possibile diventi una libreria / framework, quindi utilizzare lo stesso approccio per questo.

    
risposta data 14.03.2016 - 08:53
fonte

Leggi altre domande sui tag