2012-03-29 4 views
2

に押されからディレクトリ:防止私は、自分のローカルコンピュータ上に新しいリポジトリを作成したファイルを追加し、自分の作業コピーで私に次のような構造を与えることを約束水銀

-/a  
-/b 

私は私の最初のにコミットプッシュしますBitbucketのリモートリポジトリ。しかし、ディレクトリbを無視して、プッシュされないようにします。私は

と私の.hgignoreファイルを追加しました。ディレクトリbはとにかくプッシュされます。

どうすればこの問題を防ぐことができますか? .hgignoreアドオンで

答えて

1

^b/.* 

b/*あなたが劣っglob構文(正規表現はあなたにもっと自由に制御できます)を使用している場合。

構文は最初の行で定義され、すべての規則は次の別々の行で定義されます。

グロビングしたい場合は、最初の行はsyntax: glob、正規表現の場合は最初の行はsyntax: regexp(デフォルトでは暗黙)です。 documentationを参照してください。あなただけのイニシャルをプッシュすることはできません:あなたはb/

+0

hgignoreは、ファイルの追跡を妨げるだけでなく、プッシュされないようにします。そうですか? – kayfun

+0

@kayfun '.hgignore'は、未追跡のファイルを拒否するためのフィルタとして機能します(例えば、引数なしの単純な' hg add'を実行するとき)。すでに 'b /'のファイルを追跡している場合は、自動的に* untrack *する必要はありません。 '/ b 'にファイルがすでにある場合は' hg st --all'でチェックし、そうであれば 'hg forget'を使って手動で削除してください。 hgignoreを作成する前にすでに追跡されている可能性があります。 –

+0

@kayfun:単純に、いいえ。 –

5

にファイルがある場合は、それをテストすることができます唯一の方法は、これはMercurialので行うことはできませんされるように、Mercurialは実際、空のディレクトリをプッシュしていないこと

注意ファイルのバージョンを削除し、その後の変更を無視します。また、チェンジセットの一部をプッシュすることもできません - チェンジセット全体をプッシュするかしないかのどちらかです。この方法でMercurialは、すべてのクローンでプロジェクトの一貫したスナップショットを確実に作成します。

.hgignoreファイルがの非トラックのファイルであることを書いたときに正しいと書いてあります。 .hgignoreファイルは、hg statusのようなコマンドの出力をフィルタリングし、さらに引数なしでhg addを実行して追加されたファイルをフィルタリングするために使用されます。

+0

ありがとうございました。私はちょうど私があなたを理解していることを確認したい。私の質問で参照されているbディレクトリは、実際には非常に大きなZendライブラリです。私はそれをプッシュしたくないのです。だから私が最初にやったのは、自分のリポジトリを作成し、.hgignoreファイルを作成してzendライブラリディレクトリを無視し、そのファイルをリポジトリに追加してからコミットすることでした。そうすれば、zendディレクトリは、水銀によって追跡されることがないようにプッシュされます。あれは正しいですか? – kayfun

+0

@kayfun:それは正しいです - あなたがプッシュしたくないものを追跡しないでください。 –

+0

私はちょうど、追跡したくない、またはプッシュしたくない追加ファイルを忘れてしまった。私は既にチェンジセットが存在することを意味する作業コピーを変更しました。私はチェンジセットに追加される忘れ操作を完了しました。最初のコミットには「初期コミット」と表示され、現在のチェンジセットをコミットして「変更」というラベルを付け、空のリモートリポジトリにプッシュすることにした場合、「初期コミット」が1番目にプッシュされますディレクトリに移動すると、次に '変更'がプッシュされ、リモートリポジトリもzendディレクトリを忘れてしまいます。あれは正しいですか? – kayfun

関連する問題