Domanda

Quando si usano i sottomoduli git, qual è il modo preferito di personalizzare? Dovrei ...

  • biforca il progetto e segui il fork
  • tenta di sovrascrivere il comportamento predefinito
  • apporta le modifiche localmente

Se nessuna di queste ha senso, allora cosa fa?

È stato utile?

Soluzione

Non sono sicuro che la tua domanda implichi che tutti i progetti che desideri includere siano già progetti git o che siano attualmente svn, mercuriali, non controllati da versioni. Se è quest'ultimo, dovrebbe essere una risposta caso per caso.

Molto probabilmente, i progetti che vuoi includere e personalizzare sono già su, diciamo, github e quindi dovresti assolutamente attraversare github e usare quelle forcelle come sottomoduli. Qualsiasi personalizzazione deve essere archiviata e inviata a github.

Potrebbe essere più complicato se i progetti che vuoi includere sono altrove (o sono basati su svn, mercurial, ecc.). Un modo è di forkare i progetti localmente e quindi impostare cron-jobs per inviare a github qualsiasi modifica in arrivo. Cioè, crea specchi github. Per avere il controllo totale sia della fusione che dell'aggiornamento, potresti dover forkare quei mirror e includere quelle fork come sottomoduli nel tuo progetto, controllando le personalizzazioni locali e spingendole al fork del mirror.

L'alternativa n. 3, fork di progetti e solo check-in locali, potrebbe essere utilizzata in situazioni in cui non si hanno le opzioni di cui sopra e ciò che si sta creando non è realmente destinato a essere facilmente distribuito.

Il patching delle scimmie (alternativa n. 2 nell'elenco) dovrebbe essere un'alternativa lasciata alle situazioni in cui non si desidera che un progetto dipenda dal fatto che si tiene aggiornato un fork personalizzato con le modifiche a monte.

Altri suggerimenti

Trovo che i progetti secondari di forking usando git submodule siano estremamente noiosi, motivo per cui ho scritto git subtree invece.

L'idea di git subtree è di importare i contenuti del sottoprogetto nel proprio progetto, quindi si dirama tutto in una volta e si effettuano nuovi commit come preferisci. Quindi, quando sei pronto (se mai), puoi utilizzare git subtree split per estrarre la cronologia del sottoprogetto e inviarla a monte.

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