[過去ログ] Git 18 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
635: (ワッチョイ 197b-QJZg) 2022/10/28(金)07:15 ID:HlXde3ci0(1) AAS
>Pack
git gcのことか?
なら実は当初はしてなくて1.2GBあったが、その時からコケてた。少なくとも2GBは食ってる。
その後gc出来ると知り、やってみたが、実際は自動で何回かやってるようだし、多分大勢は変わりない。
(実は全部新たにコミットし直すのも試してる)

なお愚直にgit show -> 切り出し -> diff を繰り返すだけのスクリプトを作って試してみた。
メモリは普段の使用と変わりなかった。
ただ問題は時間で、12分程度かかる。これでは気軽には使えない。
MINGW64だと2分程度で済む。

時間がかかるのは一々ファイルにしてるから?だから、
/dev/fd/3等で全部でパイプに出来れば短縮出来るかも?、というところ。
(システムキャッシュに完全に載るサイズだから関係ないかも?だし、
そもそも2回ずつ使うのでパイプにフィットしないが)
ただ現在でも初期画面は数分で出るし、出なければ大昔のコミットなのでどうせ問題なく、
実際の運用としては及第点ではある。でも速ければ速いに越した事はない。

Gitはおそらく速度重視なのだろう。
自動増加スワップのMINGW64環境なら現実的には大した問題にはならない。
ただ、全部メモリ上に展開する意味もメリットもないはずなので、
途中で一回もfreeしてないであろうこのコードは、コードとしては大問題だとは思うよ。
(ジョークで言われてる、Javaしか知らない奴が書いた、freeが一つもないコード、になってる)
636
(1): (ワッチョイ 6ebb-eWiu) 2022/10/28(金)07:18 ID:RikIMzkC0(1) AAS
報告してあげるといい事案だと感じる
637
(1): (ワッチョイ 497b-vCJ4) 2022/10/29(土)06:39 ID:J4pkDf7Q0(1/3) AAS
パイプへの変更は厳しいので、一時ファイルをRAMDISK上に配置してみたが所要時間は変化無し。
よってシステムキャッシュは効いてて、パイプにしても高速化予算はほぼ無いと分かった。
diffを切ったら8分、さらに切り出しを切っても8分(変化無し)、git showをgit --version に変更したら2分で終了した。
よって時間予算は gitプロセス起動が1/6(2分)、git show が1/2(6分)、切り出しはほぼ0、diffが1/3(4分)と判明。
git showを高速化する為には出来るだけ纏めて取り出すのがよく、
メモリ無限大なら全展開が一番速いのも事実だが、せめてコア数程度にして欲しい。
見てる限り特に先頭も末尾も異常に速くはならない為、
動画と同様に途中にスナップショットを適度に挟んでいるように見え、なら、全展開する必然性/妥当性はない。
(やってもそんなに速くはならないのにメモリを異常に消費する=スワップする分余計に遅くなる)

>>636
これは開発者マシンなら最低でもRAM16GBでSSDだよね!というノリなら方針は間違ってない。
ただ、-n 100 とかで直近100コミットに絞れればいいだけなのだが、これが出来ないのが問題。
どうやってもいきなり9GB超掴みに行くのは使用勝手が悪い。そもそも最初の方の履歴なんてほぼ要らんし。
638
(1): (ワッチョイ 8bbb-VzUj) 2022/10/29(土)08:37 ID:e5vmfD+T0(1/3) AAS
>>637
HEAD~100 とかじゃ駄目なの?
639
(1): (ワッチョイ 8bbb-juJ7) 2022/10/29(土)08:44 ID:+5EirK6r0(1/2) AAS
いやバグレポートすればいいと思う
640
(2): (ワッチョイ 497b-vCJ4) 2022/10/29(土)09:15 ID:J4pkDf7Q0(2/3) AAS
>>638
実はそこは初心者過ぎてよく知らないんだわ。
git log HEAD~100
では制限出来なかったけど、どう書くべきなの?

