[過去ログ]
Git 18 (1002レス)
Git 18 http://mevius.5ch.net/test/read.cgi/tech/1650651945/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
632: デフォルトの名無しさん (アウアウウー Sacf-0j67) [age] 2022/10/19(水) 13:19:13.07 ID:1sfAoeRGa Git v2.38.1 http://mevius.5ch.net/test/read.cgi/tech/1650651945/632
633: デフォルトの名無しさん (ワッチョイ 197b-QJZg) [sage] 2022/10/27(木) 07:22:57.17 ID:TnOoNEjS0 Git初心者でGit練習中の者だが、質問いい? 関数の履歴を見るコマンド Git log -L '/function myfunction/',/},/:myFile があり得ないほどメモリを食うのだが、これって今のところ仕様? それとも俺の使い方がまずい? 2MB程度のファイルを2800回程度コミットしたリポジトリがあって、git gc して12MBになってる。 これに対して上記コマンドが9.4GBメモリを食う。 おかげでMINGW32bit環境では全然駄目で、MINGW64bit環境だと上記の通り。 Linux64bi
t環境でもスワップを増やさないとコケたので4GB以上は食ってるはず。 (windowsでの結果をふまえ、スワップを9GBに増やした環境では動作した) Gitのバージョンは、Windowsは最新(2.38.1)で、Unixは2.20.1。 なお出力された内容には不満はない。 ただ、10-20行程度の関数が15個履歴として表示されるだけで、このメモリはあり得ない。 シェルスクリプトでも同じ物は得られるが、1GBすら行かないはず。 最初から最後までfreeしないでやってるとしか思えないが、何かそうなる理由ある? あと、オプション等で回避する方法があれば教えて。 http://mevius.
5ch.net/test/read.cgi/tech/1650651945/633
634: デフォルトの名無しさん (ワッチョイ e99f-fARP) [sage] 2022/10/28(金) 00:23:09.45 ID:yz6FOYrM0 LooseCompressionの全展開用の領域 2MB*2800=5.6GB git logは内部でlessにパイプでデータを渡してるから パイプバッファも含めて約2倍だろうか Packしなけりゃ少しはマシかもしれない(未確認) http://mevius.5ch.net/test/read.cgi/tech/1650651945/634
635: デフォルトの名無しさん (ワッチョイ 197b-QJZg) [sage] 2022/10/28(金) 07:15:31.79 ID:HlXde3ci0 >Pack git gcのことか? なら実は当初はしてなくて1.2GBあったが、その時からコケてた。少なくとも2GBは食ってる。 その後gc出来ると知り、やってみたが、実際は自動で何回かやってるようだし、多分大勢は変わりない。 (実は全部新たにコミットし直すのも試してる) なお愚直にgit show -> 切り出し -> diff を繰り返すだけのスクリプトを作って試してみた。 メモリは普段の使用と変わりなかった。 ただ問題は時間で、12分程度かかる。これ
では気軽には使えない。 MINGW64だと2分程度で済む。 時間がかかるのは一々ファイルにしてるから?だから、 /dev/fd/3等で全部でパイプに出来れば短縮出来るかも?、というところ。 (システムキャッシュに完全に載るサイズだから関係ないかも?だし、 そもそも2回ずつ使うのでパイプにフィットしないが) ただ現在でも初期画面は数分で出るし、出なければ大昔のコミットなのでどうせ問題なく、 実際の運用としては及第点ではある。でも速ければ速いに越した事はない。 Gitはおそらく速度重視なのだろう。 自動増加スワップのMINGW64環境なら現実的に
は大した問題にはならない。 ただ、全部メモリ上に展開する意味もメリットもないはずなので、 途中で一回もfreeしてないであろうこのコードは、コードとしては大問題だとは思うよ。 (ジョークで言われてる、Javaしか知らない奴が書いた、freeが一つもないコード、になってる) http://mevius.5ch.net/test/read.cgi/tech/1650651945/635
636: デフォルトの名無しさん (ワッチョイ 6ebb-eWiu) [sage] 2022/10/28(金) 07:18:13.37 ID:RikIMzkC0 報告してあげるといい事案だと感じる http://mevius.5ch.net/test/read.cgi/tech/1650651945/636
637: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/29(土) 06:39:27.49 ID:J4pkDf7Q0 パイプへの変更は厳しいので、一時ファイルを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超掴みに行くのは使用勝手が悪い。そもそも最初の方の履歴なんてほぼ要らんし。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/637
638: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/29(土) 08:37:46.51 ID:e5vmfD+T0 >>637 HEAD~100 とかじゃ駄目なの? http://mevius.5ch.net/test/read.cgi/tech/1650651945/638
639: デフォルトの名無しさん (ワッチョイ 8bbb-juJ7) [sage] 2022/10/29(土) 08:44:53.54 ID:+5EirK6r0 いやバグレポートすればいいと思う http://mevius.5ch.net/test/read.cgi/tech/1650651945/639
640: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/29(土) 09:15:13.77 ID:J4pkDf7Q0 >>638 実はそこは初心者過ぎてよく知らないんだわ。 git log HEAD~100 では制限出来なかったけど、どう書くべきなの? とりあえず公式マニュアルでは -n が最初に載ってるので、-n が一番お手軽なのだと思う。 これが効かないのは、多分実装忘れじゃないかと。 > https://www.git-scm.com/docs/git-log >>639 多分、メモリ大量使用は仕様で、-n が効かないのはバグだね。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/64
0
641: デフォルトの名無しさん (ワッチョイ 8bbb-juJ7) [sage] 2022/10/29(土) 09:25:26.30 ID:+5EirK6r0 合理性のないメモリ使用があるなら実害があるユーザーが改善のリクエストをバグレポートで出せばいい そういうもん レアケース扱いされることもあれば皆が困ってるようなら優先的にチューニングされる 仕様なのでは!?と空気読んで黙ってるのは奥ゆかしいニンジャ精神 http://mevius.5ch.net/test/read.cgi/tech/1650651945/641
642: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/29(土) 09:38:02.85 ID:J4pkDf7Q0 >>641 なるほどその通りだ。 ガイドラインが糞長げえ…orz が、数日のうちにレポートする方向でやります。 > https://www.chiark.greenend.org.uk/~sgtatham/bugs.html > https://www.git-scm.com/community 内の this guide が上記 http://mevius.5ch.net/test/read.cgi/tech/1650651945/642
643: デフォルトの名無しさん (ワッチョイ 7997-uk66) [] 2022/10/29(土) 11:09:21.06 ID:+W9Ulup+0 >>640 手練れのエンジニアとお見受けするが、どのジャンルで仕事されているので? http://mevius.5ch.net/test/read.cgi/tech/1650651945/643
644: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/29(土) 15:16:52.52 ID:e5vmfD+T0 >>640 HEAD~100..HEAD みたいなのを最後につけてレンジを制限する話だけど効かない? http://mevius.5ch.net/test/read.cgi/tech/1650651945/644
645: デフォルトの名無しさん (ワッチョイ 1302-4ham) [] 2022/10/29(土) 21:10:22.54 ID:YQqcaKMe0 git log -100 じゃなくて? http://mevius.5ch.net/test/read.cgi/tech/1650651945/645
646: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/29(土) 23:05:25.26 ID:e5vmfD+T0 >>645 -100 と -n 100 と --max-count=100 は同じ意味で表示するログの数を制限する A..B はログを検索する対象を制限する。(Bには存在するけどAには存在しないコミットという意味になる) http://mevius.5ch.net/test/read.cgi/tech/1650651945/646
647: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/30(日) 02:06:46.88 ID:IOU525bY0 >>644 効いた!ありがとう。 何ぞそれ?と思いきや git log のdocumentの頭に書いてあるのな。 > https://www.git-scm.com/docs/git-log gitは機能が多すぎてドキュメントがやたら長いので端折っていたのが敗因だ。 やはり最初は一通り読まないと駄目だな。 これなら回せばいいので、組んでみたら32bit環境で43秒で終了した。 これだと高速化チューニングではなく単にfree忘れっぽいのでレポートしておいた。 再現用のスクリプトも同梱し
てるから気になる人はどうぞ。 https://lore.kernel.org/git/CAFOPqVXz2XwzX8vGU7wLuqb2ZuwTuOFAzBLRM_QPk+NJa=eC-g@mail.gmail.com/T/#u http://mevius.5ch.net/test/read.cgi/tech/1650651945/647
648: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/30(日) 09:36:57.12 ID:b5HYhcbp0 >>647 おつかれ。 慣れてくると git log とかは全ログ対象にはしなくて、素でレンジ指定するので、この手のリソース問題は見つけ難いんだよな。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/648
649: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/30(日) 12:37:33.31 ID:IOU525bY0 >>648 初心者は意味不明な使い方を無自覚でやるから、どうしてもマイナーバグに当たりやすい。 なるほどタグを付けてgit logでは範囲指定がデフォか… ってそのままtutorialに書いてあったわ。やっぱちゃんと読まなきゃ駄目だったorz > https://www.git-scm.com/docs/gittutorial つまるところ、今までこんな馬鹿げた使い方をした奴は居なかっただけだな。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/649
650: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/30(日) 18:58:14.60 ID:IOU525bY0 git diff の出力はデフォでpatchになってるのだが、これどうやったら切れるんだ? > https://www.git-scm.com/docs/git-diff#Documentation/git-diff.txt--p 既にフォーマッタを持っているので、 unixコマンドのdiffのデフォルト出力と同じ物が欲しい。 切るオプションも無いし、下の方のCONFIGURATIONにもそれらしい設定が見つからない。 diff.externalでdiffごと入れ替えないと駄目とかいうクソ仕様? -s や --no-patchでは出力そのものが出な
くなる。ただし > or to cancel the effect of --patch. と書いてあるから、かつては--no-patchではdiffのデフォ出力で、-sで出力無しだった気配はあるが。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/650
651: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/30(日) 21:37:56.23 ID:b5HYhcbp0 >>650 git diff は git diff 形式 (unified diff 形式の変形) で出力される。それ以外の形式が欲しい場合は外部コマンド使うしかない。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/651
652: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/30(日) 22:10:12.22 ID:IOU525bY0 >>651 マジかー。クソ過ぎ。仕様考えた奴馬鹿すぎ。 スクリプトに食わす為に先頭の+-の文字を変更するオプションとかあるのだけど、 これでいいと思った奴は死ねだな。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/652
653: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/30(日) 22:14:38.98 ID:b5HYhcbp0 >>652 git はパッチ管理システムなんだから、それ以外が考慮されてると思う方が贅沢。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/653
654: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/30(日) 22:34:52.61 ID:IOU525bY0 >>653 いやそうじゃねえ。というかこれはソフトウェアの構成を間違ってるよ。 diffだってバグはあるのだから、内製は止めて、普通にdiffのdllをコールすべきなんだよ。 GitはLinusが1日で作ったらしいし、最初はどう考えてもそうなっていたはず。 だから俺は config の中にデフォで diff -u みたいなエイリアスがあるのかと思ってた。 diffを内包する事に、何のメリットもない。 この名残がexternal driverで、それが使えればいいという事な
のだろうけど、 ご丁寧にこれを禁止するオプションまである。(-no-ext-diff) 多人数の開発では、同じ画面を見ていた方が何かと楽だから、揃える方向で努力するのはごもっともだが、 禁止するのは違う。どこかでおかしな思想が混入しているよ。 そもそも、それ以外を考慮しない=外部コマンドで十分出来る事はdllを呼ぶ、であって、 この構成だとGitがdiffも構成してるから、君は認識を間違ってる。 Gitは明らかにおかしい方向で無駄な事をやってしまっている。 そしてそれは君の価値観的にもNGなはずだよ。 http://mevius.5ch.net/test/read.cgi/tec
h/1650651945/654
655: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/30(日) 23:37:53.37 ID:b5HYhcbp0 >>654 Linus のこと知ってるのなら長文書く前に調べろ。 git 作る以前から、みんなが勝手なフォーマットでパッチ送って来るのは非常に困るので推奨のパッチ形式を決めてあったんだよ。 で git 作る時に強制的にその形式に統一されるようにした。どうしても他の形式で出したい場合はひと手間かかるのが設計意図どおり。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/655
656: デフォルトの名無しさん (ワッチョイ 8b8f-5UCg) [sage] 2022/10/30(日) 23:53:15.06 ID:LXgcbV870 Linusも言ってたような気がするけど、気に食わなければ自分で作れ 以上 http://mevius.5ch.net/test/read.cgi/tech/1650651945/656
657: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/30(日) 23:58:47.31 ID:IOU525bY0 >>655 Linusはデフォを -u にして、patch送るならオプション無しで送れ、としただけでしょ。 これは間違ってない。 問題は、元のdiffの形式の出力が出来なくなってる事だよ。 オプションで出来るよ、でよかっただけ。 オプションすら禁止なら、今のgit diff に各種出力オプションがあること自体が君的に矛盾するだろ。 何故君がそんな意味不明なポジショントークをするのか分からないが、 Gitが方針を間違ってるのは事実だよ。 オプション禁止
なら、git diff にオプションを何一つ付けてはいけない。 (仮にこれであれば、賛同はしないが理解はする) ただまあ、ドキュメントの雰囲気だと、 おそらく昔は --no-patch で元のdiff形式が出せたのではないかと推測される。 君がどこまで知っているのか知らないけど、多分君の歴史理解も間違ってると思うよ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/657
658: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/31(月) 00:04:41.05 ID:h5Hfu9WR0 >>657 お前以外は誰もオプションとか必要ないから作ってないだけだよ。むしろ邪魔。どうしてもやりたければ外部コマンド指定でできるんだからオプションとかでやるよりよっぽど汎用性がある。 オープンソースなんだからオプション必要ならお前が自分でつくればいい。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/658
659: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/31(月) 00:08:19.51 ID:h5Hfu9WR0 あと −−no-patch には昔からパッチ出さない機能しかないぞ。頭悪い推測とかする暇があったら過去のソース確認してこい。 それこそ git で調べればすぐだぞ http://mevius.5ch.net/test/read.cgi/tech/1650651945/659
660: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/10/31(月) 00:21:01.40 ID:J+3pjzxx0 >>859 そうか?ならマニュアルの > to cancel the effect of --patch の部分は明らかに不要だから削除要請出しといてくれ。 というか君の「昔」がどれ位か知らんが、Linusの言ってた?フォーマットが統一されてないってのは、 diffの各種オプションではなく、edやsharに対してだと思うぞ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/660
661: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/10/31(月) 00:43:54.22 ID:h5Hfu9WR0 >>660 不要だと思ってるのはお前だけ。その思い込みが勘違いの原因だろ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/661
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 341 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s