2012-04-02 13 views
1

Wir haben mehrere Produktlinien, die um einen gemeinsamen Kern herum aufgebaut sind und sie derzeit in SVN unter Verwendung von externen Quellen pflegen. Wenn Sie zu mercurial wechseln, ist es natürlich, sich zu bewegen, um hg sub-repositories zu verwenden.Gemeinsame Nutzung einer Codebasis zwischen mehreren Projekten

Die Sache ist der Kern ist ziemlich groß (wahrscheinlich> GB, nach dem SVN Repo), und ein typischer Entwickler möchte manchmal gleichzeitig auf mehreren Produkten, sagen 3-4.

Habe ich es richtig verstanden, dass es normalerweise bedeutet, dass ein Entwickler den Kern 3-4 Mal für jeden Entwickler repliziert hat, mit seiner gesamten Geschichte? Wenn ein Entwickler eine einfache Operation in einem anderen Produkt durchführen möchte, würde dies bedeuten, dass der Kern zuerst gezogen werden muss, obwohl er bereits auf dem Client verfügbar ist (mehrere Male ...)?

Antwort

0

Um das Subrepository wirklich zu teilen (und nicht seine Arbeitskopie), können Sie das share extension verwenden. Das macht den Klonprozess jedoch etwas kontraintuitiv:

hg clone -U remote_core core 
hg clone -U remote_projectA projectA 
cd projectA 
hg share ../core core 
hg update 
cd .. 
hg clone -U remote_projectB projectB 
cd projectB 
hg share ../core core 
hg update 

Und so weiter. Aber ich warne Sie, dass Sie mit diesem Setup mehr als nur Kopfschmerzen haben werden. Bei der Arbeit haben wir ein ähnliches Setup, aber stattdessen hat das gemeinsam genutzte Subrepository für jedes Projekt, das es verwendet, eine Verzweigung (keine benannte Verzweigung, sondern eine Klon-Verzweigung, ein dediziertes Master-Repository). Auf diese Weise können Projekte den gemeinsam genutzten Code unabhängig modifizieren, während sie dennoch einfach zusammengeführt werden können.