Domanda

Usiamo GIT per gestire il nostro progetto.

Ogni progetto ha un "core" (come un quadro da chi avremo costruito il progetto) Così ogni progetto ha almeno 2 telecomandi rami:

  • 1 repository che tale quadro nucleo.
  • 1 repository per ogni progetto client.

Abbiamo anche moduli. Ciascun modulo ha un nucleo che contiene il functionnality base, e ci personnalize ciascun modulo da tale base per ogni cliente.

  • Quindi dobbiamo sottomoduli che sono inclusi in ciascun progetto client
  • Ma non riesco a capire come gestire la parte personnalization dei moduli.

Come può GIT aiuto me se voglio aggiungere alcuni nuovi file in un modulo che deve essere utilizzato solo in 1 particolare progetto cliente?

Mentre i file vengono thoses Personnalized per il progetto principale, il caso migliore sarebbe quella di commettere alcuni file contenuti all'interno del modulo nel ramo progetto client, ma sembra che non posso in quanto ogni modulo sono indipendenti.

Ps .: Usiamo SmartGit.

È stato utile?

Soluzione

Questo è uno scenario in cui è possibile utilizzare git-sottostruttura (la fusione)

Se sono state apportate modifiche alle altre proiettare nel proprio repository, si può voglia di fondere dal progetto. Questo è possibile utilizzando sotto-albero - è in grado di spostare i percorsi nel vostro albero e poi si può unire solo il relativo parti del vostro albero.

http: // www. kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

L'idea della fusione sottostruttura è che si dispone di due progetti, e uno dei progetti mappe per una sottodirectory della altra e viceversa. Quando tu specificare un merge sottostruttura, Git è intelligente abbastanza per capire che uno è un sottostruttura dell'altro e unione in modo appropriato -. è piuttosto sorprendente

http://progit.org/book/ch6-7.html

Ma suppongo che si desidera utilizzare moduli e non allontanarsi da esso.

Altri suggerimenti

Non posso in quanto ogni modulo sono indipendenti.

Se è vero un modulo è "indipendente", dal momento che ha una propria serie di commit e rami come un singolo repository, è ancora possibile definire una branca cliente-progetto su detto modulo.

Quel ramo sarebbe stato definito nel repository principale cliente del progetto, così come nel modulo di base, al fine di isolare i cambiamenti specifici di un progetto client fatto in entrambi i pronti contro termine.
Quando si preme di nuovo quei cambiamenti fatti in sottomoduli di base, li spinge in un ramo client-progetto il cui nome corrisponde al nome del ramo client utilizzato nel vostro repo genitore cliente.

Così, in breve, una convenzione di denominazione potrebbe aiutare a isolare piccola specifica cambiamenti fatti in un modulo di base utilizzato e condiviso da molti pronti contro termine client del progetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top