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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
967
(1): デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 13:57:15.91 ID:OfQ8ymDc0(12/24) AAS
>>963,964
お前らunixコマンドの使い方知らないだろ。
patch/merge/diff3はgit以前からあるコマンドで、多分初期Gitはそのまま使ってたと思うが。

具体的な使い方は以下。
今、元 fileA に対して、変更後 fileC になってるが、実は中間の fileB が欲しかったとする。このとき、

cp fileA fileB
diff fileA fileC | less -N; // ここで該当行を確認する。例えば10-20行目なら、
diff fileA fileC | sed -n '10,20 p' | patch fileB

これでfileBが得られるんだよ。これ以上色々複雑な時用に diff3 とか merge もある。
だからパッチの分割はすぐ出来るんだよ。
968
(1): デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 14:05:27.55 ID:az1H5JFk0(2/7) AAS
>>967
そういう作業を必要で無くすためにgitが生まれた
patchの提出をgitの分散リポジトリ上で可能とするためにね
963とか964が行ってるpatchというのは、いわゆるpatchファイルのことではなく、ブランチ上に存在する差分の事
そのpatchを整理するのに index や rebase がある
969
(1): デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 14:19:49.14 ID:FBkt/oHG0(6/8) AAS
もしかして、もしかすると、git では「パッチ=コミット」っていうことすら理解できてないのだろうか。
まさかそんな人はいないよね。単に言動が変な人なだけだよね。
970
(1): デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:25:32.34 ID:OfQ8ymDc0(13/24) AAS
>>968
知ってるよ。

ただまあ、確かにパッチ管理ツールだ。
プログラマはこれをソースコード管理ツールとして使おうとするから問題なのだろう。
バックアップが取れて、履歴が戻れれば何でもいいんだが、mergeも出来るから便利だからね。

なお俺は
> ブランチ上に存在する差分の事
も所詮はdiffだ、という立場だよ。だから元のunixコマンドで何とでもなるし、
それをシェルスクリプトで集大成したのが初期Gitだろ。
971
(1): デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 14:31:58.60 ID:FBkt/oHG0(7/8) AAS
>>970
ちがうぞ。最初からパッチ管理ツールとして設計されるぞ。
そしてパッチ管理ツールなんだから、パッチの出力機能さえあれば良いんだぞ。
それ以外の差分が欲しかったら別の外部ツール使えば良いんだぞ。それこそ基本だろ
972
(1): デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:33:28.64 ID:OfQ8ymDc0(14/24) AAS
>>969
各commmit「点」でdiff取ったときに落ちる情報って何?
ああcommitメッセージか?そんなのは知らんし要らんよ、って立場。

つか、commitメッセージガーなんて言い訳にならないから、
どのみちソースコードを確認するしかないんだよ。
commitメッセージはその手がかりとラベルに過ぎない。これが俺、というか多分普通のプログラマの立場。
お前らはcommitメッセージが間違ってたら、そいつに責任を負わせられるんだろうさ。
ソースコード読めないからね。

ソースコード読める奴ならこんな言い訳効かないんだよ、何でお前が上にいるんだ!監督する為だろ!になる。
さすがに素通しはヤバい。
そしてどう見てもヤバいパッチを素通ししてるから、なんじゃあこりゃあ?ってなってる。
973: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:36:33.55 ID:OfQ8ymDc0(15/24) AAS
>>971
ああそれが diff のデフォルト出力をさせない理由だな。
651から一周回ったが、なるほど色々状況は理解出来たよ。賛同はしないが。
974
(2): デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 14:45:12.77 ID:FBkt/oHG0(8/8) AAS
>>972
だからお前の考えてるような作業履歴管理ツールじゃないんだから、あきらめて他所へ行け。
gitはパッチ管理ツール。そしてパッチは何時、誰が、何のために作成したかが重要情報なんだよ。それを管理してるんだよ。
ソースコードの保管するツールじゃねーぞ。
975: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:49:22.34 ID:OfQ8ymDc0(16/24) AAS
>>974
そこは違うんだな。
みんな結局自分でやるのも作るのも面倒だから、既に動いてるツールを使ってるだけだよ。
Gitの機能のサブセットで十分にカバー出来るのなら、Git使えばいいだけ。
976: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:56:19.71 ID:OfQ8ymDc0(17/24) AAS
>>974
だからな、前言ったように、ブッ込んでおけば後で取り出せるバケツでしかないんだよ。
そのバケツにゴテゴテ付いてるから難しそうだが、要らない機能は使わなければいいだけ。
ただ、履歴保持の範囲を知らずに使って、実は記録されていませんでは困るから、使う前に調べてる。
977
(2): デフォルトの名無しさん (ワッチョイ 515f-nsye) [sage] 2022/11/06(日) 15:45:34.08 ID:o7v4FvnP0(1) AAS
https://www.praha-inc.com/lab/posts/commit-message

