2017-07-14 3 views
1

私は水銀ファイルセットを使用して、非常に大きなファイルとバイナリファイルを除いて、ディレクトリツリー内のすべてのファイルを追加しようとしています。 Mercurialのドキュメントからカンニング、このコマンドはそれを行う必要があります。ファイルを追加するときに水銀ファイルセットが機能しないのはなぜですか?

hg init 
hg add 'set: size("<1M") and not binary()' 

をしかし、これは、0のステータスコードを返し、私の新しい、空のレポには何も追加していません。私はちょうど 'set:binary()'ではなく、それもうまくいきませんでした。 私は水銀のファイルセットをGoogleで検索することはできますが、多くの例を見つけることができますが、うまくいかない場合はトラブルシューティングに役立つものは見つかりませんでした。 私は.hgignoreファイルを持っていません。新しい空のレポです。 Mercurial 4.2.2。 私がテストしているディレクトリには、テストの目的で人為的に作成されたファイルがいくつかあります。私の実際の使用例では、クライアントからの複数のギガバイトのtarballを継承しています。問題を解決するためにハッキングを開始する前に、すべてのソースを水銀状態にしたいので、バイナリと大水銀を必要とするファイル

はここに私の小さなテスト・スクリプトです:

#!/bin/sh -ex 
dd if=/dev/urandom of=binary_1k bs=1 count=1024 
dd if=/dev/urandom of=binary_2M bs=1 count=2097152 
echo "This. Is, a SMALL text file." > text_small 
hexdump binary_1k > text_1k 
hexdump binary_2M > text_2M 
ls -lh 
file binary_1k 
file binary_2M 
file text_1k 
file text_2M 
hg init 
hg add 'set: size("<1M") and not binary()' 
hg status -a 
hg add 'set: not binary()' 
hg status -a 
hg add 'set: size("<1M")' 
hg status -a 

本の終わりに、各ステータスコマンドを報告レポではありませんファイル、および追加のコマンドがエラーを報告しません。

答えて

4

問題は、ファイルセットがMercurialのリポジトリデータベースのクエリを実行することです。これは、リポジトリの一部であるファイルや追加されたファイルのみを認識します。

一つの解決策は、すべてを追加し、その後、あなたが好きではないファイル、例えばを取り除くことです。

hg forget 'set:size(">1M") or binary()' 

これは動作しますが、クエリはまた、彼らはあっても、最近追加されたファイルを必要とするため、まだコミットされていません。

関連する問題