Gitextensions: コミットダイアログ-ステージ選択した行が機能しない

作成日 2011年10月28日  ·  25コメント  ·  ソース: gitextensions/gitextensions

ステージングされていないファイルの差分ビューで一連の行を選択してステージングしようとすると、ほとんどの場合、GitExtensionは「エラー.....パッチが適用されません」などと言います。

これに関しては、行の一部だけでなく、行全体を選択した方が明確です。

bug

最も参考になるコメント

これは、次のシナリオで2.48で発生しました。
Tools->Settings->Git config->Line Endings: Not set
行末をいずれかのオプションに設定すると、問題が解決しました。 effectiveビューのnot setは構成の問題であるように見えます。私の意見では、そのように表示する必要があります。

全てのコメント25件

通常のコピー/貼り付け操作では、行全体を選択しても機能しません...

しかし、私はアルゴリズムが新しく作成されたファイルをサポートする必要があることに同意します。 方法がわからないけど...

まあ、簡単に考えてください。 コミットの状況では、diffからテキストをコピーすることは非常に珍しいことです。 行全体がコピーされる他の解決策を見てきましたが、これは問題ありません。 この場合、コピー機能は便利な機能だと思います。 ファイルを差分するときに同じビューを使用していることはわかっています。 したがって、ドキュメントのコミット機能だけを処理する別のクラス(デリゲート?)がここで実行される可能性があります。

