[過去ログ]
Git 18 (1002レス)
Git 18 http://mevius.5ch.net/test/read.cgi/tech/1650651945/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
961: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 12:53:16.71 ID:OfQ8ymDc0 >>960 最初から一つずつ書けば分割の必要ないし、 Index無くてもdiffの出力を絞ってpatchに食わせれば普通に分割出来るだろ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/961
962: デフォルトの名無しさん (ワッチョイ b114-pSqO) [sage] 2022/11/06(日) 13:02:38.08 ID:JyiC8cnE0 >>958 書いてあるとおりじゃん。 試行錯誤の履歴を全部取れというなら、テキストエディタで保存するごとに gitでコミットしなければならないはずだ お前の主張はそういうことなんだから、それをちゃんとやれってこと http://mevius.5ch.net/test/read.cgi/tech/1650651945/962
963: デフォルトの名無しさん (ワッチョイ b114-pSqO) [sage] 2022/11/06(日) 13:04:02.78 ID:JyiC8cnE0 >>961 コミットがメチャクチャなのに、どうやってdiffとってパッチできると思ってるの? そのdiffには関係がない修正が大量に入ってるだろ http://mevius.5ch.net/test/read.cgi/tech/1650651945/963
964: デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 13:37:22.28 ID:FBkt/oHG0 >>961 なんも分かってないことを露呈しているな。 A,B,C,D,Eとコミットした後に Cはc1,c2,c3に分割すべきで、BとEは一つにすべきで、Aは不要だったと気づいたらどうすんの? こういうのがお手軽にできて綺麗なパッチ群に整理できるのがパッチ管理ツールである git の利点なんだ。 そういうのやったことないだろ? http://mevius.5ch.net/test/read.cgi/tech/1650651945/964
965: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 13:39:49.06 ID:az1H5JFk0 >>954 脊髄反射で理解したつもりになって書いてるだろ正解率が著しく低い git worktreeは一つのリポジトリに追加のワークツリーを用意して、異なるブランチをそれぞれ別のワークツリーにcheckoutできるようにする機能 DBのATTACHとは全然違う マルチルートは普通に作ったリポジトリをfetchやpushで合成してmerge --allow-unrelated-historiesすればできる でもこれはかなり特殊な用途に使うもので普段使いするようなものではない http://mevius.5ch.net/test/read.cgi/tech/1650651945/965
966: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 13:46:46.96 ID:OfQ8ymDc0 >>965 実は今し方ドキュメント読んで、これは違うと書こうとしたところだった。 wor,ktreeはstashの代わりで、同時作業用ではないね。 > マルチルートは普通に作ったリポジトリをfetchやpushで合成して ああこれは俺の要求とは違うね。 まあ、もう地味に.git/.xxx/に転がそうと思案中。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/966
967: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 13:57:15.91 ID:OfQ8ymDc0 >>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 もある。 だからパッチの分割はすぐ出来るんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/967
968: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 14:05:27.55 ID:az1H5JFk0 >>967 そういう作業を必要で無くすためにgitが生まれた patchの提出をgitの分散リポジトリ上で可能とするためにね 963とか964が行ってるpatchというのは、いわゆるpatchファイルのことではなく、ブランチ上に存在する差分の事 そのpatchを整理するのに index や rebase がある http://mevius.5ch.net/test/read.cgi/tech/1650651945/968
969: デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 14:19:49.14 ID:FBkt/oHG0 もしかして、もしかすると、git では「パッチ=コミット」っていうことすら理解できてないのだろうか。 まさかそんな人はいないよね。単に言動が変な人なだけだよね。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/969
970: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:25:32.34 ID:OfQ8ymDc0 >>968 知ってるよ。 ただまあ、確かにパッチ管理ツールだ。 プログラマはこれをソースコード管理ツールとして使おうとするから問題なのだろう。 バックアップが取れて、履歴が戻れれば何でもいいんだが、mergeも出来るから便利だからね。 なお俺は > ブランチ上に存在する差分の事 も所詮はdiffだ、という立場だよ。だから元のunixコマンドで何とでもなるし、 それをシェルスクリプトで集大成したのが初期Gitだろ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/970
971: デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 14:31:58.60 ID:FBkt/oHG0 >>970 ちがうぞ。最初からパッチ管理ツールとして設計されるぞ。 そしてパッチ管理ツールなんだから、パッチの出力機能さえあれば良いんだぞ。 それ以外の差分が欲しかったら別の外部ツール使えば良いんだぞ。それこそ基本だろ http://mevius.5ch.net/test/read.cgi/tech/1650651945/971
972: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:33:28.64 ID:OfQ8ymDc0 >>969 各commmit「点」でdiff取ったときに落ちる情報って何? ああcommitメッセージか?そんなのは知らんし要らんよ、って立場。 つか、commitメッセージガーなんて言い訳にならないから、 どのみちソースコードを確認するしかないんだよ。 commitメッセージはその手がかりとラベルに過ぎない。これが俺、というか多分普通のプログラマの立場。 お前らはcommitメッセージが間違ってたら、そいつに責任を負わせられるんだろうさ。 ソースコード読めないからね。 ソースコード読める奴ならこんな言い訳効かないんだよ、何でお前が上にいるんだ!監督する為だろ!になる。 さすがに素通しはヤバい。 そしてどう見てもヤバいパッチを素通ししてるから、なんじゃあこりゃあ?ってなってる。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/972
973: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:36:33.55 ID:OfQ8ymDc0 >>971 ああそれが diff のデフォルト出力をさせない理由だな。 651から一周回ったが、なるほど色々状況は理解出来たよ。賛同はしないが。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/973
974: デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 14:45:12.77 ID:FBkt/oHG0 >>972 だからお前の考えてるような作業履歴管理ツールじゃないんだから、あきらめて他所へ行け。 gitはパッチ管理ツール。そしてパッチは何時、誰が、何のために作成したかが重要情報なんだよ。それを管理してるんだよ。 ソースコードの保管するツールじゃねーぞ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/974
975: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:49:22.34 ID:OfQ8ymDc0 >>974 そこは違うんだな。 みんな結局自分でやるのも作るのも面倒だから、既に動いてるツールを使ってるだけだよ。 Gitの機能のサブセットで十分にカバー出来るのなら、Git使えばいいだけ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/975
976: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 14:56:19.71 ID:OfQ8ymDc0 >>974 だからな、前言ったように、ブッ込んでおけば後で取り出せるバケツでしかないんだよ。 そのバケツにゴテゴテ付いてるから難しそうだが、要らない機能は使わなければいいだけ。 ただ、履歴保持の範囲を知らずに使って、実は記録されていませんでは困るから、使う前に調べてる。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/976
977: デフォルトの名無しさん (ワッチョイ 515f-nsye) [sage] 2022/11/06(日) 15:45:34.08 ID:o7v4FvnP0 https://www.praha-inc.com/lab/posts/commit-message そもそもコミットメッセージは何のためにあるのでしょうか? コミットログのうちコードの変更履歴には「コードをどのように変更したか」という情報が含まれていますが、「コードを何故変更したのか」という情報はコミットメッセージを読まないと分かりません。機能追加、バグ修正、パフォーマンスのためなど、変更した理由は様々なものが考えられます。 もちろんコードを変更した本人に聞けば変更した意図はわかると思いますが、変更した本人にいつでも聞ける状況であるとは限りません。 「何故コードを変更したのか」という情報が欲しい時のためにコミットメッセージが存在します。 加えて、コミットメッセージは基本的に他人が読むものです。 他人というと同僚やコントリビューターなどが挙げられると思いますが、この「他人」には未来の自分も含んでいます。自分が書いたコミットメッセージを数ヶ月先の自分が読む場合、過去の自分のコミットメッセージを未来の自分が読むことになります。 つまり、コミットメッセージは自分以外の人のために存在するのです。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/977
978: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 15:52:02.65 ID:az1H5JFk0 まあこいつは分散バージョン管理の難しさを理解できていない 一人でしかプログラム組んだことがないのだろう gitのややこしいと感じる仕様のほとんどは分散リポジトリ管理に起因していて、分散リポジトリ管理の問題をできるだけ明示的にシンプルに解決しようという意図で設計されている http://mevius.5ch.net/test/read.cgi/tech/1650651945/978
979: デフォルトの名無しさん (ワッチョイ b114-pSqO) [sage] 2022/11/06(日) 15:55:03.47 ID:JyiC8cnE0 ほんとなぁ、POSIX原理主義だからユニケージだかUSP研究所だかしらんが 例のあいつも、バージョン管理のツールを、バックアップツールとしてしか考えてねぇ だからとりあえずファイルを入れておけば差分はdiffで見れるだろとか 訳のわからんことを言い出す ある時点とある時点の差を見たいんじゃねーんだよ ある修正にどのような差分があるかを記録=コミットしたいわけで その記録なしに差分だけみれても役に立たないっつーの そこが根本的に違うというか、バージョン管理の役目がわかってない http://mevius.5ch.net/test/read.cgi/tech/1650651945/979
980: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 16:10:07.15 ID:az1H5JFk0 「ブッ込んでおけば後で取り出せるバケツ」など言っているが、 必要とされていたのは内容を同期できる複数のバケツで、 なおかつバケツ同士が常にオンラインで通信しているわけではない そういう問題に取り組んだ結果だ http://mevius.5ch.net/test/read.cgi/tech/1650651945/980
981: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 16:12:28.94 ID:az1H5JFk0 そういう魔法のバケツを生み出すために、ただのバケツならできることがgitでは制限されていたりもする ユーザから見て不自由のない完全な魔法のバケツを生み出そうとしたプロジェクトは複雑すぎてことごとく失敗してきた http://mevius.5ch.net/test/read.cgi/tech/1650651945/981
982: デフォルトの名無しさん (ワッチョイ b114-pSqO) [sage] 2022/11/06(日) 16:14:37.71 ID:JyiC8cnE0 バケツの中に入っている袋詰めの塩や砂糖を、一つづつ取り出したいのであって バケツの中に全部入ってるから、遠心分離機でも使って 取り出せばいいだろうじゃないんだよなw http://mevius.5ch.net/test/read.cgi/tech/1650651945/982
983: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/06(日) 16:36:01.68 ID:az1H5JFk0 前スレは消費に1年半かかってるのに、このスレは半年ぐらいで終わりだな 次スレ立ててみるけど失敗したらゴメン http://mevius.5ch.net/test/read.cgi/tech/1650651945/983
984: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [] 2022/11/06(日) 16:41:37.94 ID:az1H5JFk0 次スレ Git 19 http://mevius.5ch.net/test/read.cgi/tech/1667720427/ http://mevius.5ch.net/test/read.cgi/tech/1650651945/984
985: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 19:18:45.16 ID:OfQ8ymDc0 相変わらずお前ら盛大に勘違いしてるが、とりあえず、 × Gitはパッチ管理ツールである ○ Gitはパッチ適用ツールである ○ Gitはパッチ記録ツールである としよう。管理は出来てない。何を管理すべきか分かってないから。 commitメッセージなんてただのラベルに過ぎない。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/985
986: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 19:19:20.86 ID:OfQ8ymDc0 例えば今回俺が送った再現コード、あれはどこに配置されるのだ? >>977の通り、「何故この変更を行ったのか」の完全情報がそこにある。 まさか捨てたりしないよな? バグパッチに於いて、重要な物から順に、 1. そのバグを修正するコード 2. そのバグを再現するコード : 10000, commitメッセージ だ。どんなに丁寧にcommitメッセージを書いたところで、「それ、あなたの感想ですよね?」でしかない。 肝心なところを書き間違ってるかもしれないし、信用も出来ない。 この点、再現コードは情報が完全で、全ての情報を過不足無く含んでいて、曖昧さもない。 だからcommitメッセージの情報価値なんて再現コードと比べたらゴミ以下で、 再現コードに対してのリンクで十分なんだよ。つまり、 ○年○月○日に○○から送られてきた○○のバグ(メモリリーク)を修正する。 詳細はXXXX で、XXXXのところ、Git流ならSHA1ハッシュで、 その中に再現コードと詳細、今回なら全員のメールの全文を入れておくのがバグ管理だよ。 これで、「何故この変更を行ったのか」の完全情報が保たれる。 そして、再現コードは今後ずっとregressionテストに使う資産にする。 そうすれば、少なくとも過去と同じバグはリリース前に見つかる。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/986
987: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 19:20:02.27 ID:OfQ8ymDc0 こうなってないだろ。一回パッチ当てて動きました!満足です!じゃないんだよ。 繰り返すが、commitメッセジーをいくら丁寧に書いても意味無い。 再現コードに比べたら本当にゴミ以下。 逆に、再現コードに辿り着けるのなら、後はラベルが正しく付いてれば十分なんだ。 それ以上の情報は、commitメッセージのテキストではなく、 再現コードとバグ報告=完全情報を見た方がいいから。 で、GitHubはまあこれに近いよ。 そもそもバグ報告自体Webだし、少なくともIssueからバグの完全情報に当たれる。 Gitはどうなの? 今回の俺と同様の、過去のバグ報告の再現コードを生かせてるのか? ならそういうディレクトリがあって、 bug_patches/XXXXXなハッシュが名前になってるディレクトリに再現コードその他がブチ込まれてて、 出荷前(というのもおかしいが)には全部一通り通せ、となってるはずだけど、 どう見てもそうなってないでしょ。 パッチ当てたから満足です、で終わってる。 こんなのでバグが収束するはずがない。 同じ連中が書いてるのだから、放置したら同レベルのバグを繰り返す。 だから本来は何故こんなバグが発生したのか?からコード構造を見直して、 そもそもそうならないようにするのだけど、そういう学びもないし、(だから基本すら出来てない) regressionテストのネタにもしないのだから、今後ともバグだらけだよ。 ああ、Gitの達人揃いだから、「記録」は出来てるのだろうよ。だけどそれは「管理」ではない。 ただ、これがバザール流だ!と来るなら、はーそうですかー(棒)だよ。 目も手も数が違うし、俺には何が最適か分からんし。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/987
988: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 19:20:37.38 ID:OfQ8ymDc0 ちなみにchromeの連中は気持ち悪いほどregressionテストしてるぞ。 本来は、ああするべきなんだろうよ。 regressionテスト自体はタダ(スクリプトで自動実行)だからね。 バグ「管理」というのなら、原因を究明して、少なくとも同じバグが出ないようにしないといけない。 それはcommitメッセージをいくら丁寧に詳細に書いても、達成出来るものではない。 分かりやすく言うとな、「体調管理」と言われれば、少なくとも同じ原因で風邪を引かないようにするだろ。 なら、「バグ管理」なら、最低限レビューしてregressionテストしないと駄目だよ。 それはcommitメッセージ云々では出来ない。だからパッチ「適用」「記録」ツール。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/988
989: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:24:47.08 ID:VM2X6i580 >>985 > commitメッセージなんてただのラベルに過ぎない。 その言葉からお前がわかってないのが明らかなんだけど? http://mevius.5ch.net/test/read.cgi/tech/1650651945/989
990: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:26:23.98 ID:VM2X6i580 >>988 うん。だからそのchromeはここまで徹底してコミットを管理してる それを見習え https://github.com/chromium/chromium/commits/main http://mevius.5ch.net/test/read.cgi/tech/1650651945/990
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 12 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s