tortoisehg und subrepos

8

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

%Vor%

in Tortoisehg customer1\project1 wird mit dem Status S (subrepo) angezeigt aber beim Commit bekomme ich eine Nachricht

%Vor%

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. "

    
adrianm 20.03.2010, 19:51
quelle

5 Antworten

9

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.

    
markhoward02 04.11.2010, 05:15
quelle
7

Ich war in der Lage, dieses Problem zu umgehen, indem ich über die Befehlszeile für das Hauptrepo festlegte.

%Vor%     
Richard Garside 21.11.2012 17:07
quelle
4

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).

    
Michael S. 04.07.2013 11:49
quelle
2

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!

    
Neil Trodden 22.03.2010 22:45
quelle
0

Hinzufügen meiner 2 Cent.

Ich habe diesen Fehler abort: customer1/project1: no match under directory unter Windows im folgenden Szenario erhalten:

  • repo befand sich in einem Ordner namens MyFolder (beachten Sie den Großbuchstaben)
  • Repo hatte eine Subrepo
  • Einige Dateien (nur einige!) im Parent-Repo wurden mit myfolder/filename.ext (beachten Sie den Kleinbuchstaben)
  • festgelegt

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)

    
jazzcat 11.12.2016 21:26
quelle

Tags und Links