2010-08-30 9 views
11

Was ich will, ist bereits ein Mercurial RepositoryKönnen Mercurial-Repositories verschachtelt werden?

/User/peter/development 

und jetzt, wenn es passiert, für

/User/peter 

ein Repository hinzuzufügen, weil ich auf die Version .bashrc, .profile, oder vielleicht /User/peter/notes sowie auch wollen . Wird ein Repository über einem bereits vorhandenen Repository Konflikte für Mercurial verursachen?

Antwort

10

Alles wird gut.

Es scheint, dass Mercurial intelligent genug ist, um Unterverzeichnisse zu ignorieren, die bereits Repositories in ihnen haben. Hier ist ein Gespräch mit ihm:

$ mkdir outer 
$ mkdir outer/inner 
$ mkdir outer/sub 
$ echo red >outer/red.txt 
$ echo blue >outer/inner/blue.txt 
$ echo green >outer/sub/green.txt 
$ cd outer/inner/ 
$ hg init 
$ hg add 
adding blue.txt 
$ hg commit -m "create inner" 
$ cd .. 
$ hg init 
$ hg add 
adding red.txt 
adding sub/green.txt 
$ hg commit -m "create outer" 
$ hg status 
A red.txt 
A sub/green.txt 
$ hg commit -m "create outer" 

Wie Sie sehen können, wenn ich mit dem äußeren Repository hinzufügen, es ignoriert das innere Verzeichnis.

Wenn Sie besonders sicher sein möchten, können Sie das innere Verzeichnis zu Ihrem .hgignore hinzufügen.

+0

Keine Notwendigkeit, nichts in Ihre '.hgignore' zu ​​setzen - wie Sie sagen, wird Mercurial verschachtelte Repositories absichtlich ignorieren und dies ist genau, um Menschen (wie die Mercurial-Entwickler selbst ...) zu erlauben, ihre Home-Verzeichnisse zu versionieren :-) –

+1

@Martin: das würde es erklären! Ich schlug vor, .hgignore mehr als eine billige Angsttherapie für die OP als alles andere. –

+1

Tom: hehe, ich mag die Idee, Angst mit einer Dosis von '.hgignore' zu ​​heilen! :) –

1

Es gibt eine Funktion, die "subrepositories" 1.3, zu Mercurial in Version hinzugefügt wurde und in 1.5 unterstützt, die einige hg ermöglicht auf verschachtelte Repositories zu handeln Befehle rekursiv.

+0

Das ist gut zu wissen, aber der Link ist kaputt. [Dieser Link] (http://mercurial.selenic.com/wiki/Subrepository) funktioniert jetzt. – steampowered

+1

Die Subrepository-Funktion ist anscheinend ein [Feature of Last Resort] (http://mercurial.selenic.com/wiki/FeaturesOfLastResort) – steampowered