あなたが何を話しているのかわかりません。 この問題は長い間存在し、非常に迷惑です。 新しく作成された行からではなく、すでに追跡されているファイルから行をステージングするときにも発生しますが、変更されたファイルも同様です。 悲しいですが、それでも再現する手順がわかりませんでした(((予期せず表示されます

私はこの機能に関してかなり長い間問題を抱えていません。 あなたがそれを再現することができたら、私たちに知らせてください、さもなければ修正はほとんど不可能です...

まあ、それは2.25では間違いなく機能しませんでした。2.26ではどういうわけか機能しているようですが、これに対する公式の修正はありませんでした。 その振る舞いのために分割できないコミットがあったので、「そのまま」コミットする必要がありました。 私が話しているのは、これまでで最高のUIの1つであるgitxの動作です。 それは直感的で明確です。 コミット中に差分内の行を選択すると、行全体が選択され、1つ以上の行を選択したかどうかに応じて、右側に1つのボタン「ステージ行」が表示されます。 クリックすると、線がステージングされるか、またはその逆にステージングされません。 gitextensionsで似たようなものを見ることを楽しむでしょう。

今のところ:ステージングしたい行全体を正確に選択し、文字を多かれ少なかれ選択しない場合は機能するようです。 それで、何が起こるかについての詳細が明らかになったときに、問題を閉じて再開できるかもしれません。

「今のところ:ステージングしたい行全体を正確に選択し、文字を多かれ少なかれ選択しない場合は機能するようです。問題を閉じて、何が起こるかについての詳細が明らかになったときに再開できるかもしれません。」

私はこれを承認できません。 昨日エラーが発生し、行全体を選択しても効果がありませんでした。 いくつかの古いバージョンでは、これが時々役に立ったことを覚えていますが、今はそうではありません。 (おそらく、ステージングする前に行をリセットする機能を削除したバージョンの後)。

前にも言ったように、再現できるケースがある場合は、その状態を保存して、他の人(またはあなた)が問題の修正を試みることができるようにしてください!! 再現可能なテストケースがなければ、これを修正することはできません。

新しい号を開いたほうがいいかどうかはわかりませんが、ここでコメントすることから始めます。 それが良ければ、私は喜んで新しい問題を開きます。

「ファイル全体を表示」がオンになっているときに行をステージングしようとすると、上記のエラーが発生することに気付きました。 オフに戻すと、正常に動作します。 これは私にとって今一貫して起こっています。 バージョン2.26を使用していましたが、2.28にアップグレードしたところ、まだ発生しています。

参照#636

私は昨日これと同じ問題を抱えていました(GitExtensionsプロジェクトでも同様です)。 ファイル内の一部の行はステージングできましたが、他の行はステージングできませんでした。 今夜は再現してみます。

このエラーは、BOMを使用したUTF8エンコーディングの.slnファイルで再現されます。 問題は、コンボボックスの差分エンコーディングがUTF8の場合にのみ発生します。 デフォルトのエンコーディングに切り替えると、すべてが正しく機能します。

BOMが行番号を変更するため、主な問題だと思います

Git Extensionsv2.28でも同様の問題が発生しました。 Unixの行末を使用して作成され、Git Extensionsを使用して追加されたファイルで、行末がワークスペースで変更されないという警告を受け取りましたが、ファイルを再度チェックアウトすると、Windowsの行末に置き換えられます。 これに続いて、ファイルに2つの変更を加えました。 次に、パッチが破損していると主張して、2番目のハンクのみをステージングしようとして失敗します。 最初のチャンクのステージングは​​正常に機能しているようです。 コマンドラインのgitツールは、行末にもかかわらず、2番目のハンクだけをステージングするのに問題がないため、これはGitExtensionsのバグのようです。

ファイルを削除し、「git checkout」を実行して正しい行末のバージョンを取得すると、問題が修正されます。これで、Git Extensionsを使用して、エラーを発生させることなく、パッチの2番目のハンクを分離してステージングできます。

ただし、両方のハンクを1つずつアンステージ化しようとすると、同様のパッチ破損エラーが発生しました。ステージング領域にハンクが残っていない場合は、それが気に入らなかったのです。

この問題は、ファイルのエンコーディングまたは上記の行末のいずれかに起因しているようです。 今日、ドイツ語の文字(Latin1、windows-1251?)文字列を含むコメントを含むac#プロジェクトで発生し、1行でファイルのエンコーディングが変更されました(理由は何であれ)。 ファイルはVS2010によって再フォーマットされました。 まさにこの行以降、後続のすべての行をGE(2.40だけでなく、以前のバージョンでも)でステージングすることはできません。 core-gitでのステージングは​​正常に機能します。

2.31から2.40にアップグレードしたところ、この機能は完全に壊れているようです。 どのファイルにも行をステージングできないようです。 私はANSIでエンコードされたC ++ファイルとUTF-8でエンコードされたC#ファイルの両方で試しました。これらはほとんどの場合2.31で機能していました(ファイルの最後の行で問題が発生するために使用されていました)。

「...パッチが失敗しました...パッチが適用されません...」

+1

a670f1501103fbe0d214ab76811a33353cab87af2.40で導入されたバグを修正

fd96875589f22851a691fa1f0f989816a77458aaはBOMの問題を修正します

Januszに感謝します。 GitExtensionsを再構築し、Program Filesのファイルを置き換えましたが、うまく機能しました。

ファイルの最後に空の行があり、それを削除すると、GitExtensionsはこの変更をステージングできないことに気付きましたが、これは以前のコメントで述べた既存の欠陥でした。

これは簡単な修正でした。 テストしたところ、ステージが機能しない別のケースが見つかりました。 もっと簡単な方法でアルゴリズムを書き直そうと思います。

誰かが2.41以降でこのバグを再現した場合は、再度開いてください。

私は現在2.43でこの問題を抱えています。 [空白の変更を無視する]がオンになっていると、ファイルのどこにも「選択した行をステージング」できません。 (残念ながら、チェックを外すと、コミットする必要のあるファイルの多くで、ファイル内のすべての行が削除されてから、すべての行が再度追加されます。理由はわかりません。タブとスペースの違いである可能性がありますが、そうなると思います。これらのファイルの1つは.csprojであり、通常は手動で編集しないため、設定の変更の対象とすべきではないため、特殊です。)

この機能は、無視された空白では機能しません。 EOLの問題のように見えます。

これは、次のシナリオで2.48で発生しました。
Tools->Settings->Git config->Line Endings: Not set
行末をいずれかのオプションに設定すると、問題が解決しました。 effectiveビューのnot setは構成の問題であるように見えます。私の意見では、そのように表示する必要があります。

これの特定の変形ですが、grantboweringによって以前に報告されたように、「先頭と末尾の空白の変更を無視する」または「すべての空白の変更を無視する」がGitExtensions 2.51.03、Windows 1064ビットで有効になっている場合に発生します。

  1. ファイルを変更します。
  2. コマンド>コミット
  3. コミットダイアログの差分ウィンドウにマウスを合わせます。
  4. 表示される上部のツールバーから、[先頭と末尾の空白の変更を無視する]または[すべての空白の変更を無視する]を有効にします。
  5. 差分の変更された行をクリックします。
  6. 「S」キーを押して、選択した行をステージングします: error: patch failed: ... error: ... patch does not apply

#3493を参照してください。

金、2018年6月29日、20:03 per1234に[email protected]書きました:

これの特定の変種ですが、以前に報告されたとおりです
https://github.com/gitextensions/gitextensions/issues/684#issuecomment-12332133 by
「先頭と末尾の空白を無視する」と、grantboweringが発生します。
「変更」または「すべての空白の変更を無視」はGitExtensionsで有効になります
2.51.03、Windows 10 64ビット:

  1. ファイルを変更します。
  2. コマンド>コミット
  3. コミットダイアログの差分ウィンドウにマウスを合わせます。
  4. 表示される上部のツールバーから、[先頭を無視して
    末尾の空白の変更」および/または「すべての空白の変更を無視する」。
  5. 差分の変更された行をクリックします。
  6. 「S」キーを押して、選択した行をステージングします。エラー:パッチが失敗しました:
    ...エラー:...パッチは適用されません。


このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/gitextensions/gitextensions/issues/684#issuecomment-401501721
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/ADdhsSZcDBHHn25q6HhRfvdkTdM5pjbsks5uBsA3gaJpZM4AFHeS

このページは役に立ちましたか?
0 / 5 - 0 評価