[過去ログ] Git 19 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
782
(1): デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 01:23:47.81 ID:Af/nXbF+0(1/10) AAS
長文君には RCS の時代からバージョン管理使って来てるやつがいることとか思いもしないんだろうな。RCS → CVN → Subversion → git がメイン履歴だな。他にも浮気したけど
svn もかれこれ7年くらい使ってたわ
786
(2): デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 09:28:05.75 ID:Af/nXbF+0(2/10) AAS
個人的な経験からバージョン管理の進歩で最大の進化を挙げていくと

rcs: バージョン管理で共同開発できる
cvs: リモートチェックアウトでロック取らずに共同作業可能になった
svn: アトミックコミットができるようになった
git: ローカルブランチが切れるようになった

というやつなので長文君の主張は全部的外れ
ローカルブランチのない時代には絶対に戻りたくない
795
(1): デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 14:41:38.83 ID:Af/nXbF+0(3/10) AAS
>>789
789(1): デフォルトの名無しさん (ワッチョイ 317b-vj3y) [sage] 2023/08/19(土) 12:54:31.75 ID:2LFpxJcr0(2/8) AAS
>>787には同意する。

>>786
> ローカルブランチ
これ言うほど意味あるか?
集中型でもローカルに動作環境を作って試す。
通常は最新版のファイルを全コピーし、目的のファイルだけ変更してテスト等流すことになる。
だから実際の作業状態は集中型でも分散型でも変わらない。
最終的に提出するのがファイルかリポジトリかという話であって。
プログラム書けないやつはこれだから……

・複数の実装を書いて比較してみたいことがある
・機能の組み合わせを複数パータンでテストしたいことがある
・新しい発想を他に影響を与えずに試したいことがある
・新規提案前に実物を作って見せたいことがある
・開発を複数並行で進めなくてはいけないこともある
・緊急の割り込みタスクが入ることがある
・自分の仕事の合間に他の人の仕事を助けてやることがある
・やっつけで書いたコードを他人に見せる前に綺麗に清書するのは当然、しないやつは○ね
・テストなどで出た問題は他人に見せる前に直すのが普通
・タイポとか恥ずかしい間違いは他人に見せれない。見せられた方も困る

まだまだ書けるけど?
799
(1): デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 15:41:12.22 ID:Af/nXbF+0(4/10) AAS
>>793
793(3): デフォルトの名無しさん (ワッチョイ 317b-vj3y) [sage] 2023/08/19(土) 13:51:27.18 ID:2LFpxJcr0(3/8) AAS
>>791
> ここまでの作業で気づいた間違いは自分以外の人に影響を与えることは全く無い
それはどんな環境でも同じだよ。
違いは提出物がファイルかリポジトリかで、一つのファイルしか触ってないのならファイル提出の方が断然楽だ。

しかもお前ら、
> そのローカルブランチをそのまんまメインリポジトリのブランチにワンタッチで昇格できる
は禁止なんだろ?
仮にパッチを作成するのに10日間かかったとして、
1日目(○○やります!!!)、2日目、、、10日目(完成しました!!!)、というコミットではなく、
最終的にrebaseして一発で最終状態(10日目の結果)を生成したと改竄した履歴をローカルリポジトリに作り、それを提出しろ、と言うんだろ。
なら意味ねーじゃん。
ぜんぜん分かってないな。例を挙げると

A機能の追加
A機能のバグ修正
B機能の追加
A機能の変数名変更
B機能のスペルミス修正
C機能の追加
B機能のアルゴリズム変更
A機能のバグ修正
A機能とC機能の共通部分のくくり出し
共通部分を使うようA機能を変更
共通部分を使うようC機能を変更
C機能の拡張
C機能のコメントのタイポ修正
不要になったB機能の削除
A機能のコード整理

という作業を1日に手元でやって、15回のコミットがローカルブランチに入ってるとして、これを共有前に

共通部分の追加
A機能の追加
C機能の追加

という3回のコミットに直して、それぞれに丁寧なコミットログ書いて、こっちだけを共有するんだよ。他の人がレビューしたり再利用する時間が大幅短縮できる。
git ならコマンド1つでこの「直し」ができる。これをやらないのは、他人の時間を湯水のように使っても許されると思ってるバカだけ。
他でもやるべきだが、git みたいにコマンド一発とはいかないので超面倒。結局ぐちゃぐちゃなのが共有されたりする
802
(1): デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 17:16:31.29 ID:Af/nXbF+0(5/10) AAS
>>800
800(2): デフォルトの名無しさん (ワッチョイ 317b-vj3y) [sage] 2023/08/19(土) 16:15:13.73 ID:2LFpxJcr0(4/8) AAS
>>795
それ全部、ブランチ無くてもローカルでコピーすれば出来る案件だろ。
実際、git以前でも出来たけど、何故出来ないと思ってるの?
お前、共有リポジトリを生でいじるガイジか?

