Ist das Subprepos-Feature in Mercurial 1.4.x produktionsbereit?

8

Ich möchte Mercurial für meine Arbeitsprojekte evaluieren. Aber die meisten meiner Projekte sind sehr stark auf die Unterstützung von svn: externals angewiesen. Ich habe über StackOverflow gesucht und für entsprechende Unterstützung in Mercurial gegoogelt. Alles, was ich gefunden habe, ist Subrepo Feature in Mercurial 1.3 hinzugefügt, aber die Seite für dieses Feature sagte:

  

Subrepos sind ein experimentelles Feature für Mercurial 1.3. Tun Sie das also nicht in missionskritischen Repositories!

Ich möchte nicht etwas instabiles verwenden.

Kann irgendjemand etwas über den wahren Status dieses Features und die Pläne, es zu polieren / zu beenden und wann es als "stabil" und bereit für Mission-Critical-Repositories bezeichnet wird, beleuchten?

    
bialix 06.02.2010, 16:08
quelle

2 Antworten

6

Das Wort im #mercurial-IRC-Kanal besagt, dass Subrepos weiterhin so funktionieren, wie sie es tun, und die Unterstützung wird wachsen. Zum Beispiel ist der Befehl 'hg status' derzeit nicht Subrepo-bewusst - es funktioniert, es rekrutiert einfach nicht, aber das wird es in der Zukunft sein. Die aktuellen Verhaltensweisen, Dateiformate (.hgsub und .hgssubstate), werden jedoch nur auf abwärtskompatible Weise geändert.

Also, machen Sie weiter und zählen Sie jetzt darauf und freuen Sie sich darauf, besser zu werden.

P.S. Seit mercurial 1.4.2 können die Subrepos jetzt Subversion-Repos sein, also können Sie einen quartären Elternteil und ein Svn-Kind verwenden.

    
Ry4an Brase 06.02.2010, 21:54
quelle
1

Ich hatte viel Glück mit der Funktion in meinem (leichten) Gebrauch davon bis jetzt. Es ist an zwei Stellen nützlich:

  1. Einen Baum von nicht verwandten Repositories mit einem einzelnen hg pull -Befehl sichern.
  2. Verknüpfen eines Projekts mit bestimmten Versionen seiner Abhängigkeiten, sodass ein einzelner hg clone einen Build-Quellcode erhält. Dies ist näher an der typischen svn:externals Nutzung.

Hier sind ein paar der Einschränkungen, die ich bisher gesehen habe:

  1. Im obigen Fall 1 müssen Sie alle Subrepos auf einmal festlegen. Dies ist nur gelegentlich ärgerlich, da Mercurial (wie jeder DVCS) häufige Commits befürwortet - so dass die meisten Repos nicht in einem unvollständigen Zustand herumstehen müssen.
  2. Nur die einfachsten Mercurial-Befehle sind unterrepräsentativ: clone , push / pull , update / commit und vielleicht noch ein paar andere.
  3. Autoren von Erweiterungen benötigen Zeit, um ihre Erweiterungen gegen Repositories mit Subrepos zu testen.

Wenn das Mercurial-Team das Feature als "experimentell" bezeichnet, heißt das nicht, dass es plötzlich entscheiden wird, alle Ihre Daten zu löschen. Sie bedeuten nur, dass sie nicht alle Randfälle wie Namenskonflikte codiert haben (z. B. fügt ein Entwickler einen Unterbericht namens README hinzu, während ein anderer Entwickler eine Textdatei namens README hinzufügt).

    
undees 06.02.2010 21:35
quelle