22/11/06 17:05:45.20 FBkt/oHG0.net
乙
3:デフォルトの名無しさん
22/11/06 20:50:19.64 VM2X6i580.net
前スレの結論
- git はバージョン管理ソフト
- バージョン管理ソフトはバックアップソフトじゃない
- 管理するのはソースコードじゃなくて変更履歴
- お前の汚い試行錯誤の作業履歴をバージョン管理するな
- gitはお前の作業の管理ツールではない
- コミットメッセージはきちんとかけ
4:デフォルトの名無しさん
22/11/06 20:59:13.27 OfQ8ymDc0.net
前スレ>>1000
どうぞ。ってか俺が答える訳じゃないけどな。
5:デフォルトの名無しさん
22/11/06 21:16:22.34 OfQ8ymDc0.net
前スレ>>999
それが本質的に違うんだよ。
連中はいわゆるコードの「清潔さ」に価値を置いてないから(一般価値観からすると)デタラメなコードになってる。
そこに「綺麗な」コードを持って行っても、
え?なに?綺麗なだけ?バグは直ってないの?なら要らないよ
になるんだよ。「綺麗な」コードは汚いコードと同じ動作をする、綺麗なだけのコードだから。
そして「汚い」コードの方が簡単に書ける(=設計を必要としない)から、手数では負ける。
だからもう既に「汚い」コードのパッチが出てる時点で、
誰かが「綺麗な」コードを持ち寄っても連中の価値観では無視される。
(仮に採用されるとしても、今後とんでもない糞コードで上書きされる事になるので、コードを投げたくもない)
ただな、「綺麗な」コードの目的は、結局のところ長期的保守だから、
今も、今までも、この方法でずっと保守出来てる、
とする連中には、効かないし、確かに意味のないものかもしれないんだよ。
だけどこれは学術界からすると異端も異端、でもそれで確かに回っちゃってるんだから、
どうなのよこれ?なんだよ。どっちが正しいのか/適切なのかも俺にはよく分からん。
ただ俺は、綺麗なコードを書きたいし、それが良しとされる世界がいいから、とりあえず近づかずにいよう、って感じ。
多分一般Cの連中も同じじゃないかと思われる。だからあの状態なわけで。
まあこれはさておき、だからマージ回数とかも半端ないわけで、
> ブランチを切るのに大変時間がかかっていました。
> 大規模なプロジェクトになると数十秒かかったりすることもありました。
> Gitだとこの作業が一瞬でできます。(前スレ897)
で、Linusは「一日で480しかブランチ切れないようでは仕事にならない!」というわけだが、
そりゃあんただけで、世界の他の誰もそこに苦労してないから、そりゃそんなもん存在しないよ、でしかない。
だからもう、何もかもが根本的に違うんだよ。
6:デフォルトの名無しさん
22/11/06 21:21:37.64 OQq0sbmT0.net
え、何?まだ続けるつもりなの?
てか、優秀な入門書とか既に出てるし大人しくそれ読んでりゃいいのに
7:デフォルトの名無しさん
22/11/06 21:33:34.35 sj15aRfA0.net
>>5
> 連中はいわゆるコードの「清潔さ」に価値を置いてない
これがきみの思い込みで間違いであることは、きみの報告に対して挙がった 3 つのパッチの最後
"[PATCH 3/3] diff.c: use diff_free_queue()" が何の挙動も変えないコードクリーンアップである
ことを見れば明らかだね。
URLリンク(public-inbox.org)
思い込みで無意味な長文を垂れ流してスレを汚すのは止めていただきたい。
8:デフォルトの名無しさん
22/11/06 21:51:26.30 OfQ8ymDc0.net
>>7
それ、コード構造が根本的に違うんだよ。
で、君のむかつきは、Git連中のむかつきそのもので、
俺や普通のCプログラマがいわゆるCコード持って行ったら、その対応なんだと分かるんだよ。
だから多分距離を置かれてる。
そして本人達はそれに気づいてない。けど困ってもいない。なんだかねー。
まー良く言えば多様性だねー(棒)
まあいいや、この話は結局所堂々巡りだし、続ける意味もないし、終わりにしようよ。
俺の持論としては、
「お前は分かってない、ということを相手に分からせるのが一番難しくて、それが出来れば8割終わってる」
なんだけど、まあ君らも俺に対して思ってるでしょ。そんなもんだよ。
9:デフォルトの名無しさん
22/11/06 22:35:01.21 FBkt/oHG0.net
複数人の共同開発だと、綺麗なコード書くより、綺麗なパッチを書く方が生産性が高くなるんだよ。そして将来綺麗なパッチが書けるように予め備えておくこと。
変更の行数とかそんなのは誤差だよ。一番時間のかかるのは人間どうしの理解、コミュニケーションなので、そこの効率が良いのが良いコードで綺麗なパッチなんだよ。
コミットメッセージがむしろ本体。
10:デフォルトの名無しさん
22/11/06 22:54:22.81 OfQ8ymDc0.net
すまんがついで。
だから、Gitのコードをよくしたければ、Linusにレクチャーして貰えばいいんだよ。
そもそも彼のプロジェクトだし、彼は世界一に近い達人だし、彼の話ならGitの連中は聞くだろうし。
ちなみにLinusのコードはマジで凄い。
kernelコードでマクロで抽象化してるのがあって、
ブログ記事にしてる奴がいたからググれば出てくるはずだが、マジで記事書きたくなる位凄い。
こんな使い方あるのかよー、ってちょっと驚く。
OOPをCでやると全部手動だから面倒なのだけど、出来ないわけではない。
ただ、抽象はちょっときつくて、やったら普通にバグりそうなので俺ならやりたくないのだが、
はえー、なるほどこうすればいいのですかー、みたいなコードになってる。
で、Linusは送られてきたパッチに対して、
「僕はこういうコードを見るたびに、ああこの人はポインタの使い方を知らないのだな、と悲しくなるんだ」
とか言ってたから、コードを一応はレビューしてたんだろう。
だけど多分そのまま通してしまってるところが普通ではない。
もっとも、Linus基準だと、世界中の殆ど全てが糞コードなんだろうけどさ。
11:デフォルトの名無しさん
22/11/06 23:25:51.81 OfQ8ymDc0.net
>>9
> 綺麗なコード書くより、綺麗なパッチを書く方が生産性が高くなるんだよ。
それは根本的に違う。
綺麗なコードはバグを含みにくく、或いはバグだと見た瞬間分かるから、
将来的にパッチが要らない。だから、基本的戦略が
一般: バグが発生しないように綺麗なコードにしよう。(パッチを不要にする作戦)
Git: バグは直せばいい。目も手もある。だからコードは汚くても、パッチも汚くても、問題ない。
パッチなんていくらでも当てられるし、世界最高のパッチ適用システムを全員が熟知している。
(だから元のコードはボロボロでバグだらけでも大した問題にならない)
なんだよ。あのパッチも汚いよ。それが分からないのはお前の問題。
ただ、元のコードが汚いからパッチも汚いわけで、あの元コードで綺麗なパッチを書くのは無理だ。
だから本来はかなり大がかりな修正が必要なのだけど、誰も気づいてないし、指摘もしない。(ように見える)
ただ多分、その前の根本戦略も違ってて、
Gitが出来た2005頃は「動いているコードはいじるな」だったんだよ。
それが、2010頃からか?「動いているコードであっても、少しでも改善出来るならどんどん直せ」になってる。
これは前者だと本当にすさまじい勢いでコードが劣化するから、すぐに使い物にならなくなると分かったのと、
色々みんな隠蔽やリファクタに慣れてきて、「正しく構成していれば」割と安全に直せるようになったのがある。(多分)
Git見る限り、もしかするとまだ前者でやってるかもしれない。それだと多分この先いつか破綻する。
だからみんな危険を冒してリファクタしてるわけでさ。
(と言いたいところだが、普通の開発では完全に頓挫するレベルを既に明らかに越えているので、このまま行けるのかも?)
ただ9のコードについての見解は完全に間違いだし、釣りレベルだが、
人についてはまあその通りで、
バザール開発においては人を集められること=目と手の数こそがパワーの源泉であるのは事実だ。
だからそれを取り持つGitシステムが重要なのも事実だ.。
でも、バグパッチのcommitメッセージがいくら綺麗でも、それで人は寄って来ないよ。やっぱたぶんLinusだと思うよ。
12:デフォルトの名無しさん
22/11/06 23:52:01.89 az1H5JFk0.net
>>11
2005年4月に最初のコミットが行われて、そこから2006年4月ぐらいの差分見てみると物凄い変更されてて、
この段階で「動いているコードはいじるな」とかありえないと思うんだけど
13:デフォルトの名無しさん
22/11/06 23:58:44.71 OfQ8ymDc0.net
>>12
初段階では関係ない。それは「動いていない」コードだから。
安定稼働した、もう追加機能もパッチもあまり必要ない、と思ってからの話になる。
俺の常識が通用する連中ではないが、普通は多分数年の安定稼働後だ。
14:デフォルトの名無しさん
22/11/07 00:00:33.44 FOShOpAE0.net
ちょっと言い方が悪かった。
お前ら、Gitはもうインフラだ!ファイル形式も変えられない!とか、言ってたろ。
そう思えてから、の話。
15:デフォルトの名無しさん
22/11/07 00:04:01.53 Cj0S/1FH0.net
>>14
お前ホント書き込み全部適当だよな
2010年から劣化してるとかも適当に言ってるだろ
16:デフォルトの名無しさん
22/11/07 00:06:27.27 Cj0S/1FH0.net
一番最初のコミットe83c516331をcheckoutすると壮観だな7つの簡単なコマンドしかない
init-db update-cache show-diff write-tree read-tree commit-tree cat-file
makeが有る環境に持っていくのちょっと面倒だからやらないけど、これたぶん簡単にmakeできそうで、動きそう
17:デフォルトの名無しさん
22/11/07 00:08:01.82 aqPNJv/g0.net
Gitないともう仕事できない
おっちょこちょいだからpush前にDiff見れるの超助かるわ
18:デフォルトの名無しさん
22/11/07 00:29:40.36 FOShOpAE0.net
>>15
ああ書き方が曖昧だったが、変わったのはソフトウェア工学/業界の戦略だよ。もっと大きい話。
Gitはどっちの戦略でいつ頃までやってて、なんて事は俺は全く知らん。
ただパッチ見る限り、何か制約でもあるのか?と思える位に不自然だというだけ。
直すところそこじゃねーだろ、みたいな。
19:デフォルトの名無しさん
22/11/07 00:32:07.26 Cj0S/1FH0.net
>>18
お前の言うことは全部適当すぎて何も信用できないんだけど?
例えばその見たパッチのhash出せる?
20:デフォルトの名無しさん
22/11/07 00:33:15.61 FOShOpAE0.net
>>19
>>7
21:デフォルトの名無しさん
22/11/07 00:36:35.26 Cj0S/1FH0.net
>>20
いやいや最近のじゃなくてその2010年ごろから劣化してきたパッチのhashだよ
もしかして >>7 見ただけで、これは2010年ごろからの全体の劣化!とかわかっちゃうの?スゴイなお前エスパーか
22:デフォルトの名無しさん
22/11/07 05:30:07.71 qUYbWD2h0.net
ド素人目。
「綺麗なコードだとバグを生まない」とか机上の空論なんだよ。人間はミスをするし機械は壊れるんだよ。
バグを生まないコードよりも、誰もが問題の原因をすぐに発見できてすぐに修正できる方が優れてるんだよ。
多数のプロジェクトの長年の経験によるベストプラクティス。
だから git 使うし、コミットメッセージをきちんと書くんだよ。コミットメッセージの有り難さとか理解できないやつが、バージョン管理ツールのスレで偉そうに語んな。
23:デフォルトの名無しさん
22/11/07 06:17:25.58 9phkcvNE0.net
>>22
そもそもバグを生むのが間違い。POSIX原理主義ならバグは生まれない。この本に書いてある。
初めてのPOSIX原理主義 超進化を遂げたシェルスクリプトを学ぶ15回の講義
URLリンク(richlab.org)
そもそもPOSIX原理主義ではgitを禁止してる。バイナリでデータを保存しているから
何年かたってgitから別のソフトに変わったときに取り出せなくなる。
バージョン管理ならシェルスクリプトを使えばよい。コミットはcp -pRやrsyncで十分だ。
冒頭コメントにファイルの名前や最終更新者や更新日時をかけ
diffで差分も見れるしgrepで検索できる。さらにはsed やAWK などをパイプで繋ぎ
ワンライナーとして実行すれば様々な切り口で過去リビジョンの閲覧ができる
楽をするな。工夫しろ、悩んで自分で解決策を見つけ出せ
> 12.1.1 1 行
24:書いては実行 - そもそもバグを生まない > > デバッグという作業は、そもそもやる必要を無くせるのであればそれに越したことはない。 > デバッグ作業そのものからは、何も新たなコードは生まれない。 > 何もコードを生まない作業に好き好んで時間を割きたくはないからな。 > > そんなことできるのか、と思うかもしれんが、答えは「1 行書き足しては実行、書き足しては実行……を > 繰り返す」である。このことは既に今まで何度か言ってきた。何十行何百行もあるプログラムを > 書き終えた後でおかしな動きをすることがわかったら、どの行に問題が潜んでいるのかの特定には時間がかかる。 > あるいは、全部作った後で出来上がったコードを見ながらテスト項目を立案するのも骨の折れる作業だ。 > > 一方、毎行1 行ずつ書き足しては実行というテストをしていて、ある1 行書き足した時点で > おかしな動きになったと気づけば、今書いた1 行に原因がある可能性が高く、場所の特定に割く時間を抑えられる。 > > 1 行書いては実行というのはべつにシェルスクリプトに限ったテクニックではない。 > コンパイル不要な言語ならどれでも気軽にできる。しかし、UNIX シェルやシェルスクリプトは > これに向いた仕様になっている。それを見ていこう。
25:デフォルトの名無しさん
22/11/07 07:52:49.70 4MIK6HWO0.net
いつまでしょうもないレスバトル続けんの?
26:デフォルトの名無しさん
22/11/07 08:50:06.37 FOShOpAE0.net
>>23
キャラ作りもあるのだろうけど、冒頭はクレイジーだな。
blob(ただのコンテナ)が取り出せなくなることはないし、最悪自分で書けば済む。
それ以外は思想には同意するが、実際のやり方にはあまり賛同しない。が、当たってはいる。
学生の授業としては面白いだろう。選択教科なら名物になる可能性はある。(必修でこれはまずい)
27:デフォルトの名無しさん
22/11/07 08:54:30.27 FOShOpAE0.net
お前らに話が通じないのは、お前らがコードを書かない連中だからだ。
だからリアルで例えてみる。Gitに習ってplumbing(配管工事)、つまり水道管だ。
一般的には、住宅に水道管を敷設する際、
高低差や区画情報(私有地ではなく道路の下しか通せない)を考慮し、
最初から、こういうツリー形状にすると計画を立ててから、工事をする。(設計)
勿論分譲予定が決まらなければ区画情報がないので無理だし、
測量が終わってなければ高低差情報が無いので無理だ。
そしていざ工事する際は、道路を封鎖することになるので、事前に告知し、
当日は誘導員を配置し、周辺交通の妨げにならないようにする。(リリースの計画)
敷設する水道管は当然新品だ。30-40年使えるようにね。(綺麗なコード)
そしてもし水漏れしたら、それが凍結による偶発的な事故なのか、
或いは何らかの設計ミスや施工ミスに依るものなのか、
また経年劣化で交換が必要なのか、検討する。
同じ事故を繰り返さない為にね。(レビュー)
これが一般的なやり方。
工事は順番だから、待たされることもある。
家庭で水漏れしたら、周辺の水道屋さん(当たり前だが資格試験はある)を頼って、大体数日後に直してもらえる。
28:デフォルトの名無しさん
22/11/07 08:55:05.40 FOShOpAE0.net
バザールでは、水道が出ないより出た方が便利だから、各自が勝手に水道管を引いてしまう。(設計をしない)
水漏れしたら?その時に考えればいいよ。
いや実際漏れてるんだけど?ならパッチ当てよう。塞げばいいだけでしょ。
水の出が悪いんだけど?うーん、ちょっと高低差に無理があったからね、ポンプでも足そうか。
そんなことしたら水圧が上がって水道管割れちゃうよ?まあ、やってみればいいでしょ。
あ~あ、割れちゃったよ、てか錆すぎだろこれ!うん、だって元々中古だし。(最初からボロボロのコード)
え?最初は新品使うのが常識でしょ?いや、すぐ交換出来るんだからボロボロのでも問題ないでしょ。
いや~、毎回業者呼ぶの大変じゃない?業者?僕が工事すればいいだけだから問題ないよ。
え?それじゃ素人工事で全然駄目じゃん?いや、水漏れする度に何度でも工事すればいいだけでしょ。(ボロボロのパッチ)
でもやっぱ業者呼んだ方が…。そこまで言うなら、まあすぐ呼べるんだけど。秒速で対応してくれるし。
え?秒速?うん、水漏れしたんだけど!って言えば、誰かがあり得ない速度でシャシャッてきて交換部品(パッチ)とアドバイスをくれるんだよ。
そんなのあり得るの?うん、だって僕がその、世界規模での交換部品流通システムを開発したんだから。(Git)
とまあ、素人によるデタラメ工事&秒速のモグラ叩き的修復で、乗り切ろうというわけだ。
29:デフォルトの名無しさん
22/11/07 08:55:55.03 FOShOpAE0.net
ってな感じ。これぐらいのギャップがある。
設計もしないし、一切のレビューもしないし、反省もしない。
だから事故りまくりだが、すぐに修復されるので、巨視的に見れば水道を使えてる時間は長い。
これが、従来型の工事と比べて、どっちがサービス提供時間が長いか、ということなんだと思う。
水道工事は物理的なので、どうしても道路を掘り返す手間がかかるから、従来型の方が普通はよいとされるはずだけど、
コードは、経年劣化はないし、(ただの情報なので)交換も極めて容易だから、このアプローチが出来てしまうのか?
って衝撃が「伽藍とバザール」だよ。
俺も今それをまざまざと見つけられてるわけだ。
しかし、この発想には付いていけないし、付いていきたくもない。
俺の家にはきちんと計画して新品の水道管を敷いて欲しいし、順当な範囲なら、工事の順番待ちもするよ。
それで、「お前が水道工事業者で、新品の水道管を持ってるのなら、寄越せ!」って言ってるのが今のお前らだ。
いやいやいや、そうだとしても、こいつらとは関わっちゃいけない、と思うのが普通でしょ。
ただ実際は、Linusが基本設計をしているので、LinuxもGitも、
「文系馬鹿だから管を繋げば水が出ると思ってて、水道が山を越えててまるで話にならない」
みたいなことはない。これが
> 9. 賢いデータ構造と間抜けなコードのほうが、その逆よりずっとまし。
で、Linusは基本設計を終えた上で、
末端の水道工事なら無資格業者でも全く問題ない、それより工事しない方が問題、としてるだけ。
実際、基本設計(水道ツリー)がきちんと出来てれば、各住宅付近の引き込みは、単に繋げるだけに近いのも事実。
バックエンドのGitデータ構造の出し入れだけきちっとしてれば、
フロントエンドの各コマンドなんてバグってたら交換すればいい程度なのも事実。
実際、今回のメモリリークなんてそのフロントエンド内でもさらにどうでもいい案件で、新品や資格業者を使うまでもない。
従来型は、工事である限り新品であり資格業者必須だが、これが問題だ!というわけ。
30:デフォルトの名無しさん
22/11/07 08:59:07.21 FOShOpAE0.net
この辺は実はもっと長期スパンの戦略もあって、「わざと」ゴミパッチでもやらせてる可能性もある。
実は今プーチンがやろうとしてるのだけど、30万人動員だっけ?あれが適切か、について、
ウクライナの戦場だと、前線に動員された兵士が1年後に生き残ってる確率は10%位になってしまってるらしいのだが、
逆に言えば10%は生き残るわけで、30万人の素人を動員したら1年後にはその過酷な状況を生き残った3万人の精兵に化ける、
だから長期戦視野で、1年後に欲しい人数の10倍、素人でも構わないから動員してしまえ、そうすれば死にはするが供給は出来る、という話。
これはソフトウェアも同じで、保守人材が欲しいならそれなりに育てる必要はあって、
Git的なワークフローに慣れてもらう必要はある。
だから今はど素人のクソコードでも受け入れてれば、数年後には10%位は熟練者になって残ってくれるかも?という戦略だ。
今回は本当にどうでもいいバグではあるので、素人工事でも練習にはなるからやらせておけ、ということ。
だから意図的にレビューもせずにスルーしてる可能性もあるし、この戦略も一概に悪いとも言えない。
勿論こんなのではリークは止まらないが、元々バグを修復するのではなく、修復する練習が目的だから問題ない。
ただ一般的には、こういうのは資格取得時に技能含めて講習することであって、
いちいち水漏れ工事させてユーザーに迷惑かけつつ教育するもんじゃない!ではあるが、
言っちゃ悪いが新人のOJTでの飛び込み営業とか完全にこれだし、リアルでやってる連中もいる。(今はもう無いのかもしれんが)
だからまあ、俺は少なくともGitに対しては半年ROMるべきなんだよ。
連中の戦略がまるで見えない。そもそも何も考えてないっぽいが。
(いや待て、これは孔明の罠だ状態)
31:デフォルトの名無しさん
22/11/07 10:31:12.71 Cj0S/1FH0.net
相手してしまってゴメン
もう見えないように設定した
32:デフォルトの名無しさん
22/11/07 11:56:14.65 cJG23Zwza.net
長文の人、仕事したこととか共同作業したことあるんか?
33:デフォルトの名無しさん
22/11/07 13:20:11.88 ygJfBeHE0.net
やめろよまた長文レスが来るだろ。
34:デフォルトの名無しさん
22/11/07 20:02:36.71 4UzpVkkhr.net
>>32
草
35:デフォルトの名無しさん
22/11/07 21:23:08.09 FOShOpAE0.net
>>16
それらのコマンドのレイヤーは、
init-db, show-diff
commit-tree
write-tree, read-tree
update-cache, cat-file
だろうよ。まあlinusだしちゃんとしてるよ。
最下位を差し替えれば最終形式(blog)を、
tree階層を差し替えれば記録先(ファイルシステム)を、
commit階層を差し替えれば鍵(SHA1)を変更出来る。
当たり前だがこんなのやってるに決まってるんだよ。OOPの基本中の基本だし。
プログラマではないお前らは理解出来なくてもいいが、それで噛みついてこられても困る。
そして逆に、今鍵の交換程度で手こずってるのなら、
馬鹿がこの階層をぶち壊して直接階層を跨いでアクセスしてしまってるんだろうさ。
パッチ見る限り全く階層の意識がないからね。
動けばいいとしか思ってない馬鹿が書いたコードだよあれは。
ただ、10人の普通の人より1,000,000人の馬鹿だ!という戦略だし、実際それで何とかなってるのも事実。
ちなみに故ジョブスは「優秀なプログラマと無能なプログラマの生産効率の差は200倍だ」と言ってたらしい。
これは俺の体感とも大体合う。
戦闘力(最大200)*10人=2,000では戦闘力1,000,000と喧嘩してもどうにもならないので、
全く納得いかないが、バザール方式はエンジニアリングとしては正しい。
単純には、社内10人でプロプライエタリするよりは、
オープンにして2,000人のプログラマ(サンデープログラマでも全く問題ない)を集められれば、勝てる事になる。
36:デフォルトの名無しさん
22/11/07 21:26:17.35 FOShOpAE0.net
あと誰か、初期実装の時と現時点で、フォーマットが同じか知らないか?
上位互換か?(=初期実装版で書いた.gitは最新版で問題なく読める)
それとも完全互換?(=現最新版で書いた.gitは初期実装版でも問題なく読める)
P.S. bookのURLを何度か貼ってくれた人達ありがとう。
今読み進めてるが、俺にはbookの方が断然よかった。
37:デフォルトの名無しさん
22/11/07 21:26:22.00 4MIK6HWO0.net
もう勘弁してつかあさい
38:デフォルトの名無しさん
22/11/07 22:13:30.35 4UzpVkkhr.net
>>31にノータッチな時点でもう答え出てたね
39:デフォルトの名無しさん
22/11/07 23:00:12.96 uxPQwm720.net
10月の終わりから、What's cooking in git.git を浜野氏以外の人がMLに投稿している。
浜野氏は不調なんかな?
40:デフォルトの名無しさん
22/11/07 23:03:36.95 uxPQwm720.net
bisect-in-c の一連のパッチが17回も修正して、浜野氏がいろいろ言って、
現在[Stalled] になってる。
作者のjs ってwindows 版作っている人で以前も浜野氏にパッチをrejectされまくりで
険悪な雰囲気になっていた記憶がある。
41:デフォルトの名無しさん
22/11/07 23:31:59.99 ygJfBeHE0.net
>>38
URLリンク(public-inbox.org)
> Starting from next week (week #4---see ...),
> we'll try a mini "bus factor" exercise, where I will disappear from
> the list for a few weeks. ...
メンテナ不在に耐えられるかのテスト中らしいよ。おもしろいことするね。
42:デフォルトの名無しさん
22/11/07 23:41:45.67 uxPQwm720.net
>>40
なるほど
43:デフォルトの名無しさん
22/11/08 02:36:21.93 JjaG48160.net
>>37
それは最初から答え出て太郎。
少人数でも共同開発したことあるやつがコミットメッセージ不要とか言うわけはない。
44:デフォルトの名無しさん
22/11/08 06:57:02.11 0xdMrcDS0.net
>>42
まあお前らがGit屋だってのはよく分かったよ
45:デフォルトの名無しさん
22/11/08 09:23:56.98 0xdMrcDS0.net
ついでだからソースを読めない君達にも分かるように、あのパッチのヤバさを説明してみよう。
バグ=ゴキブリ出現と例える。
嫌悪感がある人はここで読むのを止めてくれ。
46:デフォルトの名無しさん
22/11/08 09:24:55.86 0xdMrcDS0.net
俺「あ、ゴキブリっぽい何か見つけました」
Git「はいゴキブリですね。ゴキブリホイホイを設置しました!」
Git「1箇所では足りないようなので、複数箇所にゴキブリホイホイを設置しました!」
Git「木目調のゴキブリホイホイに変更しました!」
いや違うだろぉぉぉぉぉぉぉ!そうじゃねえだろぉぉぉ!
ゴキブリの侵入経路を確認して塞ぐとか、
冷蔵庫や戸棚どかして一切全部掃除し直してさらにバルサン炊くとかだろぉぉぉぉ!
(言ってないけど)
Git「え?でもゴキブリが出る所全部にゴキブリホイホイを設置すれば、ゴキブリには遭遇しなくなりますよ?
見た目?そのための木目調のゴキブリホイホイですよ?なんなら好きなキャラ描いて書いて貰ってもいいですよ?
それでは無限にゴキブリが出る?なら無限にゴキブリホイホイ設置するだけですよ?」
こりゃ駄目だ、話が通じねえ、と思うだろ。
Gitの連中はバグの表面的なところだけを繕ってて、そのバグが発生した根本の原因、
つまり今回は壁がボロボロで穴が空きまくっててゴキブリが侵入してきてるんだけど、そこを見ようともしてないんだ。
というより、壁がボロボロだからゴキブリが侵入して来る、という感覚そのものがない。(因果関係を考えてない)
だから壁を直そうとかいう話に繋がらないんだよ。
そしていくらでもゴキブリホイホイを設置すれば、遭遇しなくなると思ってる。
(そりゃそうかもしれないが、そうじゃねえだろぉぉぉ!と叫びたくもなるだろ)
だから今回のパッチ、明らかに方向性が違うから、
俺だったら、というより従来型のCプログラマなら、見た瞬間rejectするんだよ。
それが分からない連中が、大まじめにゴキブリホイホイ設置して喜んでるんだから、こりゃ関わっちゃいけない、と思うだろ。
しかしこれで回ってる。
Gitにやられた連中は、アニメや映画の悪役ばりに、「く、、っこんな奴に!!!」と思ってるだろうさ。
正しい対応: 壁の塗り直し/補修
まだ許せる対応: バルサン
Gitで行われる対応: ゴキブリホイホイの多数設置
47:デフォルトの名無しさん
22/11/08 09:54:49.01 JjaG48160.net
口先乙
長文書いてる暇があったらお前のいう正しいコードを書いて公開して見ろよ。
別に採用されなくても長文でグダグダ書くよりコードで見せた方が早いだろ。
言ってることが事実ならコードで見せれるだろ。お前ならどうするか具体的に見せろよ。
それが今すぐできないんなら、お前の主張は無価値な机上の空論ってことになる。
48:デフォルトの名無しさん
22/11/08 09:59:26.44 Nwn3p3fK0.net
やめろよまた長文でやらない理由レスがくるだろ。
49:デフォルトの名無しさん
22/11/08 10:35:58.86 jk+PH9G/0.net
URLリンク(github.com)
誰かやるかなあと思ったらやっぱりいた
50:デフォルトの名無しさん
22/11/08 17:23:38.36 LFTDtpXpr.net
>>45
なんの例えにもなってない
具体的に書けばいいのに
51:デフォルトの名無しさん (ワッチョイ debb-qVfh)
22/11/09 02:28:31.49 zaNhnmv/0.net
>>49
git の人気が悔しくて悪口書きにきてるだけだから具体例とか出るわけないよ。
52:デフォルトの名無しさん
22/11/09 06:24:34.62 raFZ+G/S0.net
>>48
トップページだけ見る限り、そのeinが俺が欲しいものに近い。(のだろう)
ただRustだからな~。今Rustって原理主義者が集まってて面倒な感じなんだよ。
53:デフォルトの名無しさん
22/11/09 06:25:32.42 raFZ+G/S0.net
>>49,50
一対一対応してて、割と具体的だぞ。
興味あるなら見比べてみ。
54:デフォルトの名無しさん
22/11/09 06:27:44.26 raFZ+G/S0.net
>>46
そうやって無駄に煽ってネット上の善意を吸収/浪費してきたのだろうよ。
コードクレクレ君は死ね。
(ただ本当に、誰でも書けるレベルのコードすら書けてないことをGit陣営は自覚した方がいい。
というか、書けない、ではなく、書かない、に近くて、
美しいコードに価値なんて無い、だからデタラメでもいいからさっさと書け、という価値観が見える。今の君にもね)
しかし俺としては「美しいコードは素晴らしい」という価値観の世界にしたいので、
Gitの状況を知った現在、Gitには肩入れしたくないんだな。
むしろ反Gitに肩入れして、Gitを殲滅したくなってきてる。
こんな価値観の連中をのさばらせておくのは、よろしくない。
多分今後はバグ報告も送らない。
だってあれに俺は3-6時間かかってるけど、まるで生かせてないし、見る限り無駄だったよ。
ただここで色々君らに情報を貰ったのは感謝してる。前スレ最後で数時間相手してくれた人には特に。
あと、大昔にさっぱり意味が分からなかった(事すら認識出来てなかった)「伽藍とバザール」を理解出来たのはよかったけど。
お前らのオススメのGit以外のOSSのVCSって、SubVersionなのか?
バケツに構ってる場合じゃないんだけど、いつか見てみるよ。
ただ飲食店が衛生的/不衛生なのと、美味い/不味いは別の軸だからな~。
VCSの根本の問題は、「管理側」が作ってることなんだろう。
Gitは「使う側」が作ったから、プログラマにとっては既存のVCSより断然仕様がいい。
ただLinusは「mergeしかしない側」だから、merge特化で、
俺みたいに日々の業務の履歴保持やバックアップ用には出来て無く、使い心地が悪い。
なら今後、「使う側」が「日々の業務用」のVCSを作れば決定版になるのだろう。
ただ、Gitに問題を感じないのだから、
Linusのコードの書き方はかなり最初期からアジャイルで、一般とは違うのか?とも思ってる。
(究極のアジャイルが>>23)
この辺も後日確認する予定。
55:デフォルトの名無しさん
22/11/09 06:33:44.28 raFZ+G/S0.net
あとさらについで。既に書いたように俺は君達には感謝してるから、
君達の成長の糧になるネタを残しておこう。俺なりの返礼だ。
Git陣営も、君達も、チームで働く意味を理解出来ていない。
チームを上手く機能させるには、「自分」ではなく「相手」の仕事を減らさないといけない。
そしてお互いに「相手」の仕事を減らす事により、チーム全体の仕事量が減り、生産効率が上がる。
これの古典的手法がドキュメントで、まあGitはこの点は十分出来てるよ。
(前言った解像度の不一致の件、あれは直しておいてくれ。ただ全般的にはかなりよく出来てる類だ)
だけど今回の顛末、俺は3-6時間かけて、丁寧にバグレポートを上げた。
再現コードをわざわざ作り直し、途中で出てきた回避策も入れて、最終チェックもした。
雑なレポートなら1-2時間で出来るところ、3時間ほど余分にかけて精度を上げてる。
一発で分かりやすく再現しなければ、余分に1-2時間ほど確認作業が必要になってしまう。
仮に5人で対応してくれた場合、そんなことで「チームとして」5-10時間消費するより、
俺があらかじめ3時間消費して精度を上げた方が、「チームとして」2-7時間得する、という戦略なんだよ。
56:デフォルトの名無しさん
22/11/09 06:34:47.94 raFZ+G/S0.net
Gitの連中は、俺のレポートで、「同種のバグの存在」を全く気にしていない。
それが彼等の技術的問題か、人格的問題かは分からないけど、
壁に穴が空いてることを気にせず、ゴキブリホイホイを多数設置して済ませようとしてる。
こ�
57:黷セと、今回のではバグは収まらず、「同種のバグレポート」が、多分あと10通位必要だ。 そりゃ確かにあと10通来てその都度対応すれば全経路にゴキブリホイホイを設置出来るかもしれない。 だけどこれは、俺と同様の通報者だけで30-60時間消費、さらに対応する連中も数時間ずつ、 まあ単純に3時間として、5人なら3時間*5人*10回=150時間消費するから、合計180-210時間消費することになる。 なら、最初のパッチを作る奴が10時間ほどかけて精査し、 「う~ん、これは壁の大規模補修が必要で、あと30時間ほどかかりますのでお待ち下さい」でも40時間の消費で、 140-170時間の黒字になるんだよ。だから本来はこれを目指さないといけない。 これが「バザール」で出来る事かどうかは俺には分からないけれども、 リソースが限られているプロプライエタリだとこうするしかないから、これがド定番で、 むしろGitの対応に怒りすら感じてるし、 まともに機能してるチームで働いたことのある奴は同様だろうよ。 相手の時間をすさまじく雑に扱ってて、しかも当人達はそれを自覚出来てない。 まともな奴ほど、次からはもう送らない、という選択になる。俺もそう。 (と、ふと思ったが、そもそも俺が既に5番目とか7番目の気がしてきた…orz)
58:デフォルトの名無しさん
22/11/09 06:36:12.11 raFZ+G/S0.net
だからさ、Gitの連中がデタラメやってるのも、
共同開発()してる君達が、俺が何を問題視してるかを全く理解出来ないのも、
チームで働く意味を理解出来てないからなんだよ。
それは機能してるチームで活動した経験がないから。
共同開発()は、Gitを使えば、或いは人数がいれば、達成出来ることではない。もっと上のレイヤーの戦略だ。
(俺が上記で指摘した点なんて、完全にアナログだし)
それは君達がGitで「管理」出来ると勘違いしてたのと同様、レイヤーを間違ってる。
Gitは「適用」「記録」ツールであって、管理ツールではない。
(記録=台帳管理だから、それが管理だ!のレベルで君達は止まってる)
道具は所詮道具であって、○○使ってれば大丈夫!なんて事にはならないし、
世間はそのレベルで戦ってないんだよ。もっと上位の戦略で優劣を競ってる。
で、この辺でいいかな?
余計なお世話だったかもしれないが、
俺は君達やGit陣営の問題点を分かりやすく示すことにより、俺なりの返礼にしたつもりだ。
(ただGit陣営はこういう諫言を無視してきたから今がああなのだとは断言出来る。
同じ事を思った奴が世界でこれまで誰もいなかったなんてあり得ないから。
だから書くだけ無駄だったかもだが、まあ、受け取る受け取らないは君らの自由だ)
もう借りを返したつもりなので、今後は君達に問題点を見つけても無視する。
出来てるつもりの共同開発()ごっこを引き続き楽しむ自由も、君達にはある。
59:デフォルトの名無しさん
22/11/09 06:40:41.84 ocNu9S1hM.net
こんな人がPLだったら話長い人だなあと思って敬遠するわ。PMには向いて無さそうな人に思う
60:デフォルトの名無しさん
22/11/09 06:41:02.07 lvNzmAyI0.net
URLリンク(producingoss.com)
> 公開されている場所で議論することによるさまざまな損失があなたの頭の中に浮かぶことでしょう。...
> 本当は何もわかっていないのに 「自分はすべてわかっている」と勘違いしているボランティアへの
> 対応 (どんなプロジェクトでもこの手の人がいます。彼らのうち何人かは将来すばらしい貢献をしてくれる
> ことになるでしょうが、 中にはずっと勘違いしたままの人だっています)、ある問題 X が
> より大きい問題 Y の一部であるときに、 なぜ問題 Y ではなく問題 X だけを解決したいのかを
> 理解してくれない人たち、 などなど。...
61:デフォルトの名無しさん
22/11/09 09:01:13.54 xm6SvStZ0.net
長文君にはゴミ箱がお似合い
ごみ箱でバージョン管理する手法が提案される
URLリンク(srad.jp)
Windowsのゴミ箱を「作業フォルダ」として使っている人は意外といるらしい→驚愕の声続々
URLリンク(togetter.com)
62:デフォルトの名無しさん
22/11/09 09:32:33.75 KYaOBnwRa.net
URLリンク(twitpic.com)
画像貼れるかわからないけど、なかなかいい提案
63:デフォルトの名無しさん
22/11/09 09:50:39.39 fSnT1d04r.net
長文くんは空想と現実の区別がついてなさそう
レポートも本当に送ってるんだか
64:デフォルトの名無しさん
22/11/09 12:19:42.34 iczqgiJF0.net
日々の作業のバックアップだけしたいならそもそもVCS使う必要ないしな
65:デフォルトの名無しさん
22/11/10 00:01:03.02 lrWcMZ4k0.net
>>58
その切り取り方はだいぶ酷い。続き読んだら正反対の結論だし。
ちなみに本編のその部分の内容には同意。リンク先は俺にはまあまあ面白い。ありがとう。
切り取り方に悪意がないとして、それが君の意見なら、
回答は、上位戦略、
「動いているコードはいじるな」「動いているコードであっても、改善出来るのならどんどん改善しろ」(11)
による。前者の場合はXの修正に留め、後者の場合はYを修正する。
ただこれはソフトウェア界では既に結論が出てて、「後者(Y)じゃないと無理」だ。(よって疎結合化は必須)
だから『今は』余程の事がない限り後者で、
その本が前者なのは、上梓が2005.10で、おそらく2003頃の常識で書かれてるから。
その頃は前者が主流だったのは11に書いたとおり。
そしてGitももしかして?なのは18に書いた通り。修正が『今の常識からすると』普通ではないから。
66:デフォルトの名無しさん
22/11/10 00:01:23.56 7zTsALdP0.net
ただ、Gitの場合はおそらく技術的問題だと思う。
Xの修正に留めるのは、変に壊さない為だが、Git陣営は今壊れているところすらも「きちんと」直そうとしてない。
だから、そこで言われてるXでもないんだ。
ちなみに、「正しいXの修正」が45における「バルサン」だ。
壁の補修が必要なのは分かるが、それは今とても出来ないから(或いは賃貸等でそもそも出来ないから)、
せめて今出来る最善手で、ということ。
Gitは今打てる最善手すら打とうとしてない。
(コードの修正範囲を絞られたとしても、もっとましな解決方法がある)
だから多分技術的にも足りてなくて、それは本人達の慢心だよ。
傲慢でつけあがってるから、他人がどういう解決をしているか調べたこと無いんだよ。
Cの基本的手法を見たこと無いはずがないし、よくよく考えれば、見た目違うだけで、
C++も、C#も、Rustも、本質的には同じ解決方法を採ってる。
だから、C以外の言語であっても「きちんと掘り下げて」勉強してたら、こうはならないんだよ。
多分連中は、Cを書けるだけで満足してて、しかもCの基本的(=伝統的)手法を馬鹿にしてる。だからこんな事になってる。
(スクリプト系も全く使えないから仕様もおかしな事になってるし)
だから不勉強の根っこは人格的問題で、結果、技術不足が発生してる。
というところまで見えてしまうから、まともな奴は近づかないよ。
俺もこりゃ駄目だ、大体こんな奴等に構ってられる状況でもないし、って感じ。
そもそもLinusがいるんだから任せときゃ問題ない。
67:デフォルトの名無しさん
22/11/10 00:01:54.15 7zTsALdP0.net
ちなリンク先
> "綺麗で、読みやすくバグのないコードを書きましょう。" といったことをガイドラインに書いても意味がありません。
> もちろん、これらは望ましいことではありますが、 これらが望ましくないと思われる世界は存在しないので、言及する価値がないのです。
> URLリンク(producingoss.com)
なおGitとこのスレ
68:デフォルトの名無しさん
22/11/10 00:02:35.94 7zTsALdP0.net
>>59,60
それを揶揄するのがお前らの傲慢なところだ。(60は賛同かもだが)
それは、「ユーザーが実際に求めてる機能はその程度で十分」ということなんだよ。
まさに、例のブランコ状態。Gitなんて超超超超オーバースペックだ。
たださすがに「ゴミ箱」は怖いから、
「バケツ」アプリで、GUIは完全にゴミ箱と同じ、ただし消せないし消えない、で一般には十分なんだよ。
従来VCSが提供したもの: 管理者に都合がいいだけの、すさまじく使いにくいVCS
Gitが提供したもの: 超超超超オーバースペックで、確かに何でも出来るが、すさまじく分かりにくいVCS
ユーザーが本当に欲しかったもの: 消えないゴミ箱
69:デフォルトの名無しさん
22/11/10 00:31:57.21 eyva6wLj0.net
> Gitなんて超超超超オーバースペックだ。
誰が困るんだ?
必要ない機能なら使わなければいいだろ
70:デフォルトの名無しさん
22/11/10 00:32:49.23 eyva6wLj0.net
>>66
×ユーザーが本当に欲しかったもの: 消えないゴミ箱
○バージョン管理を理解してないバカ(お前)が理解できるギリギリの機能:消えないゴミ箱
こうやで、間違えんな
71:デフォルトの名無しさん
22/11/10 00:46:30.79 Av/Z41zQa.net
管理者の為の仕様部分がオーバースペックって言ってるんかな。
管理の都合で記録残したりが嫌かな。
言いたいことが分からんでもないが、みんな人間的に欠陥持って仕事しているので、数人で仕事する時にはその機能があって良かった時も出てくるで。
72:デフォルトの名無しさん
22/11/10 02:36:46.00 CrU8rP2e0.net
世の中にはバージョン管理が理解できなくて、必要性を全く感じない人もいるのだな。
git の機能は実際に必要な人が多数いたから実装されたものがほとんどなんだけど。
自分が不要な機能は他の人も不要と思っちゃうところが素人の限界なんだろうな。
そういう馬鹿ユーザー層にも git の知名度が上がったんだろうけど、今頃ようやく勉強始めてスレを長文で荒らすのは勘弁して欲しい。
git は既にかなり長い歴史のあるソフトウェアなんで長期間便利に使い続けている人が多数いるんだぜ。
何が気に入らないか知らんけど、このスレを荒らしても git には勝てないぞ。
73:デフォルトの名無しさん
22/11/10 04:58:42.46 zjNgRmcKa.net
このスレを荒らすことでgitに勝った気になりたい人なんじゃないかな多分
74:デフォルトの名無しさん
22/11/10 05:14:26.10 CBCnjUQK0.net
長文君は「傲慢でつけあがっている」人たちがつくっているgitを使わずに「バケツ」アプリを使えばいいのに。
みんなの望んでいるのがgitでなく「バケツ」アプリというのが本当なら、実際にそういうアプリがつくられて
改良を続けられているはずだから。それこそgitよりもずっとね
>Xの修正に留めるのは、変に壊さない為だが、Git陣営は今壊れているところすらも「きちんと」直そうとしてない。
>Gitは今打てる最善手すら打とうとしてない。
>だから多分技術的にも足りてなくて、それは本人達の慢心だよ。
>傲慢でつけあがってるから、他人がどういう解決をしているか調べたこと無いんだよ。
>まさに、例のブランコ状態。Gitなんて超超超超オーバースペックだ。
>ユーザーが本当に欲しかったもの: 消えないゴミ箱
>「バケツ」アプリで、GUIは完全にゴミ箱と同じ、ただし消せないし消えない、で一般には十分なんだよ。
75:デフォルトの名無しさん
22/11/10 09:30:46.14 bawORDDu0.net
今時のOSはバケツ機能が標準搭載されてるから
Gitを理解できない長文君でも安心(笑)
Time Machine で Mac をバックアップする
URLリンク(support.apple.com)
Windows のファイル履歴
URLリンク(support.microsoft.com)
76:デフォルトの名無しさん
22/11/10 11:07:23.60 CrU8rP2e0.net
それこそ電動ドリルのスレに来て、「メーカーは釘打ちユーザーのことを何もわかってない。オーバースペック」とわめいてるレベルなんだよな。
メーカーに直接クレームいてれ迷惑かけてないだけまだマシという考え方もあるが、恥というものを知らないらしい。
77:デフォルトの名無しさん
22/11/10 12:18:43.03 PYTCWKKr0.net
「今後は君達に問題点を見つけても無視する」とか書いてあってちょっと期待したのに1日も我慢できないじゃねーの。ほんとこいつ
78:デフォルトの名無しさん
22/11/10 13:02:48.06 CrU8rP2e0.net
初心者の中には以下の違いの区別ついてないやつがいる
1)バックアップ…ハードウェアなどの故障に備えてデータの保全を図るシステム
2)作業記録…作業ミスなどに備えてデータの更新を記録するシステム。セキュリティ目的の場合もある
3)バージョン管理…作業の成果物を効率的に管理して情報共有や意思決定を支援するシステム
git はこのうちの3)のために特化したツールなので1)や2)の目的で使おうとしても無理がある。ちゃんとやりたいなら他の仕組を併用しなければならない
79:デフォルトの名無しさん
22/11/10 20:45:32.99 waDPm/2h0.net
バージョン管理で意思決定とかちょっと何言ってんのかよく分かんないがman gitしても意思の決定を支援してくれそーなコマンドは出てこなかったよ
Siriみたいのがあーしろこーしろ答えてくれるコマンドがあんのか?
80:デフォルトの名無しさん
22/11/10 22:00:16.17 rcgr86R60.net
>>77
たぶんgitとGitHubの区別が付いてないと思う
81:デフォルトの名無しさん
22/11/10 23:24:58.33 6zeJdr0ca.net
これは GitHub のAI は賢いよ、という御告げかな。
使ったことないのだけど。
82:デフォルトの名無しさん
22/11/11 02:15:01.88 gKK2uUPF0.net
バージョン管理でいう「意思決定の支援」は、適切な情報を保存し提供することで変更方法や戦略などの取捨選択を素早くできるようにするというやつだな。必要な情報を必要な時に参照できるのがバージョン管理の必須要素だよ。
83:デフォルトの名無しさん
22/11/11 02:31:05.65 gKK2uUPF0.net
バックアップしたデータや作業ログを見てもバグ修正の方法とか機能追加の方針とかは決めれないけど、git のコミット履歴があると決定の助けになるだろ。
機械が勝手に判断してくれる魔法みたいな話じゃないので期待すんな。
git log, git blame, git bisect などで素早く目的の情報を探し出せるというのは重要機能。
84:デフォルトの名無しさん
22/11/11 06:49:36.44 k022U7g40.net
>>67-72
GitはGitで良いんだよ。Linusが必要だから作ったのだし、
確かに全世界で同時開発してて、既に安定版もリリース済みなLinuxには最適だろう。
ただ、今Gitが一般人や職場で使われてる領域では、世界規模な同時開発なんてやってない。
日々の進捗を記録し、履歴を保持し、バックアップが簡単に取れれば十分なんだよ。
これにGitが使われてるだけ。実際欲しがられてるのは「全自動履歴保持バケツ」。
だからGitが悪いのではなくて、他のアプリがしょぼすぎてGitを滅ぼせないのが問題なんだが。
なお散々言ってるが、俺はGit自体が気に入らないのではなく
・Gitの仕様がグダグダ過ぎて、余計な学習コストがかかりまくるのと
・Gitの開発がグダグダ過ぎ。
俺達はGitを使ってるから世界一の開発出来てる!とでも勘違いしてるからあんなことになるんだよ。
Gitはツールでしかない。上手く使えてるかはまた別だ。
肝心の本家がグダグダ過ぎ。
本家はGitとはこう使う!という広告塔でもあるのだから、もうちょっと真面目にやれよ。
これにソースを読み書き出来ない君達は気づけないだけ。
君達もゴキブリ駆除業者呼んで「ゴキブリホイホイの多数設置」されたらブチ切れるだろ?
割とこれ、当たってる例えだからな。(身近にCを「きちんと」書ける奴がいたら聞いてみるといい)
じゃあ自分で作れ?なら、確かに作れるが、我慢してGitを勉強した方が早い。(再開発が面倒なだけ)
だから誰も作らないわけで、Gitが日々の業務にフィットしているわけではまるでない。
85:デフォルトの名無しさん
22/11/11 06:51:48.71 k022U7g40.net
あとGitが不味いのは、
・「素人向け」ではないこと。
これはCの様に、切れ味抜群だが、素人が使ったら怪我をする、が外面仕様としてモロに見えているところだ。
GUI版はここら辺対策出来てるのかもしれんが。ただ一般に言われてる
「Gitは難し�
86:キぎる。ちょっとした規模の開発になると、リポジトリを破壊する奴が出てきて、 『Git用員』が必要になってしまう。こんな事は他のVCSではなかった」には納得だ。 (正確に言うと、難しいのではなく、仕様が直感的でないのが問題。多機能は本来は問題にならない) そして君達はまさにこの「Git用員」で、 ユーザーであるプログラマに「管理側に都合がいいGitの使い方」を強いてて、嫌われてるわけだ。 ただこれ、Gitの思想もおかしくて、両者が簡単に共存出来るようにすぐに出来るんだが、(Viewの変更だけで済む) 「管理側」が作ってるから実装したくないのだろうよ。だからこの辺、サクッと実装した物が出てくれば話は変わる。 C++やRustの連中も大概だが、実際問題としてCの糞コードを修正するよりは、最初から書いた方が早い。 これは基本アーキテクチャが素晴らしいからだ。 ただ実態は、幸か不幸か、ソースや開発体制のクソっぷりが基本アーキの良さで誤魔化せてしまってる。 ただこれも、バザールでは仕様なんだろう。なんだかねー。 > 9. 賢いデータ構造と間抜けなコードのほうが、その逆よりずっとまし。 これも例えて言うとな、Gitは「1本目の包丁」向けの仕様ではないんだよ。 今現在、Gitは無視出来ない存在になってて、プログラミング入門者、場合によっては大学でも使い方を教えるだろう。 ただ本来、VCSを学ぶのはまともなコードが書けてからで十分で、本末転倒なんだ。 むしろその程度の初心者ならセーブ禁止で、 毎日毎回「自分の頭の中にあるコード」を写経させた方が上達するだろうよ。学生には嫌われるだろうけど。 Gitは柳刃包丁や中華包丁と同様、「5~6本目の包丁」仕様であって、 三徳包丁のような「1本目の包丁」仕様ではないんだ。 ただ既に言ったが、これはGitが悪いのではなく、Gitを滅ぼせない他アプリが問題だから、 俺が加担するとしたら他アプリ=「バケツ」製作側だ。 そして君達「Git用員」の需要を世界規模で消滅させ、路頭に迷わせるのが正しい解だね。
87:デフォルトの名無しさん
22/11/11 06:52:27.39 k022U7g40.net
具体的に言うなら、「学習コスト高すぎ」問題だ。
見る限り50-100時間程度か?少なくともチームの一員として
「リポジトリを破壊せず、普段のコード提出は問題なくでき、チームに『Git用員』が不要」なレベルに到達するまでに。
ただこれは本当に酷い話で、「ゴミ箱」アプリなら完全に把握するまでに5分だろ。なら、50-100時間丸々開発に使える。
あと今回俺が言ってるクソソース問題、
実はCの場合は言語機能がほぼ無いので、ソリューションはどれも馬鹿げているほど単純で、
見れば分かるものしかない。(他言語では文法でサポートされてるので各々2-3時間の勉強が必須)
そしてあまりに馬鹿げてるから「イケてない」扱いされ、傲慢な若者には無視され、結果、メモリリークしてるわけだ。
これは「何故みんなこうするのか」をレクチャーすれば済む話で、
技術的には10分あれば十分なんだよ。(パッチ送ってくるレベルの奴には)
ただ、絶対人の話を聞かない連中だから、Linusがやるしかないけど、
これを省いてGitに学習時間50-100時間かけてクソコードを量産してるんだから、完全に本末転倒だろ。
ここで同種のバグを一掃しないと余計に時間がかかる、という感覚がないのもどうかしてるし。
gitが難しくて、結果的に「『頑張って』勉強するんだ!」みたいな奴が集まってるのはいいのかもしれんが、
頑張る方向を完全に間違ってる。
「ゴキブリホイホイの無限設置だ!」と頑張られても、そりゃ違う、と思うだろ。
(頑張る連中なんだから、正しい方向に導けば上手く流れるだけなのに、そうしないのは上部の怠慢だよ。つまりLinusだな。
頑張らない連中のケツを蹴飛ばして何とかするのとはだいぶ訳が違う)
88:デフォルトの名無しさん
22/11/11 06:53:12.04 k022U7g40.net
とはいえGitは大体把握した。
俺が使いたい範囲で何が出来て何が足りないかも分かったし、聞いてた話とも整合性が取れた。
色々情報をくれた人はありがとう。
「バケツ」アプリ、割とマジでゴミ箱仕様で作ってもいいんだが、需要あるかね?
(まあこのスレに来ない連中に聞かないと駄目だが)
今すぐ、というわけではないが、アプリ製作も一回やってみようと思ってはいるから。
あと勘違いしてる奴がいるが、俺が今回Gitを使うのは既定路線だ。
その際にバグに遭遇していろいろ内実が見えて、クソだなと感想を漏らしてるだけ。
あとこれ、rebase履歴も保持されないよな?
commit履歴は基本的に整理用だが、
rebase履歴が保持されないのは仕様としてかなり不味い。
そりゃお前らGit屋は完成したパッチしか興味ないのだろうが、
実際のプログラマは各ブランチで平行作業してパッチを製作し、マージする段になって、一本鎖で済むようにrebaseするのだろ?
その際、rebaseでの競合は「手動」で解決するだろ。だからそこでバグを組み込む可能性があって、
パッチを作る側としては、rebase前に「いつでも」「どのポイントにも」戻れないと不味いんだよ。
だからここら辺も本来はViewを分離したアーキにして、
rebaseは「見た目」一本鎖になりますが、内部DBはそこでマージされてるだけで、rebase前の状態も全部残ってます、が正しい。
(まあrebaseしなければいいだけだ!といういかにもC的な馬鹿っぽいソリューションはあるが、それでは管理側に許してもらえないんだろ?)
LinusはGUI全く作ったことがない?のか知らんが、アーキにMVC感がまるでない。
ただMVCも、きちんとやった方が後々色々楽なんだけどね。
89:デフォルトの名無しさん
22/11/11 06:53:58.17 k022U7g40.net
ついでにSubVersionの糞っぷりも見えてきてるぞ。
> r13222, r13223, r13232
> libsvn_fs_fs の自動マージアルゴリズムを書き直した
> 変更する理由:
> 30万リビジョンが格納されたリポジトリのパフォーマンスが許容できない
> (小さなコミットをしても50分以上かかる)
> URLリンク(producingoss.com)
勿論もう直ってるんだろうけど、これはそもそも基本アーキがゴミだからこんな事になる。
順方向履歴しか持ってないのだろうよ。最低限逆方向履歴も持たないと駄目だ。
(持ってても整合性取れるまでcommitさせない仕様なら意味無いが)
あと俺がGitに批判的なのは、今の「PC不要論」と同じだ。
スマホで十分な連中には、PCはもう要らないのと同様、バケツで十分な連中には、Gitは要らない。
今はバケツがないからそう感じられないだけ。
90:デフォルトの名無しさん
22/11/11 06:54:51.83 k022U7g40.net
>>73
それは知ってるが、余計に使いにくいのと、
実際は空き領域を使う(SSDでいうウェアレベリング)でしかないので、
満タンになると自動的に消されるので使えない。
手動でディレクトリごとzipして名前に日付付けて並べた方がまだマシ。
91:デフォルトの名無しさん
22/11/11 06:54:56.54 KNn1/gM50.net
>>85
ちゃんとテストするから問題ない
お前とは違う
92:デフォルトの名無しさん
22/11/11 07:55:19.91 IJg9gJTfa.net
これを思い出した。
Linus曰く「Subversionは史上最も無意味なプロジェクト」
URLリンク(m.srad.jp)
93:デフォルトの名無しさん
22/11/11 09:04:46.52 gKK2uUPF0.net
>>82
電動ドリルのスレで、釘を打つにはコツがいる。学習コストが高いって子供が文句言ってるだけだな
電動ドリルはお子様には向いてない危険な道具なのでどっか行け
94:デフォルトの名無しさん
22/11/11 09:36:15.40 C2rEhT880.net
>>82
グダグダと思うのを使わずに「全自動履歴保持バケツ」を使えばいい
皆が欲しがっているのが「全自動履歴保持バケツ」というのが本当なら誰かがそれをつくるはずだからな
誰もつくらないのなら「皆が欲しがっているのは『全自動履歴保持バケツ』」は間違いということ
gitはそれを欲しがっている人たちによってつくられてきたわけだが、その人たちに
「俺が欲しいのはそれじゃない。俺が欲しいものをつくれ」と言うだけで自分ではやらない
口だけ番長の長文君
95:デフォルトの名無しさん (ワッチョイ 5e8f-gUJl)
22/11/11 10:11:58.79 xTZiT+Nz0.net
>>83
へえー君の言うバケツ方式なら猿並みの脳みそでもリポジトリ破壊しないのかーすごいなー是非作って欲しいわー
96:デフォルトの名無しさん (ワッチョイ 6914-zlm6)
22/11/11 10:37:17.96 KNn1/gM50.net
>>92
バックアップするだけだからな
誰でも出来る
バックアップを取り出したり比較したり
そこからパッチ作ったりマージするのが難しいだけ
猿にそんなものは必要ない
97:デフォルトの名無しさん (アウアウウー Sacd-oA9A)
22/11/11 10:39:45.87 IJg9gJTfa.net
長文の人頑張れ。君ならできる(かもしれん)。
Linusが2週間でgitを作った話。 を検索するとgitの初期の話が出てくるよ。
98:デフォルトの名無しさん (アウアウウー Sacd-oA9A)
22/11/11 10:44:54.12 IJg9gJTfa.net
追加で
URLリンク(gihyo.jp)
99:デフォルトの名無しさん (ワッチョイ debb-qVfh)
22/11/11 11:21:45.64 gKK2uUPF0.net
>>94
絶対無理じゃよ。
今までの文章見ててもまともなコード(動くコードって意味じゃなくて長期間メンテするような有意義なコード)を書いたことは無いのは明らかだ。
本とかウェブで読んだことを理解できずに超解釈して受け売りするだけの転売ヤー。
100:デフォルトの名無しさん
22/11/11 15:29:19.65 gKK2uUPF0.net
長文君にぴったりの git の使い方教えてやるわ
他の人は参考にすんなよ
初期化: git init -q ; git add .; git commit -qm "box"
一覧: git stash list --pretty='format:%h %ai %gD' ; echo
保存: git stash -aq; git stash apply -q
取出: git reset -q --hard; git clean -qfdx; git stash apply -q <xxx>
削除: git stash drop -q <xxx>
commitメッセージもindexも不要な長文君はこの五つの手順だけ覚えとけばいいぞ
コマンド長くて覚えられなかったらエイリアスにでもしとけな
101:デフォルトの名無しさん
22/11/12 06:42:22.57 h41UD2lS0.net
>>88
バグにはすぐに引っかかるものと、そうでないものがあるんだよ。
お前らが理解出来るとは思ってないけど。
Gitはパッチ適用ツールであって、本当に、パッチ書く側のサポートが全くない。
Git作ってる連中も、コミッタ?は結局パッチ適用側に回ってしまって、自分でパッチ書かなくなるから気づけない。
ありがちな展開だけどさ。
そして使う側は(目的外使用ではあるが)書く側として使うからずれる。
だから、求められてるのは「書く側」向けの「全自動完全履歴保持バケツ」。
102:デフォルトの名無しさん
22/11/12 06:43:34.00 h41UD2lS0.net
>>90
Gitが提供しているもの: 1000ページの取扱説明書を読まないとまともに使えない、超高性能電動ドリル
ユーザーが欲しかったもの: 引き金を引けば回るだけ、簡単で今すぐ使える、ホビー用電動ドリル
103:デフォルトの名無しさん
22/11/12 06:46:43.39 h41UD2lS0.net
ちな、CodeOfConduct読んで、あいつら中の人か!ってのが分かったので俺的査定。
Avar Arnfjord Bjarmason: 今なんとか方向修正を試みてるように見える。上手く導ければ有能だが、果たして?
Christian Couder: 出てきてないので不明
Junio C Hamano: 休暇中?らしい (40)
Taylor Blau: 無能。ってか閻魔大王が全スルーするならいないのと同じ。ちゃんと門番やれ。
そういえばGitのコーディングルールはどこにあるのだ?
今回ほどの糞コードは、コーディングルールで引っかけて落とせるはずだが。
104:デフォルトの名無しさん
22/11/12 06:52:44.85 h41UD2lS0.net
>>89,94,95
全部読んだ。なかなか面白かった。(89はコメントも全部読んだ)
君が冷やかしかマジかは分からないが、マジで要るんなら作ってみてもいい。
ただし今すぐ取りかかれるわけでもないし、全般的に考えて本年度末(3月末)位が現実的な目標になる。
今考えている構成をざっくり言うと以下
・Gitをゴミ箱/バケツ化するラッパ(フロントエンドのみ。バックエンドはGitで、Gitは別インストール必須)
・electronで作ってwindowsストアに配置(広告付き無料アプリ)
十分売れてる限り保守してやんよ(その必要すらないほど単純なアプリだが)
・プロプライエタリで伽藍開発。バザールなんてとても無理。コードは俺が書くから、お前らは使い勝手をフィードバックしろ。
・GitBucket(仮称)、Gitと付けたら不味いのなら考え直す
・コンセプトは、「何も知らなくても使える『全自動完全履歴保持バケツ』」
よって仕様は限りなく簡素化し、それ以上やりたければDBはgitだからgitアプリ使え、とする
・diffは取れるがmergeは直感的GUIがないので無理。が、主にバイナリを保存する連中には全く関係ないし。
・branchはディレクトリに割り当てて手動で。というより、git内にcommit履歴が保持されてないのでbranchの識別が出来ない。
105:デフォルトの名無しさん
22/11/12 06:54:37.10 h41UD2lS0.net
実装するだけなら2週間程度で十分だが、
・electron使ったこと無いので調査に2週間ほどかかる
・アプリストアも広告付きのアプリも作ったことないので、これも2週間ほど調査必要
・仕様を練らないとろくな事にならない、
Linusが2週間と言ってるのは実装であって、それ以前にずっといろいろVCS使ってきてるから仕様が熟成済みだっただけ。
・そもそも顧客がいるかどうか
・一応は他WindowsGitアプリを全部確認する必要がある。今tortoiseGit試しにインストールしてみたところ。
があるので、冷やかしでないのなら新しくスレ立てて様子見する。
スレタイには GitBucket(仮称)と、何か「Gitはもう諦めた系」「頑張らない系」の連中を集められる文言を入れたいが、何がいいか。
板はここかソフトウェア板だと思うが、他に候補があるか。
ただ対象ユーザーはここに来る連中ではなくガチのど素人なので、もっと全然違うところの方がいいかも?
スレタイ案:
A. もうGitBucket(仮称)でええやん。
B. GitBucket(仮称)使ってるからって、Gitが分からなかった訳じゃないんだからねっ!!!
C. GitBucket(仮称)計画中、Gitに疲れた奴集まれ
D. 日常のバックアップツールGitBucket(仮称)
冷やかしじゃない奴からの投票を受け付ける。
106:デフォルトの名無しさん
22/11/12 06:57:39.26 h41UD2lS0.net
>>97
(わざわざ色々考えてくれたのなら手間かけてすまんが)
正直全く分からんし、俺はstashも糞仕様と思うから使う気ない。
というか、Gitの連中、「仕様は小さくあるべき」という感覚がそもそも無いと思う。
俺だったら、branchなんて、各ディレクトリにそのままマッピングする。
つまり、sample.txtの開発なら、
.git
master/sample.txt
develop/sample.txt
featureXXX/sample.txt
stash/sample.txt
で、実行パスは xxxx/current/sample.txt としておいて、
ブランチの切換はcd、実行ブランチの切換は ln -s master current でよかった。
stashなんて不要機能そのものだよ。直感的じゃないし、そこまでGit信じ切れないし。
この馬鹿仕様で git add -A で取ってれば各ブランチの同時開発状況含めて完全にcommit履歴が保持出来る。これで十分だ。
Gitによってカレントディレクトリの内容が「上書き」されるのはかなり気持ち悪い。
zip展開するときと同様、バケツからは明示的に取り出さないと上書きされない、が分かりやすくて良いんだよ。
branch切換で全部上書きで入れ替わるのは、頻繁に過去と現在を往復するにはいい仕様だが、普通の人には要らん。
というわけでGitBucketは基本この方針でmasterに全ての履歴を数珠繋ぎ、
平行開発はディレクトリとシンボリックリンクで手動でやれ、
git branch xxxx で切り替えれば勿論切り替わるが、バックアップはその状態で取るのであしからず、
それが嫌なら一々masterに手動で戻せ、(自動戻しは失敗するときがあるので付けない)
だから戻し忘れたら一見ちぐはぐになるが、どのみち何処かに残ってるからなんとか探し出せ、という仕様。
要するにGitBucketはbranchを無視する。
(現在のbranchの記録はしておく。これでbranchを使う人も使わない人も問題ない)
107:デフォルトの名無しさん
22/11/12 09:27:34.24 xzRuq+6da.net
electron 使うなら、ブラウザ上にOSのデスクトップ画面を再現するのと同じ事ができるだろう。
ゴミ箱/バケツのところでなくて、デスクトップに置いて管理されている事になっているファイルをコントロールできるようにして欲しい。
108:デフォルトの名無しさん
22/11/12 09:30:46.94 Cj/ueztB0.net
>>98
> Gitはパッチ適用ツールであって、本当に、パッチ書く側のサポートが全くない。
パッチ適用ツールはpatchコマンドっていうんだよ
gitはそれ以上のサポートがたくさんある
これ以上何がほしいいっていうんだよw
109:デフォルトの名無しさん
22/11/12 09:31:53.24 Cj/ueztB0.net
>>103
> 俺だったら、branchなんて、各ディレクトリにそのままマッピングする。
同じ名前のブランチが複数あることを想定してないね
ちょっと失格かな。
110:デフォルトの名無しさん
22/11/12 09:37:06.39 Cj/ueztB0.net
>>103
> というわけでGitBucketは基本この方針でmasterに全ての履歴を数珠繋ぎ、
ああ、GitとGitHubの区別もついてなさそうだね
111:デフォルトの名無しさん
22/11/12 09:39:05.08 Cj/ueztB0.net
>>103
> branch切換で全部上書きで入れ替わるのは、頻繁に過去と現在を往復するにはいい仕様だが、普通の人には要らん。
branch切り替えで入れ替わるのはコミットしたものだけだよ
これは便利でコミットしてない設定ファイルやデータファイルなどは
そのまま残る
こういうことまで考えつかなかったでしょ?w
112:デフォルトの名無しさん
22/11/12 10:59:50.02 h41UD2lS0.net
>>104
> デスクトップに置いて管理されている事になっているファイルをコントロールできるようにして欲しい。
それはやる。というか、今考えている動作モードは2つで、
A. ある階層以下全部の履歴を記録
B. 明示的に指定したファイルまたはディレクトリの履歴を記録
で、Aがgit的、Bがゴミ箱的な使い方になる。
ライトユーザーにはBの方が直感的だろう。
毎日「ゴミ箱ならぬ記録箱」にブッ込んでおけば、万一の時に引っ張り出せるだけ、という使い方だ。
ただし中身がgitなので、当然Aの方が実装しやすい。
当たり前だが同居させないと余分なコードがいるので、無理にでも同居させる。
この解だが、一応
.git
c/users/user/desktop
みたいに、カレントをルートと見立てたファイルツリーとし、
明示的に指定されたらそこ(ディレクトリまたはファイル)を指すシンボリックリンクを作ってgitに取らせるつもり。
(この場合は上記desktopが実際のdesktopを指すシンボリックリンク)
これで不味いかね?普通に読むだけならシンボリックリンクは実体が見えるので、
gitがシンボリックリンクを特に区別しないならこれで全く問題ないはずなんだが。(未調査)
或いは git add c:/users/user/desktop とか、絶対パスで指定した方が上手く行くのだろうか?
しかし見る限り git add で指定するのは通常はカレント下だけなので、
(仕様的には使えたとしても)変なバグを踏みそうなので回避した方が無難ではある。
この仕様で問題なのは、パスが糞長いと記録出来なくなること。
つまり、カレント下に絶対パスを付け加えるので、実体のファイルツリーよりも「常に」カレント分だけパスが長くなり、
パスの文字数の上限(今も260文字らしい)を越えると記録出来なくなる。
> URLリンク(learn.microsoft.com)
だからガチもん商用アプリではこの解は使えない。
(仮にルートに置いてもc:\の3文字は長くなるので、ユーザーファイルが合計258-260文字のパスになってるときに記録出来ない)
が、今回は、「そんな糞長いパスにするな」で終わり、諦める。(WARNINGは出す)
113:デフォルトの名無しさん
22/11/12 11:00:10.29 h41UD2lS0.net
てな話を仕様として詰める必要があって、つまり、
1. どういう機能が欲しいか
2. それはこの仕様(実装)でいけるか
みたいなこと。
ちょこちょこやるのはさておき、本格的にやるならスレ分けるべきだな、という話。
114:デフォルトの名無しさん
22/11/12 11:11:14.80 h41UD2lS0.net
>>105
commit/rebase履歴の全保持と、commitのフィルタ機能だね。
記録側からみればゴミなcommitも、プログラマからみれば重要なんだよ。だからそれを見えなくする機能だね。
CSSでいうdisplay:noneの機能。
今は、「綺麗に清書して=プログラマには必要だったコミットも全部消して」提出しろ、になってるだろ。
これが無駄だし、プログラマ的には不快だ。
それは悪戦苦闘の記録であって、デグレードした場合に参照したい時もあるんだよ。消してるのは不味い。
ローカルだけにしろ、はその通りだが、今はローカルだけにも出来ない仕様だろ。(無駄にブロックチェーンしてるので)
115:デフォルトの名無しさん
22/11/12 11:11:41.80 h41UD2lS0.net
>>106
世界規模で勝手に開発してるLinuxならそうだろう。
しかし、ローカルファイルシステム、或いは共有ファイルシステムに於いては、当たり前だが「同じディレクトリ名」=「同一」なんだよ。
だからディレクトリ名が被って困る、なんて事はない。
そして、バックアップ的には、branchはパスが伸びた程度の意味しかないから、これで問題ない。
(git流のbranchの使い方をしてても、これで問題ない。
通常のファイルシステムでは、パス+ファイル名が同じなら同一と見なすが、
ここがgitではパス+ファイル名+ブランチ名になってるだけ。
branch自体の参照先も変えられる!と思うかもしれんが、それはユーザーがそうしたのであって、
確か○月○日頃の○○ブランチ内にそのファイルがあるはず、と思い出すのはユーザー責任だ。
いずれにしても何処かに記録はされてるから、あとは頑張って探せという仕様)
116:デフォルトの名無しさん
22/11/12 11:13:16.58 inQx9iPN0.net
git関係ないけどWindows10 1607以降はMAX_PATH制限なくなってるんだな
117:デフォルトの名無しさん
22/11/12 11:13:17.79 h41UD2lS0.net
>>108
知ってるぞ。
ただ、切り替わらなくてもいい共通ファイル類はその場合には .git 階層に置くんだよ。
というかね、gitが何故か「カレント主義」になってて、とにかく「カレントディレクトリ」なんだよな。
これは本当によく分からない。
俺がGitGUIで最初にやったのは、「Open repository ...」を探すこと、だからな。
無いから、「え?まさか?カレントで起動しないと駄目なのか?」でわざわざショートカット作り直して起動し直した。
普通そんなアプリ無い。この辺は、「いつも通りのアプリ」じゃないと駄目なんだよ。
118:デフォルトの名無しさん
22/11/12 11:26:13.02 403mRijK0.net
>>101
仕様や開発グループがグダグダだと思っているものをバックエンドにするのか
「gitがグダグダだからできなかった」と言い訳して終わりそう
>>103
mergeのことは考えてないんだな
119:デフォルトの名無しさん
22/11/12 11:28:11.58 zxvXZjfz0.net
>>102
投票とかどうでもいいから早く別スレ行け
馬鹿向けのアプリは馬鹿だけが多数寄ってきて繁盛するからそっちで頑張れ
git は馬鹿には使えないことが理解できたんだろ
120:デフォルトの名無しさん
22/11/12 11:37:38.69 zxvXZjfz0.net
>>103
ブランチにディレクトリを使うのは既に subversion がやって失敗した道だぞ
ファイル数やファイルサイズが大きくなるとブランチ切るのに時間とディスク容量がかかり過ぎる
過去話読んでも何も学ばないやつはゴミを再発明するよな
とはいえ、お前やお前が想定しているユーザー層はたいした規模のプログラム組まないだろうからゴミでも十分かもな、知らんけど
121:デフォルトの名無しさん
22/11/12 11:45:13.42 h41UD2lS0.net
>>115
車輪の再開発はしないんだよ。
どこまで使えるか判断して、その範囲は使うし、それを超えた範囲は使わない。
(今の実態だと、git add 絶対パス、はほぼ確実にバグを踏むから使わない)
自分で作ればバグがない物が簡単に出来るわけでもないし。
> mergeのことは考えてないんだな
GUIでmerge、例えばドラッグアンドドロップでmergeは怖いだろ。
コピーするつもりがmergeされたら悲惨なことになる。
(コピーや移動と同じGUIにmergeをアサインしてはいけない)
だからmerge自体はgitアプリで明示的にやれ、という仕様。その方が安心だ。
そもそもバイナリはmerge出来ないし、
GitBucket使うような連中にはmergeなんてほぼ要らん。
てゆうかね、そもそもmergeが主な仕事ならgit使うべき。あれは完全にmerge特化型だから。
GitBucketのユーザーは、そのmergeのネタを作る側、つまりプログラマとかクリエーターとかだ。
管理側じゃなくて、管理される側。
122:デフォルトの名無しさん
22/11/12 11:59:07.72 zxvXZjfz0.net
>>111
アホでやんの。マニュアル斜め読みしただけで実際に使用してないので本質が見えてないな
rebase する前に新しいブランチ切ってやれば
rebase前とrebase後の両方残せるという基礎の基礎すら理解できてないのか
普通はそうやって使うんだよ。マージも一緒。
ブランチが軽量で好きなだけ切れるので情報残したい数だけブランチを切ればいいだけだよ
rebase --keep-base みたいな使い方もあるけど基本が理解できてないやつは混乱するだけだろうな
123:デフォルトの名無しさん
22/11/12 11:59:16.76 403mRijK0.net
>>118
× mergeが主な仕事ならgit使うべき。
○ mergeを使う可能性があるならgitを使うべき
長文君ソフト(仮)ではmergeのことを考えてないんだから
すでに書かれてるけど他のスレに行ってくれ
仕様の検討も含めてそっちでやればいいんだから
124:デフォルトの名無しさん
22/11/12 12:01:03.49 h41UD2lS0.net
>>117
ああその失敗情報は有り難い。
ただ、そこは理論的に問題ない。
技術的には、Gitでもカレントを「上書き」するのだからコピーと同じだけのI/Oが必要であり、
I/Oバウンドの場合、GitでもSubversionでもその部分の処理時間は同じになる。
(Gitのbranch切換とSubversionのブランチ作成が同じI/O負荷)
そこで速度差が出るのだから、実際は、86で既に言ったとおり、Subversionが各ソースを「展開」するのが遅くて、
それはおそらく順方向履歴しか持ってないからだ。
(逆方向履歴持ってれば、commitは早くならないかもしれないが、branch切り出しはコピーと同速に出来る)
ここら辺はSubversionの基本アーキが腐ってるからだが、
この点GitBucketは中身Gitだから、コピーするだけで、結果的には本家Git(上書きするだけ)と同速だよ。
そのコピーが重い?
だったらbranch切換セレクタだけは付けるから、それで勝手に自前で管理しろ。
バックアップツールとしては、branchはパスが伸びただけの意味しかないからそうする、というのは112の通り。
コピーオンライトのファイルシステム、つまりハードリンクにする手もあるけど、これはユーザーが付いて来れないだろ。
ならコピー時間待たせた方がいい。
125:デフォルトの名無しさん
22/11/12 12:09:47.00 h41UD2lS0.net
>>119
> rebase する前に新しいブランチ切ってやれば
そこはbranchではなくてタグだとは思うが、要はそれ、gcされないようにポインタ残してるだけだろ。
しかし開発しなくなったbranchは刈り取れ、というのが一般の使い方だろ。(それが推奨されてるように見える)
そもそもgcされないようにxxする、というのが間違ってるんだよ。
そんなところまでユーザーが密結合すべきではない。
普通にオススメ通りやったら、探せば何処かに履歴はあるよ、程度じゃないと。
まあ--keep-baseについては見てみるよ。
Bookの方が断然良かったのでman の方読むの止めてたから、知らなかった。
126:デフォルトの名無しさん
22/11/12 12:11:08.00 zxvXZjfz0.net
>>121
お前、作成の負荷と切り替えの負荷の区別ついてないだろ
実用上で問題になるのは作成の負荷、切り替えはディレクトリ方式の方が軽いけどそこは重要じゃない
127:デフォルトの名無しさん
22/11/12 12:15:51.67 zxvXZjfz0.net
>>122
必要なものには後で探せるように名前をつけておく。
名前のないものはいらないものなので掃除の時に捨てる。
基本中の基本すら理解できないの?
128:デフォルトの名無しさん
22/11/12 12:18:07.20 bWvYfJDZ0.net
Subversion のブランチ作成がファイル数やサイズで重くなるとか・・・
てきとうなこと言うやつが二人になってカオス。二人とも早く別スレに行くか黙るかしてくれ。
129:デフォルトの名無しさん
22/11/12 12:34:32.74 ajB/boEg0.net
GitBucket をdisってんのかと思った。
その名前はもう使われてるから変えろ
130:バカ。
131:デフォルトの名無しさん
22/11/12 12:54:11.71 h41UD2lS0.net
>>120
多分な、開発現場において「ファイル内の」mergeが日常ってのはあまりないと思うぞ。
それは各自が勝手にどのファイルをどういじってもいい、ということだから。
gitによって開発フローが変わった!ってのがこの辺かもしれんが、
普通は担当を振り分けて、結果的に
「この期間にこのファイルを触るのは○○だけ」
と交通整理される。
同時に変更する必要があれば、同じ奴に同時にやらせるだけ。(注文が増えるだけ)
そして各自が変更したファイルをかき集めて、くっつけて終わりだ。
お前らはこれもmergeと言ってる気がするが、
これは「更新日時が新しければ上書きする」だけの話で、手動でも楽勝だし、
プログラマはこれをmergeとは言わない。
プログラマが言う「ファイル内」のmergeが日常的に発生するかどうかはその部署のオペレーションによる。
(が、会社とか統制取れる場所でこれをする意味はないから、OSS以外ではほぼないと思うが)
132:デフォルトの名無しさん
22/11/12 12:57:01.77 h41UD2lS0.net
>>126
了解。考え直すよ。一度位ググるべきだったわ。
133:デフォルトの名無しさん
22/11/12 13:00:04.63 zxvXZjfz0.net
>>125
お前的には svn copy だけがブランチの作成で svn checkout は不要という主張したいの?
svn 的には checkout までが作成で、ブランチの切り替えは cd じゃないか。
オフトピなので svn の思想の話を続ける気はないけど、気になった。
134:デフォルトの名無しさん
22/11/12 13:08:13.18 403mRijK0.net
>>127
結局これだろ
mergeを使う可能性があるなら長文君ソフトでなくgitを使うべき
gitのスレなのにmergeの意味が違うとか言い出すし…
135:デフォルトの名無しさん
22/11/12 13:18:34.58 h41UD2lS0.net
>>130
つまりお前らGit屋の要求仕様は、
ファイル内のmerge:要らん
ディレクトリ内のmerge(=新しい方を取るだけ):要る
ってのか?これなら手動でやった方が楽だよ。
普通にゴミ箱=エクスプローラ的GUIになんだから、日付でソートして纏めて選択して持ってくだけ。
いちいち「オレオレアプリ的merge」とか用意するから余計混乱する。
使い慣れたエクスプローラで苦も無く出来るのだから、それで十分なんだよ。
136:デフォルトの名無しさん
22/11/12 13:25:22.90 403mRijK0.net
>>131
訳のわからないこと言ってないで、とっとと長文君ソフト(仮)スレ立てて移動しろ
137:デフォルトの名無しさん
22/11/12 13:25:51.41 zxvXZjfz0.net
>>131
そんな低レベルの話してるのはお前だけだぞ
138:デフォルトの名無しさん
22/11/12 13:45:55.74 /s1n3tt70.net
>>127
> 普通は担当を振り分けて、結果的に
> 「この期間にこのファイルを触るのは○○だけ」
> と交通整理される。
いつの時代のこと言ってんの?待ちが発生すること自体問題とは考えないの?
> 同時に変更する必要があれば、同じ奴に同時にやらせるだけ。(注文が増えるだけ)
> そして各自が変更したファイルをかき集めて、くっつけて終わりだ。
> お前らはこれもmergeと言ってる気がするが、
> これは「更新日時が新しければ上書きする」だけの話で、手動でも楽勝だし、
> プログラマはこれをmergeとは言わない。
更新日時見てマージとか、複数の人が並行開発した場合を考えてないよね
139:デフォルトの名無しさん
22/11/12 13:47:01.20 h41UD2lS0.net
>>132-133
最初に言っておくべきだったが、俺が作るアプリはお前らGit屋向けではないよ。
プログラマ、或いはクリエイター向けで、
Gitなんか勉強したくない、何でもいいからバックアップと履歴が取れてればいい、という人向けだ。
だから内部DBには都合がいい物を使うだけで、SQLiteもあり得るし、途中での変更もあり得る。
Git屋はGitを使うべきだよ。そもそもGitがGit屋向けフルチューンだし、
だからこそ文句言われてるわけだが、目的外使用なのだからLinusから見れば完全に筋違いだ。
なら、俺が「プログラマ/クリエイター向け」のツールを提供しよう、というだけ。
140:デフォルトの名無しさん
22/11/12 13:49:39.50 zxvXZjfz0.net
>>135
だから、このスレでやるな。
自分のスレ作って引き籠もれ。
141:デフォルトの名無しさん
22/11/12 13:51:09.55 h41UD2lS0.net
>>134
それなら、お前にはフィットしないだろうし、お前の周りはGitを引き続き使えばいいだけ。
俺は127方式やもっと小規模(個人)レベルでの開発を想定したツールを提供するだけ。
目論見が外れてたら、思ったより売れなくて、俺の骨折り損なだけ。
これで何の問題もないだろ。
142:デフォルトの名無しさん
22/11/12 14:12:47.90 403mRijK0.net
>>137
長文君ソフト(仮)ではmergeのことを考えてないから
mergeを使う可能性があるなら長文君ソフト(仮)ではなくgitを使うべき
ってことだろ。なんなんだよGit屋って。
とっとと長文君ソフト(仮)スレ立てて移動しろ
143:デフォルトの名無しさん
22/11/12 14:55:15.80 h41UD2lS0.net
>>119,124
--keep-base見たが、これ仕様が欠けてるんだよ。
だから君みたいな「あらかじめポインタ(branchまたはtag)を確保しておく」使い方しか出来ない。
rebaseが成功したらbranchは新しい方を指すので、古い方は名無しになってしまう。(放置したらgc対象)
だから本来の仕様は、 --keep-base "AsThisBranch" とかで、新しいbranch名かタグ名を指定出来ないとおかしい。
これ --keep-base だけしても名無しのままだから即削除されないだけで、じきにgcされるから、意味ないと思うぞ。
こういうところがGitは仕様が雑なんだよ。仕様の重要さをまるで理解してない。これただの落とし穴だよ。
そして落ちない工夫が「あらかじめbranchにしておく」君のやり方で、バッドノウハウになってるだけ。
そりゃ君らみたいなGit屋にとっては落とし穴は多ければ多いほど重宝されて都合がいいんだろうけどさ。
それでちょっと確認したいんだけど、君がbranchに拘ってるのは、もしかしてタグ付けてもgc対象になったりする?
何かこの辺雑だし、下手すればあり得るので怖いんだけどさ。
あと俺が欲しい仕様は、rebaseした奴の親としてrebase前の記録が全部保持されるタイプで、--keep-baseではない。
まあ俺はrebase無しで運用してこの辺回避するからいいんだけどさ。(つかmergeでいい)
144:デフォルトの名無しさん
22/11/12 14:56:22.97 h41UD2lS0.net
>>138
プログラマ: 主にソースコードを書いてる連中
クリエイター: 例えば主にフォトショで絵を描いてる連中
Git屋: Gitを操作することが主な仕事(>>83内のGit用員)、ソースコードは書けないし、絵も描けない
145:デフォルトの名無しさん
22/11/12 15:04:56.83 ajB/boEg0.net
まあ、こうやって素人考えをぶつけてみることでgitの良いところを再認識できるのであれば
まったくの無駄ではないのかもしれまい。
146:デフォルトの名無しさん
22/11/12 15:24:26.31 h41UD2lS0.net
>>141
× Gitの良いところ
○ Gitと被るところ
バックアップツールで必須な
・更新されたファイルを保存しておく
・変更されてないファイルは改めては取得しない
・変更履歴も保持し、必要なら古いファイルも取り出せる
・可能なら定期的に圧縮する
をGitが持ってるから、目的外使用されてるだけだな。
まあ基本アーキがいいから目的外使用でも本来ツールと戦えるということではあるけど。
ただ変更を酷く許してないところは頂けない。ここは俺はぶち壊す予定。
(間違ったファイルをコミットして大騒ぎ、結局全部作り直し、みたいのを無くして、ファイルを普通に消せるようにする。
ハッシュがずれたところで、ツリーには関係ない)
Gitのバックエンドは出来がいいんだと思うよ。多分。(俺が問題に遭遇してないだけかもだが)
Gitが糞なのは、フロントエンドと、仕様だね。ドキュメントは多すぎるが、よく書かれているし、少ないよりは断然いい。
147:デフォルトの名無しさん
22/11/12 15:51:38.43 pkT2sKDg0.net
どうでもいいが95%はコード書いて検証してる時間で、複数人でレビューしながら開発とかでない限りGitに使う時間って5%くらいだろ。
皆プログラム書きつつGit触れて普通だと思うんだけど。それこそWeb業界では。難しいことになるときがないとは言わないけどたまーにでしょ。
グラフィックの感性で勝負とか、そういう特殊な世界のプログラマー以外でWeb系でGitも使えないんじゃ普通仕事にならないけどな。
148:デフォルトの名無しさん
22/11/12 16:11:19.82 zxvXZjfz0.net
>>142
git はバックアップツールじゃないぞ。
料理に例えるならお前が欲しがってるのは出来た料理を保管するための冷凍庫。
git が提供してるのは料理を作ったりアレンジするためのレシピ本(とその編集機能)
あとお前の言う「プログラマ」って、単なるコーダーで、本物のプログラマじゃないだろ。工場で刺し身にタンポポ載せてるやつは料理研究家じゃないからな間違えんなよ。
149:デフォルトの名無しさん
22/11/12 17:09:07.94 403mRijK0.net
>>140
長文君はgitをバックアップツールとしか見てないのに、Git屋というそのためだけの要員を
わざわざ雇っている会社があるという妄想に取り憑かれているんだな
150:デフォルトの名無しさん
22/11/12 17:57:20.46 h41UD2lS0.net
>>143
いや5%(=24分)も十分多すぎだけどな。
まあそれはさておき、コードと開発体制も糞だったのを忘れてたから、
Gitの良い所: 基本アーキ、バックエンド、ドキュメント
Gitの糞な所: フロントエンド、仕様、コード、開発体制、(ドキュメント多すぎ)
となる。ここで、駄目なところは全部マネジメントに起因してる。
一般の会社なら課長/係長クラスで締める部分が締まってない。
これは指揮系統を持たない「バザール」の宿命で、他知らんけどこんなもんなのかもしれないが、
OSSという意味ではchromeとかもっとガッツリやってる(ように見える)し、少なくともregressionテストは流しまくってる。
あっちはGoogleが締めてるのかもしれないが、Gitは見た目1本もregressionテスト流してないのは駄目だろ。
Subversion(58内記事)ではregressionテストに落ちたらcommit禁止だったらしいし。これが普通。
CVSはこの辺ガッツリやりすぎて、テスト用の3万行超のシェルスクリプトに
(自分がcommitする部分の為の)新規テストを追加しなければcommitしちゃ駄目、とかで問題だったとも書いてあったが。
>>144
料理の味で勝負をしたいのに、冷蔵庫の使い方を100時間かけて勉強して、
冷蔵庫のご機嫌を取らないといけない事に、みんな文句言ってるんだよ。
ただこれはテクノロジーが達してないだけではある。
昔は航空機関士が同乗してたように。(乗ってて何とかなったとはとても思えないが、それはそれ)
今はGit屋が必要なレベルで、じきにもっと簡単な物が出てきてお役ご免になるはず。
出てこないようなら俺が作るよ、ということ。
151:デフォルトの名無しさん
22/11/12 18:26:38.13 zxvXZjfz0.net
>>146
だから料理の「レシピ本の作り方」をどんなに読み込んでも冷凍庫の使い方は載ってないぞ。少しなら冷凍庫の使い方のヒントになる部分もあるので勘違いしてるんだろうけど。
冷凍庫
152:欲しかったた冷凍庫買え。レシピ本に冷蔵庫の代わりを求めるな。
153:デフォルトの名無しさん
22/11/12 18:35:41.91 403mRijK0.net
>>146
俺が作ると言うだけなら簡単だ
スレ立ててそっちに移ることすらできない奴でも
俺が作ると言うことはできる
154:デフォルトの名無しさん
22/11/12 18:40:42.95 inQx9iPN0.net
うちの会社にも取引先にもgit使えないプログラマーなんていないけど
git屋わざわざ雇ってる会社のプログラマーてアホばっかりなん
155:デフォルトの名無しさん
22/11/12 18:42:32.33 h41UD2lS0.net
>>147
料理人: 冷蔵庫なんてブッ込んでおけば冷える、で十分
Git: 正しいブッ込み方じゃないから直せ、いやそもそもブッ込み方を知らない奴が使うな!と文句を言う冷蔵庫
156:デフォルトの名無しさん
22/11/12 18:55:39.59 h41UD2lS0.net
>>149
> 公開リポジトリにプッシュしたコミットをリベースしてはいけない
> URLリンク(www.git-scm.com)
これは既知の問題だけど、これが既知とされるまでにだいぶ大騒ぎしてるはずだよ。
プルリクして、公開リポジトリの操作自体は分かってる奴がやる、
(その時点でおかしい構造ならまずローカルを修正させる)
というのがセオリーなんだろうけど、それをやるのがGit係=「Git屋」だよ。
他のVCSだとそもそもおかしい操作ができない(=操作出来る範囲が最初から制限されまくってる)からそうはならない。
全世界で唯一の履歴を持つんだ!とか壮大な風呂敷広げてるからこうなる。
ローカルリポジトリは好きにさせて、リポジトリ単位ではなく、commit単位での同期で十分だったはず。
157:デフォルトの名無しさん
22/11/12 18:56:07.38 zxvXZjfz0.net
>>150
git: レシピを他の人と共有したりアレンジ料理のアイディア出しに使うツール。
そもそも冷凍庫が欲しい人はお呼びじゃない。どっか行け
158:デフォルトの名無しさん
22/11/12 19:00:06.45 zxvXZjfz0.net
>>151
既知も大騒ぎもない。最初からだよ。
理由が分からない時点でおっさし案件
159:デフォルトの名無しさん
22/11/12 19:46:47.33 Cj/ueztB0.net
>>114
> ただ、切り替わらなくてもいい共通ファイル類はその場合には .git 階層に置くんだよ。
複雑な仕組みを入れるな。
gitは、gitを使わない場合と全く同じ形のディレクトリ構造に保たれている
バージョン管理をしない通常の開発フェーズでは、gitを使わないのと全く同じ
お前が言うやり方では、gitのためにディレクト構造を作らないといけなくなる
あ~ほらし
まあね、この程度なんだよ
160:デフォルトの名無しさん
22/11/12 20:11:12.01 h41UD2lS0.net
>>154
> gitのためにディレクト構造を作らないといけなくなる
ここら辺がGit信者が勘違いしまくってる点だよ。
これは
× Gitの為に
○ branchの為に
であって、ツールを『何も使わずに』branchを用意する場合の構造と同じなんだ。
本来ツールは「使えば便利」で十分なんだよ。
例えば何度も言われてる「電動ドリル」なら、
ユーザーが求めていたもの: 手動ドリルだと手が疲れるので、
手が疲れないだけで、使い勝手や小回りの良さは手動ドリルと同じ程度の電動ドリル
であって、
Git: 世界中どんな物にも穴が開けられる据え付け型超高性能電動ドリル、
ただし取り扱い要注意なので1000ページの説明書を読め、
なんて要らないんだよ。可能であれば、それ以前のユーザーがやっていた方式と
出来るだけシームレスに接続出来た方がいい。
だからこの点は、Subversionの方が仕様として正しい。
上書き切換方式がよければ、Opt-inにすべき。
ただ高級機は必要ではあるので、ここら辺はGitが悪いと言うよりは、
普及機がないからそのまま高級機を使ってて愚痴ってる奴が悪い。
だから俺が普及機を用意してやる、ということ。
161:デフォルトの名無しさん
22/11/12 20:16:31.82 Cj/ueztB0.net
> であって、ツールを『何も使わずに』branchを用意する場合の構造と同じなんだ。
> 本来ツールは「使えば便利」で十分なんだよ。
その発想が根本的に間違っている
本来ツールは「なければ不便過ぎて苦痛」だから作られ
162:た
163:デフォルトの名無しさん
22/11/12 20:18:52.70 Cj/ueztB0.net
× ユーザーが求めていたもの: 手動ドリルだと手が疲れるので、
手が疲れないだけで、使い勝手や小回りの良さは手動ドリルと同じ程度の電動ドリル
○ ユーザーが求めていたもの: 手動ドリルだと作業が面倒すぎて時間がかかり過ぎで
現実時間で解決することができない。人間には不可能な問題を解決するためものが電動ドリル
164:デフォルトの名無しさん
22/11/12 20:19:33.56 Cj/ueztB0.net
Git: 短時間で遠くまで移動できる自動車
ただし取り扱い要注意なので免許を取れ
165:デフォルトの名無しさん
22/11/12 20:27:52.45 inQx9iPN0.net
force pushでもされない限り復旧不能なリポジトリ破壊なんてされないけどな
サーバー側でforce禁止にすればいいし
166:デフォルトの名無しさん
22/11/12 20:40:30.40 h41UD2lS0.net
まあとにかくだ、基本思想が違ってて、俺は「簡単は正義」だから、
Git: 使いこなせない馬鹿が悪い
俺: 難しい物を作る馬鹿が悪い
で、平行線なんだよ。
ただお前らからは普及機は出てこないのは分かったから、俺が作るよ。
(もっと調査してからだが)
俺は、難しくなる妥当な理由があるのなら仕方ないが、そうでなければ簡単にしろ、で
ジョブスの「ボタンは一個にしろ!!!」は肯定派。(Apple使う気ないけどさ)
つかよ、Gitの勉強じゃなくて、お前らコードの勉強しろよ、だからな。
あのパッチの顛末、マジで酷いぞ。C読める奴が居たら本当に聞いてみ。
Git等のツールは、最終的にはソフトウェアのコードの品質を上げる為であって、
Gitに習熟したけど糞コードしか書けません、では完全に本末転倒だ。
167:デフォルトの名無しさん
22/11/12 21:02:25.04 403mRijK0.net
>>160
俺が作ると言うだけなら簡単
実際に作って公開しなければ口だけ番長と思われてお終い
168:デフォルトの名無しさん
22/11/12 21:26:19.25 h41UD2lS0.net
>>161
いや101の仕様で手こずると思ってるお前もかなりヤバいけどな。
これも周りにプログラマが居たら聞いてみ。
ただ、自分で使う用に動けばいい物と、他人が(デタラメに)使う用に作るのはだいぶ違うんだ。
だからきちんと状況確認して仕様はしっかり詰めるべきなんだよ。
Gitにはこの辺の感覚がない。
まあLinusが個人的に必要だから作った、完全特定個人向けチューニングだからではあるが。
この辺がGit(を使わされる側)の不幸なところだよ。