2012-11-06 7 views
5

Ho un progetto che consiste di una biblioteca e di diverse applicazioni:git funzionalità di sottomodulo con fratello?

foo/ 
foolib/ 
bar/ 
baz/ 
qux/foo/ 

Tutte le applicazioni di collegamento contro foolib, una libreria statica.

Vorrei git commit su foo per registrare l'ID SHA1 di dove foolib era, e anche git status su foo segnalare se ci sono modifiche non in foolib.

Tuttavia non voglio spostare foolib per avere una copia di esso come una sottodirectory di ogni applicazione. Oltre a essere abbastanza voluminoso, questo perderebbe la possibilità di provare alcune modifiche a foolib in più applicazioni senza commettere le modifiche.

Ho provato a creare un file .gitmodules che punta a ../foolib ma sembra essere completamente ignorato da stato git. Ho anche provato a fare foolib un link simbolico all'interno foo, ma git sembrava di trattare il link simbolico come un file invece di seguire il link.

È ciò che voglio o avete soluzioni di flusso di lavoro alternative?

Nel mio repository pubblico, la struttura è la stessa e ogni applicazione (e foolib) è stata clonata individualmente dal pubblico.

risposta

1

L'idea sarebbe quella di creare un'altra repo fooProject, che dichiarare come sottomoduli:

  • foo
  • foolib

(Se si chiama il progetto principale appProjects invece di fooProject, è possibile dichiarare come sottomoduli tutte le sottodirectory: foo, foolib, bar, baz, ...)

Se una delle sotto-directory (o foofoolib) cambia e fa un nuovo commit, si torna al repo genitore e impegnarsi così, al fine di registra lo SHA1 dei diversi sottomoduli.