Frage

Ich bin mit TortoiseHg 0,5 auf Vista64 (die Mercurial 1.0.2 enthält). Mein Verständnis von der Mercurial Buch ist, dass Mercurial Dateinamen in einem Fall behandeln soll -insensitive Weise auf Groß- und Kleinschreibung Dateisystem (zB NTFS, das ist, was ich bin auf). Allerdings finde ich, dass meine Installation von Mercurial in der Tat ist empfindlich gegenüber Fall:

>hg status -A foo
C foo
>hg status -A FOO
? FOO

Könnte dies einen Fehler in Mercurial sein, um einen Fehler in der TortoiseHg Build von Mercurial, oder ist es etwas anderes? Wie kann ich Groß- und Kleinschreibung Dateinamen Handhabung von Mercurial unter Windows erreichen?

War es hilfreich?

Lösung

Dieses Problem wurde in Mercurial 1.1 behoben! href="http://www.selenic.com/mercurial/wiki/index.cgi/WhatsNew#head-b1d1f9a535adb686d6e0a490e049261313f10d7d" aus dem Release Notes : „Improved Korrektheit im Gesicht von casefolding Dateisystemen“.

Unter Windows Mercurial ignoriert nun Fall in seine Befehlszeilenargumente:

>hg status -A foo
C foo
>hg status -A FOO
C foo

Und es ist auch bekannt, dass Dateinamen Änderungen, die nur Fall beinhalten keine neuen Dateien:

>ren foo FOO
>hg status -A fOO
C foo

So gibt es keine Gefahr mehr Änderungen mit Blick aufgrund mistypes auf der Kommandozeile.

jedoch bewusst sein, dass der Inhalt der Datei .hgignore sensiblen Fall bleiben Dies ist ein Problem nur, wenn Sie glob Syntax verwenden. mit regexp-Syntax können Sie (? i) zu Beginn von Mustern setzen, um sie unempfindlich zu machen.

Andere Tipps

Ich glaube, Sie die hgbook falsch gelesen. Das Intro zu Abschnitt 7.7 wird nur die Beschreibung die drei verschiedenen Arten von Groß- und Kleinschreibung, die in Oss vorhanden ist, nicht sagen, dass Mercurial diese Semantik spiegeln wird.

später in Abschnitt 7.7.2 'Erkennen Fall Konflikte' heißt es:

  

Beim Betrieb im Arbeits   Verzeichnis, Mercurial ehrt die   Namenspolitik des Dateisystems, wo   das Arbeitsverzeichnis befindet. Wenn   das Dateisystem Fall erhalten, sondern   unempfindlich, Mercurial behandeln wird   Namen, die nur im Fall unterscheiden sich die   gleich.

Wenn Sie den Prozess zu tun hg status -A FOO, die in Mercurial geschieht ist:

  1. Überprüfen Sie, ob eine Datei auf dem Dateisystem vorhanden ist das Dateiargument übereinstimmt, ‚foo‘, - und an diesem Punkt Fall ist es unempfindlich, so dass es ‚foo‘ findet und sagt: „Ja, ich habe eine Datei bekam“
  2. Überprüfen Sie, ob es einen Eintrag in der Manifest-Datei das Dateiargument übereinstimmt, ‚foo‘, und es ist nicht so Status zeigt ein ‚?‘ es ist eine Datei auf der Festplatte selbst, dass hg nicht
  3. verfolgt

Um besser sehen Mercurial nicht über Fall Pflege auf NTFS Sie die folgenden Schritte:

  1. hg init
  2. echo line> Foo
  3. hg hinzufügen Foo
  4. hg commit -m 'begangen Foo'
  5. bewegen Foo nicht-foo
  6. bewegen nicht-foo FOO
  7. hg status

und Sie sollten sehen, hg sagen, dass sich nichts geändert hat, weil das einzige, was sich geändert hat, der Fall ist, die hg für Sie ignoriert.

Wenn ich das gleiche tun auf Linux ich stattdessen sehen:

! Foo
? FOO
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top