とりあえず公式マニュアルでは -n が最初に載ってるので、-n が一番お手軽なのだと思う。
これが効かないのは、多分実装忘れじゃないかと。
> 外部リンク:www.git-scm.com

>>639
多分、メモリ大量使用は仕様で、-n が効かないのはバグだね。
641
(1): (ワッチョイ 8bbb-juJ7) 2022/10/29(土)09:25 ID:+5EirK6r0(2/2) AAS
合理性のないメモリ使用があるなら実害があるユーザーが改善のリクエストをバグレポートで出せばいい
そういうもん
レアケース扱いされることもあれば皆が困ってるようなら優先的にチューニングされる
仕様なのでは!?と空気読んで黙ってるのは奥ゆかしいニンジャ精神
642: (ワッチョイ 497b-vCJ4) 2022/10/29(土)09:38 ID:J4pkDf7Q0(3/3) AAS
>>641
なるほどその通りだ。
ガイドラインが糞長げえ…orz が、数日のうちにレポートする方向でやります。
> 外部リンク[html]:www.chiark.greenend.org.uk
> 外部リンク:www.git-scm.com 内の this guide が上記
643: (ワッチョイ 7997-uk66) 2022/10/29(土)11:09 ID:+W9Ulup+0(1) AAS
>>640
手練れのエンジニアとお見受けするが、どのジャンルで仕事されているので?
644
(1): (ワッチョイ 8bbb-VzUj) 2022/10/29(土)15:16 ID:e5vmfD+T0(2/3) AAS
>>640
HEAD~100..HEAD みたいなのを最後につけてレンジを制限する話だけど効かない?
645
(1): (ワッチョイ 1302-4ham) 2022/10/29(土)21:10 ID:YQqcaKMe0(1) AAS
git log -100 じゃなくて?
646: (ワッチョイ 8bbb-VzUj) 2022/10/29(土)23:05 ID:e5vmfD+T0(3/3) AAS
>>645
-100 と -n 100 と --max-count=100 は同じ意味で表示するログの数を制限する
A..B はログを検索する対象を制限する。(Bには存在するけどAには存在しないコミットという意味になる)
647
(1): (ワッチョイ 497b-vCJ4) 2022/10/30(日)02:06 ID:IOU525bY0(1/6) AAS
>>644
効いた!ありがとう。

何ぞそれ?と思いきや git log のdocumentの頭に書いてあるのな。
> 外部リンク:www.git-scm.com
gitは機能が多すぎてドキュメントがやたら長いので端折っていたのが敗因だ。
やはり最初は一通り読まないと駄目だな。

これなら回せばいいので、組んでみたら32bit環境で43秒で終了した。
これだと高速化チューニングではなく単にfree忘れっぽいのでレポートしておいた。
再現用のスクリプトも同梱してるから気になる人はどうぞ。
外部リンク:lore.kernel.org
648
(1): (ワッチョイ 8bbb-VzUj) 2022/10/30(日)09:36 ID:b5HYhcbp0(1/4) AAS
>>647
おつかれ。
慣れてくると git log とかは全ログ対象にはしなくて、素でレンジ指定するので、この手のリソース問題は見つけ難いんだよな。
649: (ワッチョイ 497b-vCJ4) 2022/10/30(日)12:37 ID:IOU525bY0(2/6) AAS
>>648
初心者は意味不明な使い方を無自覚でやるから、どうしてもマイナーバグに当たりやすい。
なるほどタグを付けてgit logでは範囲指定がデフォか…
ってそのままtutorialに書いてあったわ。やっぱちゃんと読まなきゃ駄目だったorz
> 外部リンク:www.git-scm.com
つまるところ、今までこんな馬鹿げた使い方をした奴は居なかっただけだな。
650
(1): (ワッチョイ 497b-vCJ4) 2022/10/30(日)18:58 ID:IOU525bY0(3/6) AAS
git diff の出力はデフォでpatchになってるのだが、これどうやったら切れるんだ?
> 外部リンク:www.git-scm.com

