2012-10-01 23 views
20

Ho letto molto su quanto sia orribile il sottomodulo git, ma non sono sicuro che sia solo il lamento di persone che sentono limiti o se ha problemi seri (soprattutto riguardo al mio caso d'uso).Git usando sottostruttura o sottomodulo per gestire risorse esterne

Voglio solo includere pronti contro termine diversi nel mio repo come questo

website/ 
libs/ 
    js/ 
    fs-slides [external] 
    fs-dialog [external] 

e devono possibilità di aggiornare i pronti contro termine con facilità. Per quanto ho capito, non c'è una facile possibilità di includere solo un file da un repo, giusto? (Ma va bene.)

Devo utilizzare i sottomoduli per questo?
O ci sono problemi con esso? O la sottostruttura è molto più facile?

risposta

11

Il sottomodulo è adatto al tuo caso, soprattutto perché non ti interessa includere questi sottorepos nella loro sottodirectory.

Il principale problema serio che avrebbe potuto utilizzare moduli è durante l'aggiornamento di loro pur avendo gli aggiornamenti in corso, come descritto in "how exactly does git submodule work":

Se si dimentica di impostare un ramo quando si effettua impegna in sottomoduli, ha detto commit verrà effettuato su un HEAD distaccato e tali modifiche in corso verranno perse al successivo git submodule update (è possibile recuperarle tramite lo reflog, se attivato per il repo del sottomodulo).

Poi, come Michaelcomments, e come ho dettagliatamente nel link qui sopra, è necessario spingere il modulo al proprio monte prima di impegnarsi e spingendo il repo genitore (per evitare di spingere modulo Unpublish commit)

+1

Quando mettono commit in un sottomodulo dovresti anche ricordarti di 'git push'. Perché se non esegui un comando 'git commit && git push' nel tuo repository principale, stai spingendo un riferimento a un commit del submodule che non esiste da nessun'altra parte. – Michael

+0

@ Michael buon punto. L'ho incluso nella risposta per maggiore visibilità. – VonC

Problemi correlati