2013-10-03 9 views
8

私の質問はこれは何ですか?Mercurialが変更されていないときに、(ステータスまたはTortoiseHgWorkbench経由で)ファイルを「変更済み」として示す原因は何ですか?hgは、変更されていないファイルが変更されたことを示します。

状況は次のとおりです。Linuxマシンのローカルリポジトリがあります。私はLinuxマシン上のリポジトリでしか動作しません。しかし、私は、Windowsマシン上でリポジトリ(と作業ファイル)の正確なコピーを持っています(私はBeyondCompareを使ってフラッシュドライブ経由で同期します)。私が一番覚えている限り、そこにインストールされているにもかかわらず、Windowsマシンでは水銀を呼び出すことはありません。

私は最近、Linuxマシンでコミットしたいと思っていましたが、私が表示されることを期待していなかった多くのファイルが "Modified"と表示されていました。私は作業ディレクトリのコピーがリポジトリ内の親に対して "バイナリ一致"であることを示すビジュアル差分(BeyondCompareを使用)を行いました。 TortoiseHgWorkbenchは "modified"というファイルを表示し、差分ウィンドウにはファイル全体が緑色で表示されます(リポジトリに空のファイルがあると思います)。問題のファイルでは、ファイルシステム上のファイルの日付は数ヶ月ですが、私の最後のコミット(私はすべての変更されたファイルをコミットします)は数週間前です。変更されていないファイルもあれば、「変更された」ファイルもありますが、変更されていないファイルもあります。私はこの行動をこれまでに見たことがないので、少し混乱しています。

私はリポジトリ上で "hg verify"を実行しましたが、興味深いことは何も書きませんでした。

作業ディレクトリ内のすべてのファイルが元の状態になっているので、大したことではないと思います。ファイルをコミットすると(たとえファイルが変更されていなくても)何か怪我をすることはありません。しかし、私は何が起こったのか理解したいです。

どのようなアイデアを探していただき、ありがとうございます。

[EDIT]

はまだ根本的な原因(ファイルのパーミッションとアクセス日付変わらず)が、@のbarjakの応答は、私がこれを見つけた方向に私を指摘発見していない

Why does "hg status" show changed files when "hg diff -g" doesn't? (One parent)を。私の状況は、そこに記述されているものと同じです(hg diffとhg diffの両方とも、実際に変更されたファイルのみを表示しますが、hg statusはいくつかの変更されていないファイルを表示します)。私はHg 2.6を使用しています。

[EDIT]

それは誰にも有用である場合は、ここで私は戻って、通常のリポジトリになった方法です:

シェルで:tortoiseHgWorkbench

uncheck all files marked "M" 
check all files indicated in the grep results above (i.e., have real diffs) 
commit 

cd src 
hg diff --git > ../junk 
grep "\-\-git" ../junk 

シェル内:

hg revert --all 

次に、作業ディレクトリをクリーンアップします(revert --allは、無効なファイルを生成しました。また、いくつかのファイル日付をリセットします(私はこのリポジトリを使用している唯一の人で、ファイルの日付は役に立ちます。ファイルの日付を復元するための拡張子はありますが、まだインストールしていません)。

このプロセスによって、私はもう一度並べています。

+0

を固定:私はその後

hg st 

を実行したときに横に私は(すでにチェックインされた)ファイルを元に戻すには、次のコマンドを実行しましたセッション - >セッション設定の[比較]タブでは、[バイナリ比較]または[ルールベース]に設定されています。どのタイプのファイルを比較していますか? – Edward

+0

比較は「ルールベース」に設定されています。このファイルはC++ソースファイルです。 BC3の結果は「バイナリ・バイナリ」です。私は今、@barjakが示唆しているように、 "許可"の可能性を調べるつもりです。 (最初の検査は権限が変更されていないように見えますが、もう少し掘り下げてみてください...) –

+0

私の場合、Microsoftのウィンドウを使用する必要がある場合、これが発生します。コミットに使用すると、このリビジョンに更新すると、ファイルが変更されて表示されます。 (たぶん、MS Windowsは、リポジトリに何かを保存しています。これはUnixでは表現できません)。 –

答えて

10

Unixの権限が変更された場合でも、ファイルは変更済みとしてマークすることができます。 hg diff -gを試して権限を確認してください。

+2

私はまだこの問題の根本的な原因を知りません(他のアイデアがあれば、私はまだ興味があります)。しかし、この回答は役に立つ方向に私を指摘しました。 –

+0

同じ問題があって、-gオプションを使用すると、ファイルに対して変更されたパーミッションが表示されました。 – Alex

2

元に戻しても私を助けませんでした。ファイルは、私がそれらをコミットしたにもかかわらず、Modified状態のままです。もし私が再びそれをコミットしようとした。だから私は、変更されたファイルを削除しただけです(必要に応じてバックアップを作成してください)。 、

hg revert --all --no-backup 

、それがBC3で問題

関連する問題