既にフォーマッタを持っているので、
unixコマンドのdiffのデフォルト出力と同じ物が欲しい。
切るオプションも無いし、下の方のCONFIGURATIONにもそれらしい設定が見つからない。
diff.externalでdiffごと入れ替えないと駄目とかいうクソ仕様?
-s や --no-patchでは出力そのものが出なくなる。ただし
> or to cancel the effect of --patch.
と書いてあるから、かつては--no-patchではdiffのデフォ出力で、-sで出力無しだった気配はあるが。
651
(1): (ワッチョイ 8bbb-VzUj) 2022/10/30(日)21:37 ID:b5HYhcbp0(2/4) AAS
>>650
git diff は git diff 形式 (unified diff 形式の変形) で出力される。それ以外の形式が欲しい場合は外部コマンド使うしかない。
652
(1): (ワッチョイ 497b-vCJ4) 2022/10/30(日)22:10 ID:IOU525bY0(4/6) AAS
>>651
マジかー。クソ過ぎ。仕様考えた奴馬鹿すぎ。
スクリプトに食わす為に先頭の+-の文字を変更するオプションとかあるのだけど、
これでいいと思った奴は死ねだな。
653
(1): (ワッチョイ 8bbb-VzUj) 2022/10/30(日)22:14 ID:b5HYhcbp0(3/4) AAS
>>652
git はパッチ管理システムなんだから、それ以外が考慮されてると思う方が贅沢。
654
(1): (ワッチョイ 497b-vCJ4) 2022/10/30(日)22:34 ID:IOU525bY0(5/6) AAS
>>653
いやそうじゃねえ。というかこれはソフトウェアの構成を間違ってるよ。

diffだってバグはあるのだから、内製は止めて、普通にdiffのdllをコールすべきなんだよ。
GitはLinusが1日で作ったらしいし、最初はどう考えてもそうなっていたはず。
だから俺は config の中にデフォで diff -u みたいなエイリアスがあるのかと思ってた。
diffを内包する事に、何のメリットもない。

この名残がexternal driverで、それが使えればいいという事なのだろうけど、
ご丁寧にこれを禁止するオプションまである。(-no-ext-diff)
多人数の開発では、同じ画面を見ていた方が何かと楽だから、揃える方向で努力するのはごもっともだが、
禁止するのは違う。どこかでおかしな思想が混入しているよ。

そもそも、それ以外を考慮しない=外部コマンドで十分出来る事はdllを呼ぶ、であって、
この構成だとGitがdiffも構成してるから、君は認識を間違ってる。
Gitは明らかにおかしい方向で無駄な事をやってしまっている。
そしてそれは君の価値観的にもNGなはずだよ。
655
(1): (ワッチョイ 8bbb-VzUj) 2022/10/30(日)23:37 ID:b5HYhcbp0(4/4) AAS
>>654
Linus のこと知ってるのなら長文書く前に調べろ。
git 作る以前から、みんなが勝手なフォーマットでパッチ送って来るのは非常に困るので推奨のパッチ形式を決めてあったんだよ。
で git 作る時に強制的にその形式に統一されるようにした。どうしても他の形式で出したい場合はひと手間かかるのが設計意図どおり。
656: (ワッチョイ 8b8f-5UCg) 2022/10/30(日)23:53 ID:LXgcbV870(1) AAS
Linusも言ってたような気がするけど、気に食わなければ自分で作れ
以上
657
(1): (ワッチョイ 497b-vCJ4) 2022/10/30(日)23:58 ID:IOU525bY0(6/6) AAS
>>655
Linusはデフォを -u にして、patch送るならオプション無しで送れ、としただけでしょ。
これは間違ってない。
問題は、元のdiffの形式の出力が出来なくなってる事だよ。
オプションで出来るよ、でよかっただけ。

