Frage

Mit Mercurial, muß ich alle Dateien ignorieren, außer für diejenigen, die in einem bestimmten Verzeichnis mit dem Namen „Halter“.

Auf dem Gesicht der Dinge, das schien einfach Regex und negative Vorschau verwendet; jedoch, obwohl ich in der Lage bin meinen regex in Regex Buddy und anderen Werkzeugen, um zu überprüfen, in TortoiseHg, es funktioniert nicht wie erwartet.

Dateien:

  • junk \ junk.txt
  • Junk \ text
  • Bewahrer \ test \ test
  • Bewahrer \ test \ test2 \ hi.txt
  • keepersblah.txt

Nur die beiden Dateien unter Tierpfleger sollten nicht ignoriert werden werden.

Hier ist die regex ich gehofft funktionieren würde:

^(?!keepers/).+$

Leider bewirkt dies, dass alle Dateien ignoriert werden. Wenn ich es ändern:

^(?!keepers).+$

es funktioniert wie man es erwarten würde. Das ist es ignoriert alle Dateien / Ordner, die mit Haltern nicht starten. Aber ich mag Dateien ignorieren, die mit Haltern starten.

Seltsam, wenn ich es so weit ändern:

^(?!keepers/).+\..+$

Es wird richtig den Ordner übereinstimmen, aber es wird keine Dateien ignorieren, die nicht in den Haltern sind Ordner, wenn sie nicht über eine Erweiterung haben.

Jede mögliche Beratung verstanden werden.

Entfernen abgestorbener Images Link

War es hilfreich?

Lösung

Das Problem mit dem ersten Ausdruck ist, dass der Regex auch gegen „Halter“ selbst getestet wird. Dieser Fall kann mit einer zusätzlichen Bedingung hinzugefügt werden:

^(?!keepers(?:/|$))

oder (weniger kompakt, aber einfacher zu verstehen):

^(?!keepers/|keepers$)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top