GNU/Linux >> Linux の 問題 >  >> Linux

コードのインデントの違いを無視してパッチを作成するには?

diff 空白の変更を無視するオプションがあります (-w )、patch も同じ (-l )。ただし、一般的に、空白を無視するのは悪い考えです。そのため、誰かの編集者が恐ろしいことをしたときなど、特別な場合に使用するようにしてください...


diff 空白に関連する複数のオプションがあります。ただし、パッチにはあまり役に立ちません。マニュアルページは、GNU の両方を参照して、あいまいなヒントを提供します:

   -B, --ignore-blank-lines
          ignore changes where lines are all blank
   -b, --ignore-space-change
          ignore changes in the amount of white space
   -w, --ignore-all-space
          ignore all white space

と FreeBSD

   -b     Ignore changes in amount of white space.
   -B     Ignore changes that just insert or delete blank lines.
   -w     Ignore white space when comparing lines.

通常は -b を使用します 、重要な変更を見逃す可能性が低いためです。インデントのみを変更した場合、両方の -b-w 同じ結果が得られます。一方、スペースがない場所にスペースを挿入したり、既存のスペースを削除 (何も残さない) した場合は、プログラムが変更される可能性があります。以下に例を示します:

$ diff foo.c foo2.c
4c4
<     setlocale(LC_ALL, "");
---
>     setlocale(LC_ALL, " ");
6,7c6,7
<     printw("\U0001F0A1");
<     getch();
---
>     printw ("\U0001F0A1");
>     getch();  /* comment */
$ diff -b foo.c foo2.c
4c4
<     setlocale(LC_ALL, "");
---
>     setlocale(LC_ALL, " ");
6,7c6,7
<     printw("\U0001F0A1");
<     getch();
---
>     printw ("\U0001F0A1");
>     getch();  /* comment */
$ diff -w foo.c foo2.c
7c7
<     getch();
---
>     getch();  /* comment */

この場合、 -w オプションを使用すると、setlocale への変更を無視できます パラメータ (意図したものではない可能性があります)。

ちなみに、POSIX diff には -b しかありません オプション。

patch の場合 、POSIX ドキュメント -l オプション:

<ブロック引用>

-l
(文字 ell .) <blank> の任意のシーケンスを引き起こします <blank> の任意のシーケンスに一致する差分スクリプト内の文字 入力ファイルの文字。他の文字は完全に一致する必要があります。


Linux
  1. コマンドラインを使用してMySQLでデータベースを作成する方法

  2. diff コマンドのいくつかの違いを無視するには?

  3. コマンドラインから PHP コードを実行するにはどうすればよいですか?

  1. Linuxでエイリアスを作成してエイリアスコマンドを使用する方法

  2. Ubuntu20.04にブラケットコードエディタをインストールする方法

  3. Visual Studio Code の UI のフォントを変更するには?

  1. Linux –コードのインデントの違いを無視してパッチを作成するにはどうすればよいですか?

  2. Tmuxの現在のディレクトリに新しいウィンドウを作成するにはどうすればよいですか?

  3. 終了コードの出所に関する詳細情報を取得するにはどうすればよいですか?