そもそもコミットメッセージは何のためにあるのでしょうか?

コミットログのうちコードの変更履歴には「コードをどのように変更したか」という情報が含まれていますが、「コードを何故変更したのか」という情報はコミットメッセージを読まないと分かりません。機能追加、バグ修正、パフォーマンスのためなど、変更した理由は様々なものが考えられます。

もちろんコードを変更した本人に聞けば変更した意図はわかると思いますが、変更した本人にいつでも聞ける状況であるとは限りません。

「何故コードを変更したのか」という情報が欲しい時のためにコミットメッセージが存在します。

加えて、コミットメッセージは基本的に他人が読むものです。

他人というと同僚やコントリビューターなどが挙げられると思いますが、この「他人」には未来の自分も含んでいます。自分が書いたコミットメッセージを数ヶ月先の自分が読む場合、過去の自分のコミットメッセージを未来の自分が読むことになります。

つまり、コミットメッセージは自分以外の人のために存在するのです。
978: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 15:52:02.65 ID:az1H5JFk0(3/7) AAS
まあこいつは分散バージョン管理の難しさを理解できていない
一人でしかプログラム組んだことがないのだろう
gitのややこしいと感じる仕様のほとんどは分散リポジトリ管理に起因していて、分散リポジトリ管理の問題をできるだけ明示的にシンプルに解決しようという意図で設計されている
979: デフォルトの名無しさん (ワッチョイ b114-pSqO) [sage] 2022/11/06(日) 15:55:03.47 ID:JyiC8cnE0(5/6) AAS
ほんとなぁ、POSIX原理主義だからユニケージだかUSP研究所だかしらんが
例のあいつも、バージョン管理のツールを、バックアップツールとしてしか考えてねぇ
だからとりあえずファイルを入れておけば差分はdiffで見れるだろとか
訳のわからんことを言い出す

ある時点とある時点の差を見たいんじゃねーんだよ
ある修正にどのような差分があるかを記録=コミットしたいわけで
その記録なしに差分だけみれても役に立たないっつーの
そこが根本的に違うというか、バージョン管理の役目がわかってない
980: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 16:10:07.15 ID:az1H5JFk0(4/7) AAS
「ブッ込んでおけば後で取り出せるバケツ」など言っているが、
必要とされていたのは内容を同期できる複数のバケツで、
なおかつバケツ同士が常にオンラインで通信しているわけではない
そういう問題に取り組んだ結果だ
981: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 16:12:28.94 ID:az1H5JFk0(5/7) AAS
そういう魔法のバケツを生み出すために、ただのバケツならできることがgitでは制限されていたりもする
ユーザから見て不自由のない完全な魔法のバケツを生み出そうとしたプロジェクトは複雑すぎてことごとく失敗してきた
982: デフォルトの名無しさん (ワッチョイ b114-pSqO) [sage] 2022/11/06(日) 16:14:37.71 ID:JyiC8cnE0(6/6) AAS
バケツの中に入っている袋詰めの塩や砂糖を、一つづつ取り出したいのであって

バケツの中に全部入ってるから、遠心分離機でも使って
取り出せばいいだろうじゃないんだよなw
983: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 16:36:01.68 ID:az1H5JFk0(6/7) AAS
前スレは消費に1年半かかってるのに、このスレは半年ぐらいで終わりだな
次スレ立ててみるけど失敗したらゴメン
984: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [] 2022/11/06(日) 16:41:37.94 ID:az1H5JFk0(7/7) AAS
次スレ
Git 19
2chスレ:tech
985
(1): デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 19:18:45.16 ID:OfQ8ymDc0(18/24) AAS
相変わらずお前ら盛大に勘違いしてるが、とりあえず、

× Gitはパッチ管理ツールである
○ Gitはパッチ適用ツールである
○ Gitはパッチ記録ツールである

としよう。管理は出来てない。何を管理すべきか分かってないから。
commitメッセージなんてただのラベルに過ぎない。
986
(1): デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 19:19:20.86 ID:OfQ8ymDc0(19/24) AAS
例えば今回俺が送った再現コード、あれはどこに配置されるのだ?
>>977の通り、「何故この変更を行ったのか」の完全情報がそこにある。
まさか捨てたりしないよな?

バグパッチに於いて、重要な物から順に、

1. そのバグを修正するコード
2. そのバグを再現するコード

10000, commitメッセージ

