より良いhg文字列エスケープ

より良いhg文字列エスケープ

したがって、バージョン管理システムhgに記載されている不足しているファイルを定期的に削除します。私が気づいたのは、私のスクリプトが文字列を適切にエスケープしていないことです。

hg status | grep ! | colrm 1 2 | sed 's/ /\\ /g' | xargs hg remove

多くの場合、うまくいきますが、いくつかの奇妙な文字列が動作を停止するrecognition-systems2013/20110531-information-fusion.key/\!\(\*-4.pdf可能性があります。ところで、hgはこの文字列が「Windowsの安全性」ではないと言います。

誰でも「!」とリストされているファイルを削除するより良い方法を見つけることができますか?それとも行方不明ですか?

ベストアンサー1

私は使用する:

hg addremove

そのためお支払いディレクトリから残っているアイテムをすべて削除した後(またはファイルにパターンを追加した後.hgignore)。
hg addremove -hあなたに言う:

Add all new files and remove all missing files from the repository.

Mercurialは*ファイル名について文句を言います。これは予約されている文字なので、Windowsではファイル名には使用できません。ただし、メッセージ自体はstderrパイプラインの機能には影響しません。

もう一つの方法は、次を使用することです。

hg remove --after

削除されたファイルを表示しますが、すべてのファイル(まだ存在するファイルと削除されたファイル)に対してコメントを付け、--quietオプションに反応しないようです。

おすすめ記事