2011-02-04 11 views
10

Per un po 'ho avuto solo il mio codice sotto il controllo del codice sorgente, ma ho deciso che sarebbe stato bello mettere cose come la mia nella mia cartella .vim tra le altre cose in un repository. (Ovviamente non ho intenzione di archiviare tutto nel mio repository, solo vari file di configurazione, la mia directory src, e forse anche qualche altra cosa)Inserire la directory home sotto il controllo del codice sorgente (hg)

Sono stato in grado di impostare un repo fine, quindi spingerlo a il mio server dove posso accedervi dagli altri computer, ma non posso clonarlo sugli altri computer. Quando provo a clonarlo fallisce perché la home directory non è vuota. C'è un modo per fare ciò che voglio qui?

risposta

8

Dal momento che i file di versione tra il mio computer sono gli stessi, quello che ho fatto è stato:

~$ hg clone ssh://myserver/hg/dotfiles mydotfiles 
~$ mv mydotfiles/.hg . 
~$ rm -rf mydotfiles 

e il gioco è fatto, ora la cartella principale è sotto controllo di versione, ma ovviamente se i tuoi file di punti non sono identici tra i computer, dovrai fare qualcosa al riguardo.

Dal momento che voglio solo alla versione alcuni file e non tutto sotto la mia cartella home, ho questa semplice regola in ~/.hgignore

# This .hgignore is for the dotfiles repository only, 
# the rest of my HG repositories use the file 
# .hgignore_global as referenced by [ui]'s ignore setting. 

syntax:glob 
* 

In questo modo non ho ricevuto un oceano di file quando faccio hg status e solo vedere quei file che ho sotto il controllo della versione che sono stati modificati.

Ma dal momento che io voglio vedere i file senza versione quando si lavora in un altro repository hg, ho questo nel mio file ~/.hgrc

[ui] 
ignore=/home/gajon/.hgignore_global 

E ~/.hgignore_global contiene alcuni filtri per i file temporanei comuni:

syntax: glob 
*.pyc 
*~ 
.*.swp 
.svn* 
*.svn* 
*.fasl 

syntax: regexp 
^\.pc/ 
+2

un'altra opzione era 'hg init' e 'hg pull' piuttosto che clone. –

+0

Ry4an, hai ragione. E questo potrebbe essere più appropriato; non è necessario creare una cartella piena di file e quindi 'rm -rf'ing it. Grazie! –

0

Nelle altre directory già esistenti, si potrebbe hg init, hg add ciò che si vuole, hg commit che, hg pull dalla repo centrale, e trattare con l'unione risultante.

+2

Ne hai hai provato questo? Funzionerà solo se forzerai la trazione. Personalmente, penso che la "copia della directory .hg" sia una risposta "più pulita" – Mikezx6r

1

Supponiamo di avere proj1 e proj2. proj1 è un repository mercuriale che si desidera clonare su proj2, ma proj2 contiene già file.

Prova questa:

hg clone proj1 proj3 
mv proj3/.hg proj2 
rmdir proj3 
cd proj2 
hg update -C -r tip 
+0

Puoi omettere l'opzione '-r tip' dell'ultimo comando - l'aggiornamento prende la revisione * tip * come predefinita. –

Problemi correlati