だ。どんなに丁寧にcommitメッセージを書いたところで、「それ、あなたの感想ですよね?」でしかない。
肝心なところを書き間違ってるかもしれないし、信用も出来ない。
この点、再現コードは情報が完全で、全ての情報を過不足無く含んでいて、曖昧さもない。
だからcommitメッセージの情報価値なんて再現コードと比べたらゴミ以下で、
再現コードに対してのリンクで十分なんだよ。つまり、

○年○月○日に○○から送られてきた○○のバグ(メモリリーク)を修正する。
詳細はXXXX

で、XXXXのところ、Git流ならSHA1ハッシュで、
その中に再現コードと詳細、今回なら全員のメールの全文を入れておくのがバグ管理だよ。
これで、「何故この変更を行ったのか」の完全情報が保たれる。
そして、再現コードは今後ずっとregressionテストに使う資産にする。
そうすれば、少なくとも過去と同じバグはリリース前に見つかる。
987: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 19:20:02.27 ID:OfQ8ymDc0(20/24) AAS
こうなってないだろ。一回パッチ当てて動きました!満足です!じゃないんだよ。
繰り返すが、commitメッセジーをいくら丁寧に書いても意味無い。
再現コードに比べたら本当にゴミ以下。
逆に、再現コードに辿り着けるのなら、後はラベルが正しく付いてれば十分なんだ。
それ以上の情報は、commitメッセージのテキストではなく、
再現コードとバグ報告=完全情報を見た方がいいから。

で、GitHubはまあこれに近いよ。
そもそもバグ報告自体Webだし、少なくともIssueからバグの完全情報に当たれる。
Gitはどうなの?
今回の俺と同様の、過去のバグ報告の再現コードを生かせてるのか?
ならそういうディレクトリがあって、
bug_patches/XXXXXなハッシュが名前になってるディレクトリに再現コードその他がブチ込まれてて、
出荷前(というのもおかしいが)には全部一通り通せ、となってるはずだけど、
どう見てもそうなってないでしょ。
パッチ当てたから満足です、で終わってる。

こんなのでバグが収束するはずがない。
同じ連中が書いてるのだから、放置したら同レベルのバグを繰り返す。
だから本来は何故こんなバグが発生したのか?からコード構造を見直して、
そもそもそうならないようにするのだけど、そういう学びもないし、(だから基本すら出来てない)
regressionテストのネタにもしないのだから、今後ともバグだらけだよ。
ああ、Gitの達人揃いだから、「記録」は出来てるのだろうよ。だけどそれは「管理」ではない。

ただ、これがバザール流だ!と来るなら、はーそうですかー(棒)だよ。
目も手も数が違うし、俺には何が最適か分からんし。
988
(1): デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 19:20:37.38 ID:OfQ8ymDc0(21/24) AAS
ちなみにchromeの連中は気持ち悪いほどregressionテストしてるぞ。
本来は、ああするべきなんだろうよ。
regressionテスト自体はタダ(スクリプトで自動実行)だからね。

バグ「管理」というのなら、原因を究明して、少なくとも同じバグが出ないようにしないといけない。
それはcommitメッセージをいくら丁寧に詳細に書いても、達成出来るものではない。

分かりやすく言うとな、「体調管理」と言われれば、少なくとも同じ原因で風邪を引かないようにするだろ。
なら、「バグ管理」なら、最低限レビューしてregressionテストしないと駄目だよ。
それはcommitメッセージ云々では出来ない。だからパッチ「適用」「記録」ツール。
989: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:24:47.08 ID:VM2X6i580(1/6) AAS
>>985
> commitメッセージなんてただのラベルに過ぎない。

その言葉からお前がわかってないのが明らかなんだけど?
990: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:26:23.98 ID:VM2X6i580(2/6) AAS
>>988
うん。だからそのchromeはここまで徹底してコミットを管理してる
それを見習え
https://github.com/chromium/chromium/commits/main
991: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:27:42.33 ID:VM2X6i580(3/6) AAS
regressionする際にもコミットを管理するのは重要で
コミット単位で戻してテストする
動かないコードをコミットすることはない
お前みたいにテキストエディタで修正するたびにコミットとかしない
992: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:28:57.43 ID:VM2X6i580(4/6) AAS
なんでchromeのコミットメッセージが
こんなに詳しく書かれているのか、その理由を考えたら?
993: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:32:31.47 ID:VM2X6i580(5/6) AAS
バージョン管理はソースコードの変更履歴を管理するものなので
そこにバグ管理という別の概念を持ち出すのも頭悪い
バグ管理は別のツールでやれ
994
(2): デフォルトの名無しさん (ワッチョイ 515f-pSqO) [sage] 2022/11/06(日) 19:55:47.23 ID:sj15aRfA0(3/4) AAS
>>986
> 例えば今回俺が送った再現コード、あれはどこに配置されるのだ?
修正コミットのログから URL で辿れるようになるかな。
https://public-inbox.org/git/20221102220142.574890-2-szeder.dev@gmail.com/
995: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 20:08:52.18 ID:OfQ8ymDc0(22/24) AAS
>>994
それは鯖に置いてるだけだろ。まあそれはそれで十分で、(この意味では最初のMLでも十分)
問題は、

