2010-11-19 11 views
4

Mercurialが特定のディレクトリ(およびそれらに含まれるファイル/ディレクトリ)を無視する方法を発見しましたリポジトリディレクトリのルートにあるのルートにありますが、のいくつかのレベルのディレクトリにこれを拡張する方法を説明します。この場合 Mercurialで特定のサブディレクトリ以外のすべてを無視する

が、私は唯一のバージョン管理に次のディレクトリたい:結果

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

を、私の.hgignoreファイルは次のようになります。

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 

私はアプリや皮膚内の他のディレクトリを選び出す必要としない、それを行うためのより良い方法があります確信している、と私はおそらく私が思ったいくつかのプロジェクトのためにこれを行うしたいと思うよう私はここで尋ねるだろう。ありがとう。

+0

ネイルは、正しい答えを持っています。正規表現の構文で負のアサーションを使用しないでください。単に "。*"を無視して、追跡したいファイルを手動で 'hg add 'してください。上書きを '.hgignore'で追加します。一度追加すると、regexpで読めない例外が作成されたようになります。 –

+0

以前、私がネガティブアサーションをつぶしていたとき、私はとても近くにいるように感じましたが、ネストされたディレクトリではうまく動作しませんでした。もし私がそれを行う方法を見つけることができれば、新しいファイルが追加されるたびに、希望するディレクトリ/ファイルを手動で追加する必要がありません。 –

+0

私の答えを更新している間、私はあなたの.hgignoreのタイプミスに気付きました。これは 'syntax = regexp'ではなく' syntax:regexp'でなければなりません。 –

答えて

3

リポジトリに必要なディレクトリを手動で追加し、それ以外のものはすべて無視します。あなたの.hgignoreで次に

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

syntax: glob 

** 
+0

答えをありがとう。私が理解しているように、それは新しいファイルが追加されるたびに手動でそれらのディレクトリ/ファイルを追加しなければならないことを意味します。なぜなら私はまだ否定的なアサーションを働かせることを望んでいるからです。 –

+0

@David Oliver彼はignoreファイルにそれらを追加することを意味するわけではありません。つまり、それらをコミットのrepoに追加することを意味します。 Mercurialは自動的にディレクトリ内のすべてのファイルの追跡を開始しません。それはそれがそこにあることを知っているが、それをどうするか分からない。 – msarchet

+1

@msarchet:ありがとう、しかし、私はそれを実現します。私は、明示的にMercurialに、私がバージョン管理したいディレクトリに新しいファイルを追加する必要を避けようとしています。 –

関連する問題