4

突然、いくつかのファイルが変更済みとして表示されるようになりましたが、KDiff は、これらはバイナリが等しいと言っています。これらの変更を元に戻して破棄しても、何も起こりません。

どういうわけか、eol 拡張機能が有効になっており、それを無効にしようとすると、TortoiseHg でその 1 つのリポジトリの作業ディレクトリを表示できません。エラーが表示されます:

[エラー 6] ハンドルが無効です

コマンド ラインを使用すると、hg status次のエラーが表示されます。

「cleverencode:」は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。

を使用するhg revert myfileと、.orig ファイルが生成されますが、ファイルは変更されたものとして表示され、上記と同じエラーが表示されます。

以前のコミットに更新すると、他の多くのファイルが、現在のいくつかのファイルと同じ状況になります。

必要に応じて、このクローンを破棄して新しいクローンを作成することもできますが、そうせずにこれを解決できるとよいでしょう。

4

2 に答える 2

9

解決できました。

私のグローバルmercurial.iniには、いくつかの行が含まcleverencodeれていました。それらを削除した後、問題はなくなりました。eol 拡張機能を有効/無効にしても、問題が発生することはないようです。

トラブルメーカーは Atlassian の SourceTree だったのではないかと思います。昨日アップデートをインストールしたところ、自動行末処理を有効にするかどうか尋ねられました。それにもかかわらず、eol構成とwin32text構成が混在しているようです。

参照: [SRCTREEWIN-708] Mercurial 行末処理設定で発生する可能性のあるエラー - Atlassian JIRA

于 2013-06-28T10:27:13.073 に答える
0

私は、cleverencode がうまくいかないことに気付きました -- 私の mercurial.ini にはありませんでした。私のケースは、不思議なことに変更済みとしてマークされ、元に戻したり、クリーンアップしたりしても消えないバイナリファイルでもありました...

私はいろいろ調べて修正しました: repo/.hg/largefiles ディレクトリがあります。変更を元に戻すために、mercurial はこれをバイナリ ファイルのローカル キャッシュとして保持していると思います。このディレクトリには、多数のファイル名が 16 進数で表示されます。TortoiseHg で、問題の原因となっているバイナリ ファイルを「参照」します。バイナリに対応する16進コードが表示されます。largefiles ディレクトリでそのファイルを見つけて削除します。

これで、ファイルを変更されていない状態に戻すことができるはずです。Mercurial は largefiles バージョンを使用して最初に元に戻すと思います。次に、このバージョンがレポのバージョンと一致しない場合、変更済みとしてマークされ (私の場合、私のバイナリは何らかの理由で長さが 0 に切り捨てられました)、消えることはありません。

16 進名と一致しない場合は、largefiles dir を完全に削除することもできます。必要に応じて再作成されます。唯一の影響は、サーバーにアクセスする必要があるため、一部のバイナリ ファイル操作に時間がかかることだと思います。

于 2014-01-17T16:04:22.647 に答える