ブランチはある意味そういったコピー履歴/ドタバタ履歴をリポジトリ内に記録する為の機能であって、
後で改竄してそういったドタバタなんて無かったことにするのなら、必要ないんだよ。
最終状態のファイル群をmasterに繋げていけば済むんだから。そしてgitが推奨してるのはこれだろ。

>>797
> 禁止してるところはほとんど無い
綺麗な履歴なら、だろ。
そして>>799のように綺麗な履歴にするのがmustなんだろ。

俺が残したい履歴は
> 結局ぐちゃぐちゃなのが共有されたりする(799)
と表現されてる方だから、gitは俺には(と言うよりもコードを書く人にとっては)合わないし意味がない、というわけ。
(ただまあ《マージしかしない》Linusにとっては「ぐちゃぐちゃ」してる部分は意味がないのも事実なので、
《自分専用機を作っただけの》彼がこの機能を意図的に落としているように見えるが、
それにつき合わされてgitを崇拝してる連中は頭がおかしいとしか思えない。
お前にとって残したい履歴は何?という話)

逆にHgとかはこの「ぐちゃぐちゃ」な履歴を保持するポリシーなのかな?
あちらは履歴の改竄は禁止だと聞いているので。
誰か知ってたら教えて。
ちゃんと調べたか?
git も hg も同じだよ。そのためのローカルブランチなんだから
どっちも共有リポジトリの改竄は禁止、やったやつは腹を切れ。ローカルはお前にしか影響ないんだから好きにしろ。
803
(1): デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 17:25:39.06 ID:Af/nXbF+0(6/10) AAS
> お前にとって残したい履歴は何?という話)

結局、プログラムしたことないので個人で残したい履歴と、共有で残したい履歴は違うということが理解できないんだな。

タイポの修正履歴とかは他の人にとってはノイズでしかないので共有不要。自分の手元にだけ残っていれば良い。タイポ修正前のコードを見たいやつはいない。
多人数で開発する場合はノイズが少ないほど開発効率が上がるしバグも少なくなる。
811: デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 22:55:00.77 ID:Af/nXbF+0(7/10) AAS
>>806
806(1): デフォルトの名無しさん (ワッチョイ 317b-vj3y) [sage] 2023/08/19(土) 21:36:21.23 ID:2LFpxJcr0(6/8) AAS
>>803
> 個人で残したい履歴と、共有で残したい履歴は違う
> 自分の手元にだけ残っていれば良い
これらはその通りだが、gitにはこれを残す方法が用意されてないだろ。(まあsvn等も同様だとも思うが)
お前は一々別に残せと言うのか?
799通りやってたら既にそれがgitに記録されてるのに?(1回目)
そして共有用に履歴を改竄して、(2回目)
またどこか別にオレオレ用履歴を記録し直すなりしろと?(3回目)
三度手間だろ。
お前らの言う「グチャグチャな」履歴(1回目)を提出すれば(2回目)(3回目)はやらなくて済む作業だよ。

そしてそもそも履歴の哲学が間違ってる。
gitは「歴史か物語か」と嘯いてるが、これは90年代のPCが非力なときの思想であって、
履歴は「全部記録した上で表示時に間引く」と結論は出てて、他も全部そうなってるだろ。
(テキストで言えば>>logしてgrepする)
後になって確認するときにならないと、何が必要だったか分からないものだからだよ。

綺麗に改竄された履歴があったとして、仮に修正漏れがあったとき、
何故修正が漏れたのか、どこで対応し損ねたか、反省も出来ないだろ。
タイポの記録なんて馬鹿げてると思うのなら、タイポしないように注意しろという話であって、
タイポ記録まで含めて記録されてれば、
後から「ああ俺はあのときはこんなにタイポしてたのか、ずいぶんマシになったな」というのも分かるだろ。
小綺麗な記録だけ残ってても大して役に立たない。
記録は「できるだけ情報を削らない」のが大原則だ。
gitはこの辺が根本的に間違ってる。思想が古すぎる。
「歴史か物語か」は、適切にgrepする機構が足りてないのを誤魔化してるだけ。
それで騙されてるお前らはお花畑過ぎる。

