2009-08-27 9 views
8

Ich habe ein Projekt gestartet und Mercurial hinzugefügt. Aber ich möchte *.cs Datei nur unter Versionskontrolle nehmen. Also muss ich bin, obj, sln, suo, _resharper Ordner usw. hinzufügen, um Muster zu ignorieren.Wie kann Mercurial alles außer der * .cs-Datei ignorieren?

Wie kann Hg nur bestimmte Arten von Dateien wie weiße Listen überwachen? Wie geht das in Subversion?

+0

Mercurial oder Subversion oder beides? – inerte

+0

Nur Mercurial ist in Ordnung, beide wenn bekannt – prime23

Antwort

8

einfach die Erweiterungen auf Ihre .hgignore Datei hinzufügen, wie Sie über sie kommen.

syntax: glob 
*.bin 
*.obj 

usw. Es ist nicht viel Arbeit, und dokumentiert auf den Rest der Welt genau, welche Art von Dateien, die Sie für die Revisionskontrolle unwichtig betrachten.

Sie können sogar Setup eine globale Datei ignorieren, sehen Sie bitte die ignore entry in the [ui] section.

der Versuch, diezu drehenUpside-Down mit negativen Lookahead Regular Expressions und anderen Voodoo ist (meiner Meinung nach) keine gute Idee. Es wird fast sicher nicht funktionieren und nur zu Verwirrung führen. Dies liegt daran, dass alle Präfixe eines angegebenen Pfadnamens mit der rules in .hgignore übereinstimmt. So eine Datei wie

a/b/c.cs 

wird ignoriert, wenn eine der

a/b/c.cs 
a/b 
a 

durch eine Regel in Ihrer .hgignore Datei angepasst ist. Dies bedeutet insbesondere, dass Sie einen negativen Lookahead-Ausdruck nicht verwenden können, wenn a/b/c.cs nicht ignoriert wird - die Regel entspricht a/b oder a.

+0

Sie sagen also, dass es keinen Negationsoperator gibt? –

+0

Mike: Ja, leider. Bitte sehen Sie diese Ausgabe http://mercurial.selenic.com/bts/issue712, wo Sie einen Kommentar hinterlassen können, wenn Sie sehr interessiert sind. –

-2

Fügen Sie Ihrem Repository eine Datei mit dem Namen .hgignore mit diesen Inhalten hinzu.

syntax: regexp 

^\.cs 

Subversion Sie regex nicht lassen verwenden, um Dateien zu ignorieren, nur eine Teilmenge von glob syntax Datei/Verzeichnisnamen übereinstimmen. Ich hatte keine Ahnung, wie man ignorieren Dateien nicht in CS- endet, damit ich das Web durchsucht und this webpage sagt:

svn propset svn:ignore "*[!c][!s] 
*.cs?*" . 

Verwenden Sie es mit Vorsicht :)

Edit: Martin Geisler ist richtig, und ich irrte , die Regexp-Syntax ist falsch. Ich entschuldige mich. Das richtige Konzept ist es aber nicht die Metazeichen ... :(

+0

Die '^ \ .cs' regexp wird' hg' veranlassen, eine Datei namens '.cs' im Wurzelverzeichnis des Repositorys zu ignorieren. Es wird nicht 'hg' veranlassen, alle Dateien zu ignorieren * nicht * passend zu' * .cs' (glob pattern). –

+0

Ja, ich habe es versucht, es funktioniert nicht. – prime23

1

den Link zu einer Mercurial Ausgabe von Martin Geisler (https://www.mercurial-scm.org/bts/issue712) geliefert In Bezug auf Bitte beachten Sie, dass das Problem nicht ein von technischen Schwierigkeiten, aber Unterstützung:

Dies ist eine alte und wiederkehrende Feature-Anfrage ist, was ich gut vor diesem Fehler ablehnte. Ich habe geschrieben und unterstützt ein paar include/exclude Dateisyntaxen und habe entschieden, ich würde eher sagen "Nein, Sie kann das nicht tun" einmal zu 1% der Benutzer als "Nein, Sie lesen die Dokumente falsch" wiederholt zu 20% der Benutzer. — Matt Mackall (Entwickler von Mercurial)

Verwandte Themen