Ich gehe mit den "
Liebes Tagebuch, meine ersten Schritte in Mercurial" wahrscheinlich allen auf den Geist, bislang hat mich aber noch niemand hart genug beschimpft.
Wir wollen ein Subversion-Repo komplett von Subversion auf Mercurial bringen. Aus Delphi/C++-Builder-Sicht enthält es mehrere Projekte, die gehören aber alle zusammen. Jedes dieser Projekte benutzt externe Libraries aus anderen
SVN-Repos.
Es sieht so aus:
Code:
[Main]
doc
Core
src
(Lib1)
(Lib2)
Proj2
src
(Lib2)
Proj3
src
(Lib1)
(Lib3)
Wobei gilt: [Repo] und (über
svn:externals eingebundenes Repo).
In Subversion war das bislang eigentlich komfortabelst zu handhaben.
Ich bin ratlos, wie man das in HG umsetzen sollte:
- 1:1-Umsetzung: Dann hätte ich einen Haufen direkter Subrepos wie "Lib1_für_Proj3", "Lib1_für_Core"
- Die Projekte auch zu einzelnen Repos machen
- Die Projekte zu einzelnen Repos machen, und diese wieder in einem "Master-Repo" verpacken
Letzteres sähe dann so aus:
Code:
[Main]
doc
[Core]
src
[Lib1]
[Lib2]
[Proj2]
src
[Lib2]
[Proj3]
src
[Lib1]
[Lib3]
Das funktioniert erwartungsgemäß, mich stören hier allerdings zwei Dinge:
- Aus unerfindlichen Gründen dauert das Klonen von "Main" über Gigabit-Netzwerk mehrere Minuten. Auf der Platte landen dabei 40MB. Über Subversion war das eine Angelegenheit von fünf Sekunden.
- Wenn ich an "Core" etwas ändere muss ich jedes mal auch auf "Main" die Änderungen durchschleifen, also auf eine neuere Revision des "Core"-Subrepos upgraden. Beim pushen muss ich jedes mal "Main" und "Core" an den Server pushen.
Daher zwei Fragen:- Was wäre eurer Meinung nach die beste Aufteilung? Technisch gesehen sind die einzelnen Projekte alleine lauffähig, machen inhaltlich allein aber kaum Sinn.
- Kann man in TortoiseHG das "Über-Repo" automatisch aktualisieren lassen wenn man im Subrepo comittet?