2010-04-24 5 views
5

Sto usando git come strumento di backup e 'profilo di roaming' per la mia directory $ HOME tra laptop e desktop.Git sta ignorando le directory .git nelle sottodirectory

Il mio problema è che sotto il mio $ HOME ho una directory di sviluppo con più progetti git su cui sto lavorando. Git non mi permetterà di aggiungere le cartelle sottodirectory .git. Quindi, per impegnarmi in questi progetti, devo inserire le modifiche nel mio repository git $ HOME, aprire il laptop (dove sono stati creati e .git dir exsits) e commettere.

Ho letto sui sottomoduli, ma non è proprio quello che voglio. Voglio solo che le cartelle .git dei bambini siano trattate come una qualsiasi vecchia directory in modo che io possa spostarle e ripristinarle.

Qualcuno ha fatto questo o ha un'idea di come vorrei?

+4

imho, questo è probabilmente lo strumento sbagliato per il lavoro. se vuoi sincronizzare il tuo laptop e desktop, potresti voler guardare all'unisono. se vuoi la versione di tutto il lavoro che fai in $ HOME, l'opzione più semplice è regolare rsyncs, ma ovviamente non è incrementale. avresti bisogno di un prodotto di backup incrementale, oppure puoi modificare qualcosa usando rsync e git –

+0

@Igor: sono d'accordo, in generale. Tuttavia, non devi necessariamente eseguire il rsync dei repository git: potresti facilmente creare script per spingerli/caricarli/aggiornarli alla rinfusa, anche se decidi che i sottomoduli non sono la soluzione giusta (anche se probabilmente potrebbero funzionare per questo scopo). – Cascabel

+0

rsnapshot può fare la cosa incrementale. onestamente i sottomoduli sono ciò che dovresti usare. Scriverò semplicemente uno script per trasferire tutti i repository. perché vuoi comunque la versione degli oggetti git? solo per facilitare il trasferimento? usa qualcos'altro anche questa NON è una domanda SO dovrebbe essere su SUPERUSER. perché la gente fa tutte queste domande non di programmazione su SO. – xenoterracide

risposta

0

mi sento di raccomandare uno script che avrebbero primo backup ogni .git progetti che avete sotto il vostro $ HOME: produrrà uno file di backup (ancora sotto la vostra $ HOME)
Vedi git bundle di più.

E poi, è possibile aggiungere/aggiornare quelli di backup (o "fascio") i file sul repo git principale (che contiene tutti i tuoi $HOME ad eccezione dei progetti .git)

Infine, è possibile esportare tutti il tuo $ HOME come un unico file con la stessa tecnica di backup Git (git bundle).

0

In passato ho utilizzato gibak, uno strumento di backup Git. Oltre a curare gli attributi dei file, si occupa anche dei repository Git all'interno della tua home directory.

Un disclaimer però. L'ho usato per un po ', ma a volte il backup è diventato corrotto. Non ho indagato su questo, ma ho il sospetto che abbia a che fare con il fatto che le applicazioni in esecuzione scrivono costantemente i dati nella tua home directory. A un certo punto, l'hash non corrisponde e devi fare alcune cose intelligenti per risolverlo (o avviare un nuovo backup).

Almeno provalo, potrebbe funzionare per te. Il problema che ho menzionato potrebbe anche essere causato da Git. Da quando ho provato questo 1.5 anni fa, potrebbe essere risolto nel frattempo.

2

Non farlo. È una cattiva idea perché stai creando un backup con versione di un repository con versione. Basta creare un backup da rsync (puoi ancora versione genitore usando git)

2

Sto usando personalmente git per sincronizzare alcuni dot-file come .profile o .vimrc. Per evitare problemi come il tuo, il mio git si trova in $ HOME/dot e i singoli file sono similati in $ HOME.