[過去ログ]
Git 18 (1002レス)
Git 18 http://mevius.5ch.net/test/read.cgi/tech/1650651945/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
1: デフォルトの名無しさん (ワッチョイ 9ce4-E6ke) [] 2022/04/23(土) 03:25:45.27 ID:HOOXt/T30 ソースコード管理を行う分散型バージョン管理システム、Gitについて語ろう。 Git - Fast Version Control System http://git-scm.com/ ◆関連サイト Pro Git - Table of Contents http://git-scm.com/book/ja Git入門 http://www8.atwiki.jp/git_jp/ ◆前スレ Git 16©2ch.net https://mevius.5ch.net/test/read.cgi/tech/1502726047/ Git 17 https://mevius.5ch.net/test/read.cgi/tech/1599016710/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured http://mevius.5ch.net/test/read.cgi/tech/1650651945/1
922: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/05(土) 22:35:17.82 ID:646uiMLL0 >>920 > @{1}はひとつ前の操作によってHEADになったhashだから、どういう操作したかで変わり、リポジトリの構造とは関係無い だから、それは「そのbranchの」一つ前の操作なんだよ。 結果、diffは、masterブランチでは>>912で、HEAD~1 != @{1} だが、 developブランチでは、以下になって、 HEAD~1 == @{1} なんだよ。 $ git diff HEAD~1 diff --git a/test.txt b/test.txt index 3585d98..bbddc42 100644 --- a/test.txt +++ b/test.txt @@ -4,3 +4,4 @@ impl1 impl2 impl3 impl4 +impl5 $ git diff @{1} diff --git a/test.txt b/test.txt index 3585d98..bbddc42 100644 --- a/test.txt +++ b/test.txt @@ -4,3 +4,4 @@ impl1 impl2 impl3 impl4 +impl5 だからmasterブランチをdevelopにmergeしかしない運用をした場合、 masterブランチは @{n} でn回前のリリースが検索出来、存在価値が出てくる、という見立てだが、間違ってるか? (@はcommit履歴だと思ってるが、まさか操作履歴か?なら確かに意味無いし、先頭情報しか要らないし、reflogしかなくても納得だが) http://mevius.5ch.net/test/read.cgi/tech/1650651945/922
923: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 22:40:04.85 ID:zDjINlW+0 最終的にお前のリポジトリは git merge develop でこうなっているはずだ $ git log --graph --branches --oneline * 1a804d9 impl5 (HEAD -> master, develop) * xxxxxxx impl4 * xxxxxxx impl3 * xxxxxxx impl2 * xxxxxxx impl1 * xxxxxxx impl0 * b0325fc initial 最後のひとつ前の git switch master をやったときにはこうなっていたはず * 1a804d9 impl5 (develop) * xxxxxxx impl4 * xxxxxxx impl3 * xxxxxxx impl2 * xxxxxxx impl1 * xxxxxxx impl0 * b0325fc initial (HEAD -> master) だから HEAD@{0} = 1a804d9 で、HEAD@{1} = b0325fc http://mevius.5ch.net/test/read.cgi/tech/1650651945/923
924: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/05(土) 22:46:20.49 ID:646uiMLL0 >>921 @はやっぱcommit履歴だよな? エントリポインタだけだと、commit履歴に出来ないんだよ。 今回はfast-forwardマージしてるから、 init<-0<-1<-2<-3<-4<-5 = master, develop で、単にエントリポイントだけなら master も develop も同じ 5 で区別がない。 当たり前だが両方とも HEAD~1 は4を指してる。 ただ、@{1}は、commit履歴だから、masterでは init を指し、developでは4を指す。 この、commit履歴情報はどこに記録されてるの?というのが俺の質問。 >>923 そこは理解出来てるはず。上記の通り。 問題はcommit履歴がどこにあるか。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/924
925: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 22:50:12.27 ID:zDjINlW+0 >>922 masterブランチをdevelopブランチにマージする方法が git switch masterとgit merge developの連続実行だけではないし、 HEAD@{n}は適当なタイミングでGCされるから、 HEAD@{n}をそんな用途に使う奴はいない http://mevius.5ch.net/test/read.cgi/tech/1650651945/925
926: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 22:52:10.49 ID:zDjINlW+0 >>924 commit履歴がどこにあるか説明するのに使いたいから、git log --graph --branches --oneline してくれ http://mevius.5ch.net/test/read.cgi/tech/1650651945/926
927: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 22:54:11.54 ID:zDjINlW+0 @はcommit履歴じゃなくて、reflogの履歴 http://mevius.5ch.net/test/read.cgi/tech/1650651945/927
928: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/05(土) 22:57:39.34 ID:646uiMLL0 >>926 $ git log --graph --branches --oneline * 1a804d9 (HEAD -> master, develop) impl5 * ba4e962 impl4 * a32e11d impl3 * 8d9924f impl2 * 0f78740 impl1 * 47792a3 impl0 * b0325fc initial http://mevius.5ch.net/test/read.cgi/tech/1650651945/928
929: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 23:01:41.48 ID:zDjINlW+0 @{n}はカレントブランチのreflog履歴になるはず reflog履歴はブランチ毎に存在するので master@{n}とdevelop@{n}は違うハッシュになってるはず git reflog masterとgit reflog developで比べてみればわかる http://mevius.5ch.net/test/read.cgi/tech/1650651945/929
930: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/05(土) 23:04:26.02 ID:646uiMLL0 >>917,926 ちな --no-ff 版、 今出すと余計に混乱するかもだが。 $ git log --graph --branches --oneline * a5aaf72 (HEAD -> master, develop) Merge branch 'feature5' into develop |\ | * e03bcd0 impl5 |/ * 324df68 Merge branch 'feature4' into develop |\ | * c2634c4 impl4 |/ * 68ed20a Merge branch 'feature3' into develop |\ | * 5e12b99 impl3 |/ * 608e5d7 Merge branch 'feature2' into develop |\ | * 4660e46 impl2 |/ * 3924eae Merge branch 'feature1' into develop |\ | * 138d83f impl1 |/ * 7db4424 Merge branch 'feature0' into develop |\ | * 8877414 impl0 |/ * ec041f9 initial http://mevius.5ch.net/test/read.cgi/tech/1650651945/930
931: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/05(土) 23:08:22.79 ID:646uiMLL0 >>929 $ git reflog master 1a804d9 (HEAD -> master, develop) master@{0}: merge develop: Fast-forward b0325fc master@{1}: commit (initial): initial $ git reflog develop 1a804d9 (HEAD -> master, develop) develop@{0}: merge feature5: Fast-forward ba4e962 develop@{1}: merge feature4: Fast-forward a32e11d develop@{2}: merge feature3: Fast-forward 8d9924f develop@{3}: merge feature2: Fast-forward 0f78740 develop@{4}: merge feature1: Fast-forward 47792a3 develop@{5}: merge feature0: Fast-forward b0325fc develop@{6}: branch: Created from master ってことは、commit履歴はreflogにしか無いって事か? ならbrahchを消すとreflogも消されてcommit履歴が消えるが、マジ? これだとbranchの復活は本質的に無理なことになってしまう。 (他branchに断片的には残ってるんだけどさ) http://mevius.5ch.net/test/read.cgi/tech/1650651945/931
932: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [] 2022/11/05(土) 23:09:25.37 ID:zDjINlW+0 >>928 impl5のコミットオブジェクトの hash = 1a804d9 impl5のコミットオブジェクトの中には親のコミットオブジェクトimpl4の hash = ba4e962 が格納されている impl4のコミットオブジェクトの hash = ba4e962 impl4のコミットオブジェクトの中には親のコミットオブジェクトimpl3の hash = a32e11d が格納されている impl3のコミットオブジェクトの hash = a32e11d impl3のコミットオブジェクトの中には親のコミットオブジェクトimpl2の hash = 8d9924f が格納されている impl2のコミットオブジェクトの hash = 8d9924f impl2のコミットオブジェクトの中には親のコミットオブジェクトimpl1の hash = 0f78740 が格納されている impl1のコミットオブジェクトの hash = 0f78740 impl1のコミットオブジェクトの中には親のコミットオブジェクトimpl0の hash = 47792a3 が格納されている impl0のコミットオブジェクトの hash = 47792a3 impl0のコミットオブジェクトの中には親のコミットオブジェクトinitialの hash = b0325fc が格納されている initialのコミットオブジェクトの hash = b0325fc initialのコミットオブジェクトはルートなので親のコミットオブジェクトが存在しない つまり impl5のコミットオブジェクトの hash = 1a804d9 からたどっていけば、コミット履歴が全部わかる 親が複数存在する場合には複数の親のhashを格納する http://mevius.5ch.net/test/read.cgi/tech/1650651945/932
933: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 23:11:25.45 ID:zDjINlW+0 >>930 ¥で表示されるとちょっと見にくいが、慣れれば見やすい http://mevius.5ch.net/test/read.cgi/tech/1650651945/933
934: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 23:14:09.84 ID:zDjINlW+0 >>931 逆だ。コミットのつながりはコミットオブジェクトの中にしかない >>932 みたいにね それを説明してるのが >>902 http://mevius.5ch.net/test/read.cgi/tech/1650651945/934
935: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 23:16:52.31 ID:zDjINlW+0 >>930は最後のdevelopのマージが --no-ff になってないな 最後のも --no-ff にするともっと面白いぞ http://mevius.5ch.net/test/read.cgi/tech/1650651945/935
936: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/05(土) 23:18:09.46 ID:646uiMLL0 >>932 ごめん、それは分かってる。 それはグローバル履歴=gitオブジェクトを辿った履歴、だろ。 問題は、masterのcommitには b0325fc と 1a804d9 しかない、という情報が、 今のところ master の reflogにしか見あたらないんだよ。 だから、各branchを消したら、それ以前の gitオブジェクト は全部辿れるが、commit履歴は消失してしまう。 今のmasterみたいに、fast-forwardマージで中間をすっ飛ばしてきた、 という情報が無くなってしまうんだよ。 だから、branchを消す前の状態に完全には戻せない、という話。 だから、常識的に考えればもうちょっとましな何処かに保持してるはずなんだけど、無いんだ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/936
937: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/05(土) 23:21:56.96 ID:646uiMLL0 >>935 ほい $ git log --graph --branches --oneline * 2fb59f1 (HEAD -> master) Merge branch 'develop' |\ | * 25e1b95 (develop) Merge branch 'feature5' into develop | |\ | | * 4b27393 impl5 | |/ | * 9bfb8cc Merge branch 'feature4' into develop | |\ | | * c2a5b7d impl4 | |/ | * 02d2308 Merge branch 'feature3' into develop | |\ | | * f6d1cf7 impl3 | |/ | * 81e18bb Merge branch 'feature2' into develop | |\ | | * 01c3871 impl2 | |/ | * 5b57f48 Merge branch 'feature1' into develop | |\ | | * 0fe34d2 impl1 | |/ | * 6272da6 Merge branch 'feature0' into develop | |\ |/ / | * fe1b132 impl0 |/ * 832f464 initial http://mevius.5ch.net/test/read.cgi/tech/1650651945/937
938: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 23:23:27.84 ID:zDjINlW+0 >>936 FFマージしたらその情報は消滅するな --no-ff で全部マージすれば複数親のハッシュをもってるコミットオブジェクトの1番目だけたどればいける ^1 だけみていくね git log にはそれをやるオプションがあるはず >>930をそのオプションで表示すればこんな風に表示されるはず $ git log --graph --branches --oneline --オプション忘れた探せ * a5aaf72 (HEAD -> master, develop) Merge branch 'feature5' into develop * 324df68 Merge branch 'feature4' into develop * 68ed20a Merge branch 'feature3' into develop * 608e5d7 Merge branch 'feature2' into develop * 3924eae Merge branch 'feature1' into develop * 7db4424 Merge branch 'feature0' into develop * ec041f9 initial http://mevius.5ch.net/test/read.cgi/tech/1650651945/938
939: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 23:26:10.78 ID:zDjINlW+0 >>937 だとこう表示されるはず $ git log --graph --branches --oneline --オプション忘れた探せ * 2fb59f1 (HEAD -> master) Merge branch 'develop' * 832f464 initial http://mevius.5ch.net/test/read.cgi/tech/1650651945/939
940: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/05(土) 23:35:28.93 ID:646uiMLL0 >>938 $ git log --graph --branches --oneline --first-parent * a5aaf72 (HEAD -> master, develop) Merge branch 'feature5' into develop * 324df68 Merge branch 'feature4' into develop * 68ed20a Merge branch 'feature3' into develop * 608e5d7 Merge branch 'feature2' into develop * 3924eae Merge branch 'feature1' into develop * 7db4424 Merge branch 'feature0' into develop * ec041f9 initial >>939 $ git log --graph --branches --oneline --first-parent * 2fb59f1 (HEAD -> master) Merge branch 'develop' | * 25e1b95 (develop) Merge branch 'feature5' into develop | * 9bfb8cc Merge branch 'feature4' into develop | * 02d2308 Merge branch 'feature3' into develop | * 81e18bb Merge branch 'feature2' into develop | * 5b57f48 Merge branch 'feature1' into develop | * 6272da6 Merge branch 'feature0' into develop |/ * 832f464 initial http://mevius.5ch.net/test/read.cgi/tech/1650651945/940
941: デフォルトの名無しさん (ワッチョイ 09e4-chQ5) [sage] 2022/11/05(土) 23:41:19.40 ID:zDjINlW+0 >>939がそう表示されるのは、--no-ff マージの手順が何か普通とちがうからかもしれん >>939みたいに表示させるマージの手順もあるはずだから工夫してみるんだな http://mevius.5ch.net/test/read.cgi/tech/1650651945/941
942: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/05(土) 23:41:56.11 ID:646uiMLL0 >>938 なるほど了解した。 データ側に混ぜ込んでて、保持したければ --no-ff で使えってことか。 そもそも同じハッシュなら同じgitオブジェクトにリンクするようになってるのだし、 (つまり見た目が膨らんでるだけで実際の容量は大して食わない) --no-ff がデフォのほうがよかった気がするが。 まあとにかく了解した。長々とありがとう。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/942
943: デフォルトの名無しさん (ワッチョイ 527c-zlm6) [sage] 2022/11/06(日) 00:38:34.83 ID:UPUgwCSv0 FFがデフォじゃなと使いにくい気がするのだがw http://mevius.5ch.net/test/read.cgi/tech/1650651945/943
944: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 09:32:37.27 ID:OfQ8ymDc0 >>943 ffがデフォのメリットって何だ?特にないと思うが。見た目すっきり、か? ただまあ、デフォだし、サル先生他も特に何も言ってないので、ffでの運用が多数派なのだろう。 --no-ffはcommitオブジェクトが別に作られるだけで、 スナップショットに比べたらゴミなので全体としては大して増えない。 commit履歴はgitオブジェクトツリー内に混ぜ込まれ、完全に保持される。 ffの場合は、commit履歴情報はreflogにしか無いので、branchを削除したら基本的に失われる。 そしてreflogもgc対象なので、Linusはcommit履歴は基本的に保持する必要がないとの立場なのだろう。 また、branchを削除しろといいつつffなのは、その人達もcommit履歴は要らない、と考えていることになる。 ただこれは奇妙な実装だ。 カーナビを考えれば分かるが、当たり前だが地図情報とルート情報は別なのだ。混ぜ込むのはあり得ない。 commit履歴が要らないってのは、経路(線)は不問で、目的地(点)に着いてるかどうかだけだ、と言っているわけ。 それはバージョン管理の達人()にとっては、違うんだろ。バージョン管理は「線」であると! ただ、Linusも「点」の立場だね。まあプログラマ的にはこれで正しいんだよ。 コンピューターは今現在のソースコードしか見てなくて、どの経路を辿ったかなんて関係ない。 だからどういう紆余曲折(「線」)があったかではなく、結局は前回の「点」と今回の「点」のdiffだけが価値を持つ。 そしてLinusの個人的ツールであるGitも、この流れなわけだ。 とはいえ俺はルート情報はまた別に重要だと思うから、保持したい。 混ぜ込まれてる場合は後からbranchを追加することが絶対に出来ない。 まあ開発ツールとしては別経路から同じ点に到達しました!なんてのは現実的にあり得ないから、 偽造を防ぐ為にもこれでいいのかもしれんが、一般的に考えればこの実装は奇妙だ。 ちなみに一般文書、例えばEULA(EndUserLicenseAgreement)とかの隙を潰していくタイプの法務文書等は、 別経路だが最終到達時点は同じ、ということが普通にあり得るはず。 だからやっぱりGitはソースコード向けにしか出来てない、ということは認識しておくべきだろう。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/944
945: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 09:32:57.06 ID:OfQ8ymDc0 あと、Gitのドキュメントは全般的によく出来ているが、branchは「線だ!」と言ってるのは不適切だ。 Gitのドキュメントは密結合状態、つまりGitをよく知ってる人向けに書かれているので、 同様に内部実装を見せる形で書くのが正しく、 つまり、「branchは『線』のように見せてますが、実は『点』です!」と言わないと誤解される。俺がそうだが。 これは解像度が統一されてないから起こった問題だ。 一般のマニュアルは疎結合状態、 つまりそのツールについて内部実装なんて全く知らないし知る由もない人向けに書かれるから、 『見た目』線であれば「線」とずっと言い張り、内部実装を曝露してはいけない。 この場合、あくまでユーザーから見たら常に「線」であり、内部がどうであれ「線」としてしか見えないから誤解を生む余地はない。 Gitの場合は内部も見せた上でドキュメントとして外面仕様も説明することになってて、 それが外面仕様なのか内部実装なのか、 またbranchのように外面仕様と内部実装が異なってて隠蔽しきれてない場合とか、(--no-ffの有無で観測可能) それは正しく説明しなければならない。 密結合なら、上記の通り、「『線』として見せてますが実は『点』です!」と書くべきだ。 とはいえ全般的にドキュメントはしっかり書かれている。これ自体は素晴らしい。 ただ、そもそも仕様がグダグダ過ぎるし、 或いはユーザーにどこまで見せ、どこからは見せないのか、仕様を管理する感覚がまるでない。 おそらく上層部の連中に仕様管理の経験者がおらず、グダグダになってしまってる。 とはいえ、再度言うが、ドキュメントはよく書いてる方だよ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/945
946: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 09:33:22.07 ID:OfQ8ymDc0 ただこれだと、branchを「線」として扱おうとしたら動作が不安定になるわけで、 おそらくfilter-branchが不安定なのはこの辺に起因してる。 そしてドキュメントの何処か(多分showかlog)に、 「これには実はpitfallがあって、マージに遭遇した場合に分岐するから云々」とかいう (当時の俺にとって)謎の記述が挿入されてたのも納得がいく。 commit履歴を保持してないから確定的動作が出来ないんだよ。 これははっきり言って仕様の欠陥で、commit履歴も完全に保持する仕様だったら自然と回避出来てた。 現仕様では、filter-branchの実装をいくら頑張ったところでどうにもならない。 代わりのfilter-repoも、動作は同様に糞だろうよ。安定して使えるものではないはず。 ここら辺はちょっと惜しいね。Gitが素晴らしいのは、「伽藍とバザール」での > 9. 賢いデータ構造と間抜けなコードのほうが、その逆よりずっとまし。 を体現してるからであって、つまり根っこがしっかりしてるから上部は雑草でも問題なかったんだが、 この点は根っこが駄目だから、上部(filter-branch)が機能しない。 ここら辺はちゃんと仕様の大切さを理解してる奴が仕切らないと駄目なのだが、 おそらくGitの連中も、仕様を捏ねてる連中は手を動かしてないと見なし、嫌ってるのだろう。 だから仕様を捏ねることすらしてない。 ただ、それは結局は遠回りでしかない。 今のGitだと、filter-branchも、filter-repoも、その次に出てくる何かも、まともに動作するはずがない。 駄目な仕様だと実装をいくら頑張ってもどうにもならない、と知ってる奴が、ちゃんと仕切らないといけないんだけどね。 ただこれは、それを知らない奴にとってはムカつく奴でしかなく、そいつらを排除した結果、Gitは暴走中、というわけだ。 Linusがcommit履歴も大切に考える奴だったら違ってたが、惜しいね。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/946
947: デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 10:57:26.83 ID:FBkt/oHG0 長々と無駄な長文と大量投稿でスレを穢すんじゃねー。 単に既存のバージョン管理ツールと、git の考え方の違いが理解できてないだけじゃねーか。 ・git はパッチ管理ツール、作業履歴管理ツールじゃない。 ・ソフトウェアはパッチとパッチを当てる順番で構成されている。 1000回唱えろ。この思想が気に要らなければそもそも git 使うな。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/947
948: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 10:59:15.02 ID:OfQ8ymDc0 >>943 と思ったが、ffじゃないとhashが違うからウザいな。別物扱いだから、一々確認いるし。 オブジェクトツリーはffの方がいい。 ただこれだとcommit履歴が無く、俺的にはまずいので、別に保存したい。 ソースと混ざるとウザイので、可能なら分離したい。 ドキュメントによるとマルチルートも出来るらしいが、これはどうやってやるんだ? > Each project must have at least one root. A project can also have multiple roots, though that isn’t common (or necessarily a good idea). http://mevius.5ch.net/test/read.cgi/tech/1650651945/948
949: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 11:04:28.51 ID:OfQ8ymDc0 >>947 > ・git はパッチ管理ツール、作業履歴管理ツールじゃない。 ああ非常に納得出来る。Gitはmerge特化型だ。 確かにそれを日々の業務(非merge)に使おう、というのがフィットしないんだろうよ。 しかし世の中の一般人のGitの使い方は後者だろ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/949
950: デフォルトの名無しさん (ワッチョイ 515f-pSqO) [sage] 2022/11/06(日) 11:33:11.11 ID:sj15aRfA0 ということにしたいのですね。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/950
951: デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 11:46:16.67 ID:FBkt/oHG0 >>949 お前の狭い世間なんて知るか お前は話題の電動ドリル買ってきて釘打つのに不便ガンガンってやりながら文句言ってるのと同じレベル そもそもマニュアルもちゃんと読めてないだろ。root と route を間違える英語レベル 背伸びして git 学ぶ前に高校に進学して英語学んだ方が近道だぞ http://mevius.5ch.net/test/read.cgi/tech/1650651945/951
952: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 11:51:22.62 ID:OfQ8ymDc0 >>950 いや事実だよ。 Linusは確かにmergeしかしないんだろうけど。 だけどその、mergeするパッチを書く奴は、それを一発で書けたわけがないんだ。 何日もかけて、何回も直して、そこに到達してる。 この過程のサポートがGitにはない。 別branchで作業してもmerge時にhash値が組み込まれるから、 確かに俺がやろうとしてる「日々の進捗」をcommitされると除去出来ずウザイんだろうさ。 しかしパッチのコードは必ずGit-repoをクローンしてから出発するのだから、 Gitにこのサポートが無く、パッチを当てる人はいきなり完成したパッチを書け!勿論でバッグ済みだぞ!みたいな構造なのがおかしい。 すくなくとも、捨てbranch機能があって、そこで日々の作業を終わらせた結果、 mergeするときには本ブランチでその結果がいきなり生えたように見せる機能 (捨てbranchとmergeしても中身の結果だけもらって親にはしない) みたいな機能が必要なんだよ。 ただまあ、これは今でも手動だと出来た気はするが。 だからまあ、確かにパッチ管理ツールであって、 ソフトウェア開発時のバージョン管理ツールではないんだろうさ。 だけど、今、全世界のGitで、mergeコミットと通常のcommit、どっちが多いか考えれば、自明だろ。 一つのパッチを作るまでにも何回もcommitが必要なのだから。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/952
953: デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 12:07:06.70 ID:FBkt/oHG0 >>952 アホか。共同開発が全く理解できてねーじゃねーか。 お前の試行錯誤の記録を push しようとしてんじゃねーよ。 手元で試行錯誤して実装できたら、それを元に綺麗なパッチに書き直す作業するんだよ。 そして完成した綺麗なパッチ群のみを共有リポジトリに公開するんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/953
954: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 12:19:51.48 ID:OfQ8ymDc0 >>948 一応見つけた。 git worktree らしい。 複数のbranchを同時に開く機能で、DBで言うATTACHっぽい。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/954
955: デフォルトの名無しさん (ワッチョイ b114-pSqO) [sage] 2022/11/06(日) 12:20:57.36 ID:JyiC8cnE0 試行錯誤はすべて記録に残すべき →じゃあテキストエディタで保存するたびに記録するべきっていうのか? こういう話なので無視すんなよ?w http://mevius.5ch.net/test/read.cgi/tech/1650651945/955
956: デフォルトの名無しさん (ワッチョイ b114-pSqO) [sage] 2022/11/06(日) 12:21:44.03 ID:JyiC8cnE0 バージョン管理はソースコードの変更履歴を残すのであって 作業履歴を残すものじゃないっていうのが分かってなさすぎ http://mevius.5ch.net/test/read.cgi/tech/1650651945/956
957: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 12:30:26.14 ID:OfQ8ymDc0 >>953 それはいいんだけどさ、その肝心のパッチを書く人へのサポートがまるでないだろ。 出発点がgit clone で、その上で作業して、終われば pull request する前提なのにさ。 そしてOSSではなく一般企業等で使ってる奴は、 当たり前だが日々の作業のバックアップや巻き戻し出来るシステムが必要で、そう使ってる。 だから、Gitが難しすぎるというのは、目的外使用だから意味が分かりにくい、というのはあるね。 Indexもマージの時にはあった方が便利なんだろうしさ。(ただのcommitには邪魔でしかない) しかし確かに、Linusに言わせれば、全く問題ないんだろうさ。彼はmergeしかしないしね。 そして他のVCSよりまし、という理由でGitを使う奴は、混乱するんだろうさ。VCSと聞いてきたのだからね。 確かにパッチ管理システムだよGitは。ソースコード生成時のサポートシステムではない。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/957
958: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 12:32:16.81 ID:OfQ8ymDc0 >>955 > こういう話なので無視すんなよ?w 無視する/しない以前に、何が言いたいのか分からないから反応しようがないんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/958
959: デフォルトの名無しさん (ワッチョイ 515f-pSqO) [sage] 2022/11/06(日) 12:42:58.45 ID:sj15aRfA0 >>957 > それはいいんだけどさ、その肝心のパッチを書く人へのサポートがまるでないだろ。 rebase あるよ。 元のローカルブランチを消さないでおけば記録もぜんぶ残るし。よかったね。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/959
960: デフォルトの名無しさん (ワッチョイ debb-qVfh) [sage] 2022/11/06(日) 12:43:13.14 ID:FBkt/oHG0 >>957 git ほどパッチを書くのに向いてるツールは他にないぞ。 index 無しでどうやってパッチの分割とかするんだよ? http://mevius.5ch.net/test/read.cgi/tech/1650651945/960
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
991: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:27:42.33 ID:VM2X6i580 regressionする際にもコミットを管理するのは重要で コミット単位で戻してテストする 動かないコードをコミットすることはない お前みたいにテキストエディタで修正するたびにコミットとかしない http://mevius.5ch.net/test/read.cgi/tech/1650651945/991
992: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:28:57.43 ID:VM2X6i580 なんでchromeのコミットメッセージが こんなに詳しく書かれているのか、その理由を考えたら? http://mevius.5ch.net/test/read.cgi/tech/1650651945/992
993: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 19:32:31.47 ID:VM2X6i580 バージョン管理はソースコードの変更履歴を管理するものなので そこにバグ管理という別の概念を持ち出すのも頭悪い バグ管理は別のツールでやれ http://mevius.5ch.net/test/read.cgi/tech/1650651945/993
994: デフォルトの名無しさん (ワッチョイ 515f-pSqO) [sage] 2022/11/06(日) 19:55:47.23 ID:sj15aRfA0 >>986 > 例えば今回俺が送った再現コード、あれはどこに配置されるのだ? 修正コミットのログから URL で辿れるようになるかな。 https://public-inbox.org/git/20221102220142.574890-2-szeder.dev@gmail.com/ http://mevius.5ch.net/test/read.cgi/tech/1650651945/994
995: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 20:08:52.18 ID:OfQ8ymDc0 >>994 それは鯖に置いてるだけだろ。まあそれはそれで十分で、(この意味では最初のMLでも十分) 問題は、 1. .git上、つまりソースコード改変ツリーから簡単に辿れるよう、 commitメッセージにそのリンクは落とされている(落とされる予定)なのか? そうじゃないと>>977が達成出来ないだろ。 2. そしてregressionテストパターンとして登録され、今後ずっと実行されるのか? 3. そもそも根本の原因はソースコードの程度が酷いことであり、レビューしろよマジで だよ。 レイヤーの考え方がない奴等ばかりなので通じないかもしれないが、 gitは適用/記録という下層レイヤーであって、バグ/パッチ「管理」は上位レイヤーの戦略だから、 gitで「管理」出来ると思ってるのが間違いなんだよ。記録は出来るが、管理は出来ない。 gitで出来るのは上の1だけだね。 だからcommitメッセージは勿論丁寧に書くべきなんだけど、丁寧に書けばいいわけでもないんだ。 それでバグやパッチが減るわけでもないから。 目的と手段の混同はどの界隈でもあるけど、ここの連中も大概だよ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/995
996: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 20:11:50.13 ID:OfQ8ymDc0 >>994 と思ったがすまん、見落とした。 > 修正コミットのログ つまりこれ、コミットメッセージそのものなのか? ちょっと確認したいんだが、どこ見ればいいんだ?GitのGitHubから? http://mevius.5ch.net/test/read.cgi/tech/1650651945/996
997: デフォルトの名無しさん (ワッチョイ 515f-pSqO) [sage] 2022/11/06(日) 20:22:10.42 ID:sj15aRfA0 >>996 そう。コミットメッセージを含めてML上でレビュー中。まだ本体リポジトリには入ってない。 挙がってるレビューコメントを受けてそのうち第2弾が投稿されて取り込まれるんじゃないかな。 君もソースコードの質が気になるなら修正を送ってくれていいんだよ。さぁさぁ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/997
998: デフォルトの名無しさん (ワッチョイ 617b-8+ss) [sage] 2022/11/06(日) 20:38:50.28 ID:OfQ8ymDc0 >>997 つまりあれがそのままに近い状態で入るのか? まあそれは見守るとして、本来はちゃんとラベルを付け替えないとまずい。 俺が送った段階では高い確率で「free忘れによるメモリリーク」と推定出来たが、 断定は出来なかったので、単に「メモリ食いすぎ」としてる。 だから、メモリリークだと「断定」出来た人が概略を書き直さないといけない。 が、まあ、これは多分為されるだろう。見守るよ。 > 君もソースコードの質が気になるなら修正を送ってくれていいんだよ。さぁさぁ。 これは本質的に無理だ。多分俺、というか、いわゆるCコードを拒絶すると思うよ。 間違いなく、連中は自己の能力に自信持ってて、傲慢で、言うこと聞かない連中だ。 世の中のCコードなんて、基本通りやってる物でほぼ全部だから、見たこと無いわけが無い。 それが何故そうなってるか理解出来ない、 つまり、王道を王道と理解出来ない奴等だからデタラメやってるわけで、 言うこと聞く連中ならそうはならない。 通常だと、やらせるだけやらせて、でもどうにももうダメポなときに、 そもそもお前のコードがおかしい、ここをこう直せ、なら簡単にメモリリークは抑えられる、とすると効くのだろうけど、 問題はバザールで、無限にモグラ叩き出来てしまって、実際にそれでやろうとしてることだよ。 マジかー、って、ちょっと驚きだが、まあ観戦だ。 ああちなみに、俺以外の誰でも、まともなC書ける奴なら、ちょっと引くコードだよ。 だからそこら辺の奴等に書かせても、もっとましなコードになるよ。そして俺もその程度だし。 というか単発のコードでそんなに技量の差なんて出ないし。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/998
999: デフォルトの名無しさん (ワッチョイ ad14-pSqO) [sage] 2022/11/06(日) 20:40:54.42 ID:VM2X6i580 >>998 お前がちゃんとやれって言われるだけだよ お前雑なんだよ。無能なのに張り切るな。空回りしてるぞw http://mevius.5ch.net/test/read.cgi/tech/1650651945/999
1000: デフォルトの名無しさん (ブーイモ MM96-1bV6) [sage] 2022/11/06(日) 20:46:49.73 ID:wlljBD17M 質問いいすか? http://mevius.5ch.net/test/read.cgi/tech/1650651945/1000
1001: 1001 [] ID:Thread このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 197日 17時間 21分 4秒 http://mevius.5ch.net/test/read.cgi/tech/1650651945/1001
1002: 1002 [] ID:Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ https://premium.5ch.net/ ▼ 浪人ログインはこちら ▼ https://login.5ch.net/login.php http://mevius.5ch.net/test/read.cgi/tech/1650651945/1002
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s