の構文に加えて--column
、Git 2.18 (Q2 2018) で修正されたバグがあり、その構文を再度示します。
このコードは、
COLUMNS
環境変数を介してターミナル幅をサブプロセスに伝達しませんでしたが、現在はこれを行っています。
これにより、" git column
" ヘルパー サブプロセスで、" git tag --column=row
" がデフォルト以外の幅で既存のタグを一覧表示しようとしたときに問題が発生しました。
Nguyễn Thái Ngọc Duy ( )によるコミット b5d5a56 (2018 年 5 月 11 日)を参照してください。Jeff King ( )によるcommit be11f7a (2018 年 5 月 11 日)
を参照してください。( 2018 年 5 月 23 日にコミット 05682eeでJunio C Hamanoによってマージされました)pclouds
peff
gitster
列: 1 つずれたデフォルトの幅を修正
デフォルトでは、可能であれば画面全体を埋める必要がありますが、最後の文字が境界線にぶつかり、カーソルを押して折り返すため、すべての端末列を使い果たしたくありません。
print_columns() が幅を term_columns() - 1 に設定するように、デフォルト値 0 のままにしておきます。
pager: COLUMNS を term_columns() に設定します
ページャーを呼び出した後、端末ではなくパイプに移動します。つまり、を使用して端末の幅を取得するstdout
ことはできなくなります。
そのため、ad6c373 (pager: ページャーを生成する前に端末の幅を調べる、2012-02-12、Git 1.7.9.2) が端末の幅をキャッシュするようになりました。ioctl
しかし、そのキャッシュはインプロセス変数にすぎません。
私たちがスポーンするプログラムも、その ioctl を実行することはできませんが、キャッシュにアクセスすることはできません。それらは最終的に 80 列のデフォルトにフォールバックします。
次の問題を確認できます。
git tag --column=row
git-tag
最近ではページャーが生成されるため、生成
されたgit-column
ヘルパーは stdout のターミナルも有用なCOLUMNS
値も認識しません (まだシェルからエクスポートしていないと仮定します)。
また、端末のサイズに関係なく、ページャーに 80 列の出力が表示されます。
COLUMNS
これは、ページャーを生成する直前に設定することで修正できます。これにより、このケースだけでなく、より複雑なケース (たとえば、ページ化されたプログラムが別のスクリプトを生成し、列化された出力を生成する) も修正されます。
" " ( man )--nl
の " " オプションのパーサーは、Git 2.34 (Q4 2021) で修正されました。git column
SZEDER Gábor ( )によるコミット c93ca46 (2021 年 8 月 18 日)を参照してください。( 2021 年 9 月 8 日、コミット cfba196でJunio C Hamanoによってマージされました)szeder
gitster
column
--nl
: ' ' オプションの解析を修正してください
署名者: SZEDER Gábor
' git column
' ( man ) s ' --nl
' オプションを使用して、「各行の最後に出力する文字列」を指定できます (man ページを引用) が、このオプションとその必須の引数はOPT_INTEGER
、7e29b82のコマンド(「列レイアウトのスケルトンを追加し、git-column
」、2012-04-21、Git v1.7.11-rc0 --バッチ #9に記載されているマージ)。
その結果、数値以外の引数は parse-options によって拒否され、0 以外の数値は segfault につながります。
$ printf "%s\n" one two |git column --mode=plain --nl=foo
error: option `nl' expects a numerical value
$ printf "%s\n" one two |git column --mode=plain --nl=42
Segmentation fault (core dumped)
$ printf "%s\n" one two |git column --mode=plain --nl=0
one
two
このオプションを として解析しますOPT_STRING
。
git column
manページに含まれるようになりました:
--nl=<string>