オプションすら禁止なら、今のgit diff に各種出力オプションがあること自体が君的に矛盾するだろ。
何故君がそんな意味不明なポジショントークをするのか分からないが、
Gitが方針を間違ってるのは事実だよ。
オプション禁止なら、git diff にオプションを何一つ付けてはいけない。
(仮にこれであれば、賛同はしないが理解はする)

ただまあ、ドキュメントの雰囲気だと、
おそらく昔は --no-patch で元のdiff形式が出せたのではないかと推測される。
君がどこまで知っているのか知らないけど、多分君の歴史理解も間違ってると思うよ。
658: (ワッチョイ 8bbb-VzUj) 2022/10/31(月)00:04 ID:h5Hfu9WR0(1/9) AAS
>>657
お前以外は誰もオプションとか必要ないから作ってないだけだよ。むしろ邪魔。どうしてもやりたければ外部コマンド指定でできるんだからオプションとかでやるよりよっぽど汎用性がある。
オープンソースなんだからオプション必要ならお前が自分でつくればいい。
659: (ワッチョイ 8bbb-VzUj) 2022/10/31(月)00:08 ID:h5Hfu9WR0(2/9) AAS
あと −−no-patch には昔からパッチ出さない機能しかないぞ。頭悪い推測とかする暇があったら過去のソース確認してこい。
それこそ git で調べればすぐだぞ
660
(1): (ワッチョイ 497b-vCJ4) 2022/10/31(月)00:21 ID:J+3pjzxx0(1/22) AAS
>>859
そうか?ならマニュアルの
> to cancel the effect of --patch
の部分は明らかに不要だから削除要請出しといてくれ。

というか君の「昔」がどれ位か知らんが、Linusの言ってた?フォーマットが統一されてないってのは、
diffの各種オプションではなく、edやsharに対してだと思うぞ。
661: (ワッチョイ 8bbb-VzUj) 2022/10/31(月)00:43 ID:h5Hfu9WR0(3/9) AAS
>>660
不要だと思ってるのはお前だけ。その思い込みが勘違いの原因だろ。
662: (ワッチョイ 497b-vCJ4) 2022/10/31(月)07:08 ID:J+3pjzxx0(2/22) AAS
色々確認したが、Gitの現状認識としては651であってるっぽい。
そして外部ツール使うしかないが、これは環境設定無しでコマンドだけで出来る。(動作確認済み)
git difftool --extcmd=/usr/bin/diff <commit> <commit>
> 外部リンク:qastack.jp

ついでにその中、
> Gitについて学ぶほど、それは1人の人、つまり元のプログラマーのために作られたものだと感じます。
これもよく言われてるようだが、俺も今回の件で同意だ。
合理性に欠ける判断をしているのだから色々文句言われるのも当然だ。
ただLinusは自分用に作った物を公開したら勝手に使われてるだけだから、知ったこっちゃ無いってのも分かる。
ただそれならそうと、いつもの調子でドキュメントにも書いててくれないと困るね。
合理的な構成を推定すると迷子になってしまう。

俺は絶対に diff -u 以外のフォーマットを許さない!絶対にだ!

とか書いてあれば、最初から諦めるので無駄に探す必要はなかった。
俺はLinusのこういった感情的な部分はわりと好きなのだが、まあ昨今の code of conduct では書いても消されるんだろうけども。
663
(1): (ワッチョイ 497b-vCJ4) 2022/10/31(月)10:11 ID:J+3pjzxx0(3/22) AAS
てかGitってまさかのモノリシックかよ!
こりゃ文句言われるのも分かるわ。完全に方向を間違ってる。
結果的に肥大化していったのだろうけど、現在の状況でこれは駄目だよ。

つかこれシェル化する方向のプロジェクトはないの?
子コマンド群のバイナリだけ貰いたいんだけどさ。
664: (ワッチョイ a95f-Tk+f) 2022/10/31(月)10:39 ID:sko8U7ef0(1/2) AAS
>>663 好きに fork しなよ。
1-
あと 338 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.020s