1. .git上、つまりソースコード改変ツリーから簡単に辿れるよう、
commitメッセージにそのリンクは落とされている(落とされる予定)なのか?
そうじゃないと>>977が達成出来ないだろ。
2. そしてregressionテストパターンとして登録され、今後ずっと実行されるのか?
3. そもそも根本の原因はソースコードの程度が酷いことであり、レビューしろよマジで

だよ。
レイヤーの考え方がない奴等ばかりなので通じないかもしれないが、
gitは適用/記録という下層レイヤーであって、バグ/パッチ「管理」は上位レイヤーの戦略だから、
gitで「管理」出来ると思ってるのが間違いなんだよ。記録は出来るが、管理は出来ない。
gitで出来るのは上の1だけだね。
だからcommitメッセージは勿論丁寧に書くべきなんだけど、丁寧に書けばいいわけでもないんだ。
それでバグやパッチが減るわけでもないから。
目的と手段の混同はどの界隈でもあるけど、ここの連中も大概だよ。
996
(1): デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 20:11:50.13 ID:OfQ8ymDc0(23/24) AAS
>>994
と思ったがすまん、見落とした。

> 修正コミットのログ

つまりこれ、コミットメッセージそのものなのか?
ちょっと確認したいんだが、どこ見ればいいんだ?GitのGitHubから?
997
(1): デフォルトの名無しさん (ワッチョイ 515f-pSqO) [sage] 2022/11/06(日) 20:22:10.42 ID:sj15aRfA0(4/4) AAS
>>996
そう。コミットメッセージを含めてML上でレビュー中。まだ本体リポジトリには入ってない。
挙がってるレビューコメントを受けてそのうち第2弾が投稿されて取り込まれるんじゃないかな。
君もソースコードの質が気になるなら修正を送ってくれていいんだよ。さぁさぁ。
998
(1): デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 20:38:50.28 ID:OfQ8ymDc0(24/24) AAS
>>997
つまりあれがそのままに近い状態で入るのか?
まあそれは見守るとして、本来はちゃんとラベルを付け替えないとまずい。

俺が送った段階では高い確率で「free忘れによるメモリリーク」と推定出来たが、
断定は出来なかったので、単に「メモリ食いすぎ」としてる。
だから、メモリリークだと「断定」出来た人が概略を書き直さないといけない。

が、まあ、これは多分為されるだろう。見守るよ。

> 君もソースコードの質が気になるなら修正を送ってくれていいんだよ。さぁさぁ。
これは本質的に無理だ。多分俺、というか、いわゆるCコードを拒絶すると思うよ。
間違いなく、連中は自己の能力に自信持ってて、傲慢で、言うこと聞かない連中だ。
世の中のCコードなんて、基本通りやってる物でほぼ全部だから、見たこと無いわけが無い。
それが何故そうなってるか理解出来ない、
つまり、王道を王道と理解出来ない奴等だからデタラメやってるわけで、
言うこと聞く連中ならそうはならない。

通常だと、やらせるだけやらせて、でもどうにももうダメポなときに、
そもそもお前のコードがおかしい、ここをこう直せ、なら簡単にメモリリークは抑えられる、とすると効くのだろうけど、
問題はバザールで、無限にモグラ叩き出来てしまって、実際にそれでやろうとしてることだよ。
マジかー、って、ちょっと驚きだが、まあ観戦だ。
ああちなみに、俺以外の誰でも、まともなC書ける奴なら、ちょっと引くコードだよ。
だからそこら辺の奴等に書かせても、もっとましなコードになるよ。そして俺もその程度だし。
というか単発のコードでそんなに技量の差なんて出ないし。
999: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 20:40:54.42 ID:VM2X6i580(6/6) AAS
>>998
お前がちゃんとやれって言われるだけだよ
お前雑なんだよ。無能なのに張り切るな。空回りしてるぞw
1000: デフォルトの名無しさん (ブーイモ MM96-1bV6) [sage] 2022/11/06(日) 20:46:49.73 ID:wlljBD17M(1) AAS
質問いいすか?
1001
(1): 1001 [] ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 197日 17時間 21分 4秒
1002
(1): 1002 [] ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s