2010-11-19 11 views
4

Durch die Suche habe ich festgestellt, wie Mercurial bestimmte Verzeichnisse (und die Dateien/Verzeichnisse, die sie enthalten) , die im Stammverzeichnis Repository sind, aber ich kann nicht funktionieren heraus, wie diese auf Verzeichnisse erweitert werden, die mehrere Ebenen in sind.Mit Mercurial ignorieren alles außer bestimmten Unterverzeichnissen

In diesem Fall möchte ich die folgenden Verzeichnisse nur Versionskontrolle:

app/design/frontend/rc 
skin/frontend/rc 

Als Ergebnis sieht meine .hgignore-Datei wie folgt.

syntax=regexp 
^(?!(app(/|$))|(skin(/|$))) 
^app/code 
^app/design/adminhtml 
^app/design/frontend/base 
^app/design/frontend/default 
^app/design/install 
^app/etc 
^app/locale 
^app/Mage.php 
^app/.htaccess 
^skin/adminhtml 
^skin/frontend/base 
^skin/frontend/default 
^skin/install 

Ich bin sicher, es gibt einen viel besseren Weg, es zu tun, das beinhaltet nicht die anderen Verzeichnisse innerhalb App und die Haut Kommissionierung, und als ich werde wahrscheinlich will das ich für ein paar Projekte tun, dachte Ich würde hier fragen. Vielen Dank.

+0

Nagel hat die richtige Antwort. Muck nicht mit negativen Behauptungen in der Regex-Syntax, ignoriere einfach ". *" Und dann manuell "hg add" die Dateien, die du verfolgen willst. Fügen Sie die Überschreibungen '.hgignore' hinzu. Wenn Sie sie also hinzugefügt haben, ist es so, als hätten Sie in regexp eine unlesbare Ausnahme erstellt. –

+0

Früher, als ich mich mit den negativen Behauptungen herumschlug, fühlte es sich an, als wäre ich so nahe dran, aber es funktionierte einfach nicht mit verschachtelten Verzeichnissen. Wenn ich herausfinden kann, wie ich es machen würde, würde es mir ersparen, jedes Mal, wenn neue Dateien hinzugefügt wurden, die gewünschten Verzeichnisse/Dateien manuell hinzuzufügen. –

+0

Während ich meine Antwort aktualisierte, bemerkte ich einen Tippfehler in Ihrem .hgignore. Es sollte "Syntax: regexp", nicht "syntax = regexp" sein. –

Antwort

3

Manuell die Verzeichnisse, die Sie zu Ihrem Repository hinzufügen möchten, dann alles andere ignorieren.

hg init 
hg add app/design/frontend/rc 
hg add skin/frontend/rc 

Dann in Ihrem .hgignore:

syntax: glob 

** 
+0

Danke für die Antwort. Wie ich es verstehe, würde das bedeuten, dass ich diese Verzeichnisse/Dateien jedes Mal manuell hinzufügen muss, wenn neue Dateien hinzugefügt wurden, weshalb ich immer noch hoffe, dass ich die negative Behauptung funktionieren lassen kann. –

+0

@David Oliver er bedeutet nicht, sie zu der Ignorierdatei hinzufügen, er bedeutet, sie dem Repo in einem Commit hinzufügen. Mercurial startet nicht automatisch jede Datei in einem Verzeichnis. Es weiß, dass es da ist, weiß aber nicht, was damit zu tun ist. – msarchet

+1

@msarchet: Danke, aber das merke ich. Ich versuche zu vermeiden, Mercurial explizit zu verlangen, neue Dateien in den Verzeichnissen hinzuzufügen, die ich Versionskontrolle will. –

Verwandte Themen