Wie finde ich die Größe eines Merkur-Repository heraus?

8

Wenn zum Beispiel ein Merkur-Repository Ссылка vorhanden ist, gibt es einen Befehl, der es mir erlaubt, dessen herauszufinden Größe vor dem Klonen? Etwas wie

%Vor%

Gibt es auch einen Befehl für Subversion-Repositories?

    
shafty 31.08.2012, 16:18
quelle

2 Antworten

4

Die Größe auf der Festplatte unterscheidet sich von der Bandbreite, die zum Erstellen eines Klons verwendet wird. Einige Hosting-Sites (z. B. Bitbucket) zeigen die Größe auf der Festplatte an, sodass Sie im Voraus wissen, wie viel Speicherplatz auf Ihrem System vor dem Klonen benötigt wird. Aber ich kann sehen, dass Google Code das nicht tut, also wird es dir hier nicht helfen.

Das Mercurial Drahtprotokoll stellt keine Befehle zur Verfügung, die Ihnen sagen können, wie groß ein Repository ist. Wenn Sie einen normalen Klon erstellen, weiß der Client nicht im Voraus, wie viele Daten er empfängt. Er empfängt nur einen Datenstrom. Nach Erhalt des Changelogs weiß der Client, wie viele Manifeste und Datei-Logs zu erwarten sind, aber er weiß nicht die Größe von ihnen.

Tatsächlich ist es für den Server schwierig zu berechnen, wie viele Daten ein Klon verwenden wird: Die verwendete Netzwerkbandbreite ist geringer als der Speicherplatz, da die verwendete Komprimierung anders ist (bzip2 vs gzip). Wenn Sie jedoch --uncompressed mit Ihrem Klon verwenden (was Google Code nicht unterstützt), gibt es einen Trick, siehe unten.

Die einzige Möglichkeit zu wissen, wie viel Bandbreite ein Klon nutzt, ist, einen zu erstellen. Wenn Sie bereits einen Klon haben, können Sie mit hg bundle einen Klon simulieren:

%Vor%

Die Größe des Pakets sagt Ihnen, wie viele Daten im Repository vorhanden sind.

Ein Trick: Wenn Google Code hg clone --uncompressed unterstützt hat, könnten Sie damit die Größe eines Remote-Repositorys ermitteln! Wenn Sie --uncompressed verwenden, fordert der Client den Server auf, den Inhalt des Verzeichnisses .hg/ unverändert zu senden, ohne ihn mit bzip2 erneut zu komprimieren. Praktischerweise startet der Server den Stream, indem er dem Client die Größe des Repository mitteilt . Sie können also einen solchen Klon starten und ihn dann (mit Control-C) abbrechen, wenn Ihr Client die Zeile mit der Größe des Repos ausgedruckt hat.

    
Martin Geisler 01.09.2012 09:36
quelle
2

Update: Meine Antwort unten ist falsch, aber ich verlasse es hier, da MG als Antwort einige gute Informationen geliefert hat. Es scheint, als wäre die richtige Antwort "Nein".

Kein guter Weg, aber eine Art Umgehung. A hg clone URL ist wirklich nur hg init ; hg pull URL Und der Befehl hg incoming sagt dir, was du bekommen würdest, wenn du einen Pull gemacht hättest, also könntest du:

%Vor%

und erraten Sie ziemlich gut, wie viele Daten Sie herunterziehen werden, wenn Sie folgendes tun:

%Vor%

Ich bin mir nicht sicher über die Netzwerkeffizienz von hg incoming , aber ich glaube nicht, dass es alles von den Änderungssets herunterlädt, obwohl ich mich dabei irren könnte. Es bietet eine Option --bundle , die alle eingehenden Pulldowns in einer Datei speichert, aus der Sie später ziehen können, um ein doppeltes Herunterladen zu vermeiden.

    
Ry4an Brase 01.09.2012 00:31
quelle

Tags und Links