2010-12-27 8 views
1

Ich habe ein Projekt, das ich aus CodeIgniter entwickelt habe. Der Hauptteil des Projekts ist ein privates System, das ich erstelle, aber ich möchte es der Quellcodeverwaltung hinzufügen, um alle damit verbundenen Leckerbissen zu erhalten. Jetzt benutze ich Mercurial, also habe ich das ganze hg init Bit gemacht, also habe ich das Repository eingerichtet.Ein Mercurial-Repository automatisch importieren (z. B. SVN Externals)

Nun, eines der Dinge, die ich getan habe, ist eine Bibliothek für CodeIgniter, die ich in diesem Projekt verwenden. Jetzt möchte ich diese Bibliothek öffnen, also brauche ich ein separates Repo dafür.

Für alle, die nicht mit CodeIgniter Bibliotheksentwicklung, hier ist eine Referenz:

application 
    /config <- configuration files 
    /libraries <- library logic in here 

Jetzt werde ich wohl noch ein paar Bibliotheken im Laufe dieses Projektes entwickeln, so kann ich in der nicht nur ein Repo-Dump Anwendungsordner, ohne sie alle zu verklumpen.

Was ich dies tat, war:

dev/ci/library <- library here 
dev/project <- project here 
Jetzt

in diesen beiden Ordnern ich ein Repository gemacht haben. Ich möchte, dass das Projekt-Repository automatisch auf das Bibliotheks-Repository verweist, so dass ich ein privates und ein öffentliches Repository haben kann, wie ich bereits erläutert habe.

Der Hauptweg, um dies zu tun, habe ich gelesen, ist die Verwendung von Subrepositories, aber ich kann nur Beispiele auf verschachtelten finden (die sowieso unklar sind, finde ich). Wie referenziere ich ein anderes Repository wie svn: externals?

Antwort

3

Sie sind korrekt, Subrepos in Mercurial (oder Submodule in Git) basieren auf einer verschachtelten Organisation.
Aber in Ihrem speziellen Fall benötigen Sie:

  • zwei separate repos,
  • nicht
  • verschachtelt

Eine Möglichkeit, beiden Organisationen in Einklang zu bringen (Ihre eigenen und das verschachtelte "subrepo") wären zu haben drei repos

  • ein Elternteil repo (privat eine, wie in zu einem privaten repo geschoben werden kann)
  • das Projekt (privat ein, wie in der zu einem privaten Repo geschoben werden kann)
  • die Bibliothek (öffentlich ein, wie auf einen öffentlichen Repo geschoben werden kann)

, dass die folgenden geben würde:

/dev 
    .hg (private repo) 
    .hgsubs (declare the two nested repos 'project' and 'ci/library') 
    project 
    .hg (private repo for your project) 
    config 
    .hgignore (for ignoring anyhting from libraries) 
    libraries (private directory, not version) 
     (symlink to /dev/ci/library) 
    ci 
    library 
     .hg (public repo 

auf diese Weise halten Sie:

  • Ihre beiden Repo trennen, wie Sie wollen
  • eine Verbindung zwischen den beiden, um in der Lage zu sein, diese beiden Repo an der genauen Referenz zurück zu bekommen, die Sie ihnen (d. h. du hast zuletzt alle diese Repos gedrückt).
+0

Aha, ich denke ich habe eine geniale Idee damit, muss aber meine Symlinks auffrischen. Definitiv als Antwort markieren. –

+0

Ja, wenn ich es wie gesagt eingerichtet habe, dann führe einen Symlink von/dev/project nach/www/project aus, es erlaubt mir Debug-Tests durchzuführen und es mir dann leichter zu main/debug zu migrieren Version später (was ich sollte, aber nie tun). –

+0

@ dawmail333: Das einzige Problem mit meinem Vorschlag ist das Betriebssystem muss Symlink unterstützen, die Windows ausschließen würde. Aber in Ihrem Fall kann das funktionieren. – VonC

Verwandte Themen