2010-12-21 13 views
0

Ich habe ein Repository auf meinem lokalen Rechner, der unter SVN ist. Aus verschiedenen Gründen ist der SVN-Zweig, an dem ich arbeite, gesperrt, und ich soll keinen weiteren Zweig machen. Ich würde gerne in der Lage sein, viele lokale Commits über Mercurial zu machen und dann diese Änderungen auf ein Netzlaufwerk zu kopieren/zu übertragen, so dass sie jede Nacht gesichert werden. Wenn der SVN-Zweig wieder geöffnet ist, werde ich die letzten Änderungen auf ihn übertragen.Was ist die beste Strategie für das automatische Klonen eines Repos auf ein Netzlaufwerk?

Nichts davon scheint ungewöhnlich. Ich habe mein lokales Repo gemacht, einige Änderungen daran vorgenommen und sie engagiert. Dann machte ich ein leeres Repo auf dem Remote-Laufwerk und versuchte hg push die Änderungen. Nach einigen Stunden waren es nur noch 33%. Der Gesamtrepo beträgt etwa 80 MB (6,7 GB Dateien im Code-Ordner). Ich möchte wirklich nicht den ganzen Tag warten, jedes Mal wenn ich einen Commit mache.

Ich entschied mich, die hg push zu packen und stattdessen hg clone zu verwenden.

Es ging so (mit Powershell):

PS C:\Dev\Projects\Project1> hg status 
PS C:\Dev\Projects\Project1> hg clone H:\Repo\Projects 
**abort: repository H:\Repo\Projects not found!** 

Ok, also muss ich anscheinend ein Repository in H: \ Repo \ Projects. Also gehe ich dorthin und benutze hg init, um ein leeres Repository zu erstellen. Danach habe ich versuchen Sie dies:

PS C:\Dev\Projects\Project1> hg clone H:\Repo\Projects 
destination directory: Projects 
**abort: destination 'Projects' is not empty** 

Was hier nicht Mercurial wollen? Ein leeres Verzeichnis? Nun, nein, dann kann es kein Repo finden. Ein leeres Repo? Nein, dann sagt es mir, dass das Ziel nicht leer ist. Ein brandneuer Ordner wie hg clone H:\Repo\Projects\TheNewFolder? Nein, dann bekomme ich eine Repo nicht gefunden Nachricht.

Was ist der beste Weg (oder irgendein) Weg, dies zu tun? Ich stehe zwischen "dauert den ganzen Tag" oder "funktioniert überhaupt nicht".

Antwort

2

Wenn Sie in C:\Dev\Projects\Project1 sind und Sie wollen es klonen zu H:\Repo\Projects der Befehl cd .. von hg clone Project1 H:\Repo\Projects gefolgt, die sagt Klon Project1 dort. Sie haben versucht, H:\Repo\Projects in das aktuelle Verzeichnis zu klonen.

Klon wird nicht schneller als Push - Klon ist nur hg init ; hg pull.

Es gibt keinen Grund, warum Ihr 80MB Repo (es sei denn, Sie dachten 80GB) mehr als ein Blinzeln braucht, um zu einem neuen leeren Repo zu drücken/ziehen. Wenn es 80GB war, wird es nur langsam sein, und einmal wird Push/Pull einfach das neue Changeset senden.

+0

Es scheint, dass Sie Recht haben. Der Punkt war alles was ich brauchte. Die Fehlermeldungen hier waren äußerst wenig hilfreich. Re: langsam: Es könnte unser Netzwerk sein. Das Repo ist 80 MB. Ich vermute, ich könnte es zu Bitbucket schieben und schneller in ein neues Verzeichnis runterziehen! – jcollum

+0

Nun, in der Verteidigung dieser Fehlermeldungen war der Unterschied zwischen "Kopie a b" und "Kopie b a", die, wenn a eine Datei und b ein Verzeichnis ist, Ihnen in jedem System sehr unterschiedliche Fehlermeldungen geben wird. –

+0

Die Fehler sagten mir wirklich nicht, dass ich 2 Argumente brauchte. Es schien sicher anzunehmen, dass es, wenn es nur einen Arg hatte, den aktuellen Repo an einen entfernten Ort kopieren würde. Während ich schreibe, kann ich sehen, wie die Logik in beide Richtungen gehen könnte ... Ich denke, ich würde es vorziehen, wenn es nur sagt "Du musst 2 Argumente haben". – jcollum

0

Sie müssen wirklich Ihre Frage neu formulieren, aber ich schätze, Sie müssen die Dateien hinzufügen und commit, überprüfen Sie auch die convert extension.

hg add -a 
hg commit -m 'initial' 

bearbeiten das Verzeichnis, das Sie in bereits Klonen sind ein Verzeichnis hat Projekte genannt, entfernen oder umbenennen.

+0

Sie meinen die Dateien in der Quelle Repo? – jcollum

+0

Ich versuchte hg Klon in ein Verzeichnis, das nicht existierte und einen Fehler bekommen. – jcollum

+0

** Abbruch: Ziel 'Projekte' ist nicht leer ** << Es gibt ein Verzeichnis mit dem Namen ** Projekte **, wo immer Sie versuchen zu klonen. – OneOfOne

Verwandte Themen