Git 2.3.0(2015年2月)は、別の新しいオプションを提案します。--transfer-encoding
使用する転送エンコーディング(quoted-printable、8bit、base64)を指定するために、にのみ依存するのではありません --keep-cr
。
git send-email
マニュアルページ。
git am
マニュアルページ。
PaoloBonziniによるcommit8d81408を参照してください(bonzini
):
git-send-email
:--transfer-encoding
オプションを追加
メーリングリストスレッドgit am
では、CRLF行末のリポジトリに「」が付いたパッチを適用する際の問題について詳しく説明しています。
スレッドの例では、リポジトリは ""から作成されているため、その上で友人git-svn
を使用することはできません。core.eol
今のところ、最良のオプションは「git am --keep-cr
」を使用することです。
ただし、パッチが新しいファイルを作成する場合、パッチ適用プロセスは、「/dev/null\r
」ではなく「」文字列を検出するため、新しいファイルを拒否します/dev/null
。
問題は、SMTPトランスポートがCRLFで安全でないことです。
パッチをメールで送信することは、「」を通過させることと同じdos2unix | unix2dos
です。新しく導入されたCRLFは、ストリップする
ため、通常は透明です。git-am
設定はkeepcr=true
それらを保持しますが、ほとんどの場合偶然に機能しており、git am
LFとCRLFの行末が混在するリポジトリに""ワークフローがあると非常に問題が発生します。
これに対するMIMEソリューションは、quoted-printabletransferencondingです。
これは、受信した電子メールを見るのが恐ろしいものになるため、デフォルトで有効にしたいものではありません。
ただし、CRLF行末をリポジトリに格納するプロジェクトには非常に適しています。
quoted-printableの唯一の欠点は、メンテナが ""を使用すると、quoted-printableパッチが適用されないことですgit am --keep-cr
。
これは、デコードされたパッチの行末に2つのキャリッジリターンがあるためです。
したがって、base64転送エンコーディングのサポートも追加します。これにより、受信した電子メールをMUA(メールユーザーエージェント)の外部で見ることはまったく不可能になりますが、実際には機能します。
このパッチは、非ASCII文字を含む電子メールの送信を拒否する7ビットのコンテンツ転送エンコーディングも提供することにより、80年代後半にまだ住んでいるユーザーを含むすべてのベースをカバーしています。
そして最後に、「8bit」はContent-Transfer-Encodingヘッダーを追加しますが、それ以外は何もしません。
gitsend-emailのドキュメントには次のものが含まれます。
--transfer-encoding=(7bit|8bit|quoted-printable|base64)
SMTP経由でメッセージを送信するために使用する転送エンコーディングを指定します。
非ASCIIメッセージに遭遇すると、7ビットは失敗します。
Quoted-printableは、リポジトリにキャリッジリターンを含むファイルが含まれている場合に役立ちますが、生のパッチ電子メールファイル(MUAから保存されたもの)を手動で検査するのがはるかに困難になります。
デフォルトは、' sendemail.transferEncoding
'構成値の値です。それが指定されていない場合、 git
8ビットを使用し、Content-Transfer-Encodingヘッダーを追加しません。
Git 2.32(Q2 2021)で、 " git mailinfo
" (man)(したがって " git am
" (man)--quoted-cr
)は、base64またはqpでラップされたCRLFで終わる行の処理方法を制御する""オプションを学習しました。
ĐoànTrầnCôngDanh ()によるcommit 59b519a、commit 133a4fd、commit f1aa299、commit 0b68956(10 May 2021)、commit dd9323b、commit d582992(06 May 2021)を参照してくださいsgn
。( Junio C Hamano
によってマージされました---コミット483932a 、2021年5月16日)gitster
mailinfo
:デコードされたbase64/QP電子メールでCRLFが見つかった場合に警告
サインオフ:ĐoànTrầnCôngDanh
SMTPサーバーが8ビットの電子メールメッセージを受信すると、おそらく行末がLFのみである場合、一部のサーバーは、そのLFをCRLFに変更することを決定します。
一部のメーリングリストソフトウェアは、8ビットの電子メールメッセージを受信すると、それらのメッセージをbase64またはquoted-printableでエンコードすることを決定します。
電子メールが上記のメールサーバーを介して転送され、そのようなメーリングリストソフトウェアによって配布される場合、受信者は、別のエンコーディング内にエンコードされたCRLFが含まれるパッチを含む電子メールを受信します。
したがって、そのようなCR(CRLF内)は""で削除できませんでしたmailsplit
。
そのため、郵送されたパッチをきれいに適用することができませんでした。
そのような事故は野生で観察されています。
これらのメッセージを黙って拒否するのではなく、そのようなCR(CRLFの一部として)が見つかった場合にユーザーに警告を表示しましょう。
警告は次のようになります。
warning: quoted CRLF detected