Ich kann Tortoisehg (1.0) nicht mit Subrepos arbeiten
Ich habe eine Verzeichnisstruktur wie folgt:
%Vor%Die .hgsub-Datei unter root sieht wie
aus %Vor% Wenn Sie die Datei Customer1\Project1\foo.txt
und commit von der Wurzel aus ändern, funktioniert
in Tortoisehg customer1\project1
wird mit dem Status S
(subrepo) angezeigt
aber beim Commit bekomme ich eine Nachricht
Wird dieses Szenario nicht unterstützt oder mache ich etwas falsch?
Das Dokument sagt:
"TortoiseHg 1.0 hat rudimentäre Unterstützung für Subrepositories und nur im Commit / Status-Tool eingeführt. Wenn Mercurial einen Subrepo als schmutzig ansieht, wird er im Commit-Tool als spezieller Eintrag angezeigt in der Dateiliste mit einem Status von S. Wenn ein Subrepo in der Dateiliste eines Commits enthalten ist, wird der Subrepo zusammen mit den anderen Änderungen festgeschrieben, wobei die .hgssubstate-Datei im Haupt-Repository-Root aktualisiert wird. "
Ich hatte fast das selbe Problem und begann eine ganze Reihe von Variationen auszuprobieren, und schließlich funktionierte es für mich mit einem Schrägstrich (/) auf beiden Seiten des Gleichheitszeichens und nicht mit einem Schrägstrich (\ ) überall.
Also versuchen Sie ...
%Vor%Auch wenn es nicht funktionierte, enthielt meine .hgssubstate-Datei nur eine Reihe von Nullen. Als es anfing zu arbeiten, hatte es eine echte GUID drin.
Ich war in der Lage, dieses Problem zu umgehen, indem ich über die Befehlszeile für das Hauptrepo festlegte.
%Vor%Ich hatte das gleiche Problem:
In einem meiner Repositories ist die Übergabe eines meiner geänderten Subrepo-Module mit der Nachricht
fehlgeschlagen %Vor%Der Grund:
TortoiseHG kann das Subrepository nicht übernehmen, weil es für Ordnernamen die Groß- / Kleinschreibung beachtet !
Beispiel: Ihr ursprüngliches Repository:
%Vor%Klonen Sie dies als eine Unterrepo in ein anderes Repository über die Befehlszeile
%Vor%erstellt einen Subrepo-Ordner mysubrepo in Ihrem übergeordneten Repository. Fügen Sie es wie gewohnt zur Datei .hgsub hinzu (ich verwende immer das plattformunabhängige '/' anstelle von '\', daher glaube ich nicht, dass dies der Grund für den Fehler ist). Der Versuch, mit --subtrepos TortoiseHG zu committen, endet mit dem "no match under directory!" Error. Das Commit über die Befehlszeile funktioniert jedoch.
Nach Umbenennung des Subrepo-Ordners mysubrepo in MySubRepo (wie der ursprüngliche Ordner mit Großbuchstaben) konnte TortoiseHg erfolgreich committen!
Vielleicht müssen Sie den Ordnernamen auch in der hgrc -Datei bearbeiten, aber ich bin nicht sicher, ob dies wirklich notwendig ist, weil ich ihn in der Datei umbenannt habe, bevor ich herausgefunden habe, dass es solche gibt Unterschiede zwischen den einzelnen Dateien im Ordnernamen. Es kann auch erforderlich sein, das Repository aus der Repository-Registrierung der TortoiseHg Workbench zu entfernen und es erneut zu lesen (und / oder auch die Workbench neu zu starten).
Ich denke, Ihr Problem besteht darin, "Customer1 \ Project1" als Unter-Repository anzugeben, weil Kunde1 ebenfalls ein geschachteltes Repository sein sollte.
Kunde1 und Kunde2 sollten beide ".hgsub" -Dateien haben, die die darin enthaltenen Unterberichte beschreiben ( Projekt1 / 2 )
Erstellen Sie Ihr Repository Customer1 woanders und klonen Sie Project1 und Project2 hinein. Fügen Sie die Einträge Project1 und Project2 zur Datei ".hgsub" in Kunde1 hinzu.
Machen Sie dasselbe für ein Repository Customer2 .
Denken Sie daran, dass geschachtelte Repositories selbst verschachtelt sein können. Erstellen Sie ein "root" -Repository und klonen Sie Kunde1 und Kunde2 hinein und merken Sie sich, dass es hinzugefügt wird Einträge in die .hgsub-Datei.
Commit 'root' und Sie sollten in Ordnung sein.
Der Schlüssel besteht darin, Änderungen von allen Instanzen eines Subrepos auf seinen Klonmaster zu übertragen, damit andere Klone, die diese Subrepos enthalten, diese Revision bei Bedarf abrufen können.
Ich habe alle Master-Repos im selben übergeordneten Ordner auf meinem Computer, so dass relative Pfade in ".hgsub" -Dateien wie "../Project1" oder "../Customer1" eingefügt werden können meine lokalen Klone von unserem zentralen Server.
Was die Verwendung von TortoiseHG betrifft, werden Sie mit v1.0 gut zurecht kommen, da die .hgssubstate-Datei in einem verschachtelten Repository erstellt und verwaltet wird, solange Sie die .hgsub-Datei bereits erstellt haben!
Hinzufügen meiner 2 Cent.
Ich habe diesen Fehler abort: customer1/project1: no match under directory
unter Windows im folgenden Szenario erhalten:
MyFolder
(beachten Sie den Großbuchstaben) myfolder/filename.ext
(beachten Sie den Kleinbuchstaben) Alles funktioniert gut, Commandline-Commits funktionieren gut, aber Tortoise beschwert sich.
Benenne die Dateien um (finde die Kleinbuchstaben mit hg status --all
und es geht dir gut)
Tags und Links mercurial tortoisehg subrepos