私はMercurialに、シンボリックリンクと思われるすべての追跡ファイルをリポジトリにリストさせたいと思っています。 hg files "set:symlink()"
で作業コピーのシンボリックリンクであるトラッキングされたシンボリックリンクのリストを取得できますが、それは作業コピーのシンボリックリンクではないトラッキングされたシンボリックリンクを取得しません。Mercurialに、シンボリックリンクとして追跡されたすべての追跡ファイルを一覧表示する方法を教えてください。
代わりに、私は、マニフェストで追跡されたファイルのプロパティを見て、シンボリックリンクビットが設定されているかどうかを教えてくれます。私はhg manifest -v
を使用しようとしましたが、ドキュメントには"print file permissions, symlink and executable bits"と書かれています。私はそれを試みましたが、シンボリックリンクは、実行可能ビットが設定されている非リンクファイルと区別できません。私は主要なマーカー(hg manifest -v | grep '755 *'
)を使用しようとすると、私が欲しいのファイルがリストされている
755 * path/to/file
、私はまた、偽陽性の多くを得る:私はの多くを得ます。
背景:シンボリックリンクの追加とコミットは私たちにとってはうまくいくようですが、他の誰かがそれらのチェンジセットをプルすると、Mercurialはシンボリックリンクの作成を拒否しています。私はMercurialがなぜ拒否しているのかを理解しています。私たちはan undocumented ruleに挑戦します。だから、シンボリックリンクが想定されているファイルで終わります。ファイルの内容は、シンボリックリンクが指しているはずのパスです。私がMercurialにどのファイルがシンボリックリンクであると言われたら、ファイルを適切なリンクで簡単に置き換えることができます。
ありがとうございました!
編集:私のリポジトリに、シンボリックリンクが原因hg manifest -v
がリンクとしてコミットされたファイルを示していなかった理由であるクライアントのバグに適切にコミットされていませんでした。
ありがとうございました!あなたのソリューションは、ユーザーがファイルを意図的に変更していて、その変更を見たいと思っていたリポジトリに適しています。私は今朝、自分の問題は実際にはファイルがGUIツールによって不適切に追加/コミットされていることを発見しました。つまり、 "set:symlink"は決してそれらを見ませんでした。 –