>> 個人で残したい履歴と、共有で残したい履歴は違う
>> 自分の手元にだけ残っていれば良い
> これらはその通りだが、gitにはこれを残す方法が用意されてないだろ。

わざわざ消さなければ残っているのにどうして別の方法が必要なんだ?

>履歴は「全部記録した上で表示時に間引く」と結論は出てて、他も全部そうなってるだろ。

お前の脳内結論とか持ってこられても開発効率は上がらないんだよ。複雑なバグの追跡やコードの再利用には綺麗な履歴が必須。
814
(1): デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 23:17:28.06 ID:Af/nXbF+0(8/10) AAS
>>807
807(3): デフォルトの名無しさん (ワッチョイ 317b-vj3y) [sage] 2023/08/19(土) 21:38:13.61 ID:2LFpxJcr0(7/8) AAS
>>804
それが技術的に出来るのはみんな知ってるよ。
問題は上述の通り、それをやったときに適切にgrepする機構がないから、
最初からgrepした結果になるように履歴を改竄した上でpushしろ、という文化な事。
マージするLinusの都合だけで作ってある。
だからコードを書く側の俺はgitには相当違和感があるし、
805内URLの人もそうだからMercurialとは違うと書いてるのだと思う。
そしてお前らにこの方面の感度が皆無なのは、お前らがコードを書いてないからだとも思う。

まあこれはいい。それで、
> まだ作業中で整理していないブランチもメインリポジトリで共有する
で運用するとして、その先はどうするんだ?
整理したらブランチ消すのか?なら手間が増えてるだけだろ。
svnのブランチ、「ディレクトリがブランチになります!!!」と言い切るのはどうなのよ?とも思うが、
実際、svnなら中途半端なコードを各ブランチに上げられても他の人は全く手間は増えないよ。
のろま君が勝手にコピーしてろで終わりだ。
gitの場合は、のろま君をフォローする為に中央リポジトリが毎日更新されてた場合、
(大した手間ではないが)pushする前にまず中央リポジトリと同期しなければならなくなり、
のろま君の為に全員に手間が増えてる。
これは、分散型のgitで集中管理を行おうとしたから発生したオーバーヘッドであり、
集中型のsvnだったら発生しなかった手間だ。
だから当たり前だが、集中型の開発管理を行うのなら集中型のリポジトリの方が適切だということ。
そして大半のプロプライエタリは集中型の開発なので、ゲーム会社が積極的にgitに移行する理由がない。
(というか連中はここら辺のgitの問題を分かってるから移行してないと思うんだよ。
お前らみたいにgitを理解出来ないから移行出来ないのだ!とかいう、
「上から目線ガー」とかうるさい割には心の中では心底他人を馬鹿にしてるゆとりマインドでは理解不能かもしれんが)
svn 使ったことないのに、知ってる風を装って語るので嘘杉て笑いが止まらない。
push する前に同期が必要なのが git
commit する前に同期が必要なのが svn
理解できるかな? 無理だろうな。
817
(1): デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 23:38:08.78 ID:Af/nXbF+0(9/10) AAS
>>816
816(1): デフォルトの名無しさん (ワッチョイ abe4-Xr9l) [sage] 2023/08/19(土) 23:21:47.54 ID:vl4t9mIK0(6/7) AAS
>>814
いやgitはpushする前に同期は必須ではない
同期が必要な場合と必要でない場合を理解できて一人前
ごめん。何を言ってるのか分からない。まさか push -f しろと主張してるの?
819: デフォルトの名無しさん (ワッチョイ 2bbb-8Zil) [sage] 2023/08/19(土) 23:51:47.78 ID:Af/nXbF+0(10/10) AAS
>>818
818(1): デフォルトの名無しさん (ワッチョイ abe4-Xr9l) [sage] 2023/08/19(土) 23:43:08.38 ID:vl4t9mIK0(7/7) AAS
>>817
オレが多分話の流れを読んで無いだけだと思うけど、push前に同期が必須かと問われたら
、同期が必須なのは他人がpushする可能性があるブランチだけと答える
なら単に用語の問題だな
git の push はブランチ単位での同期を要求する。push するブランチの同期が取れてるなら当然それ以上同期コマンドを実行する必要はない。
svn の commit はチェックアウトした範囲全体の同期を要求する。リポジトリ全体をチェックアウトしたなら全体の同期が必要。

まあどっちもとりあえずやってみて、失敗したら同期コマンド打てば良いだけだけどな
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.041s