[過去ログ] Git 18 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
710:  (ワッチョイ 497b-vCJ4) 2022/10/31(月)21:09 ID:J+3pjzxx0(17/22) AAS
 Webの連中は馬鹿なのも事実だけど、馬鹿でも上手く行くように色々上手く出来てるのも事実なんだよ。 
 Cの連中は一度Webをやってみると凄く勉強になると思うよ。俺もそうだったし。 
 ただしWebはかなり糞なのも事実だが。 
711(1):  (ワッチョイ d9e4-Xmag) 2022/10/31(月)21:15 ID:GzQExg5g0(5/10) AAS
 >>709 
 マージやリベースでやってる差分抽出は最終段のI/Oじゃないし 
 C言語でシンプルに実装されてるgitをMSが作る馬鹿みたいに重いツールにしないでくれよ 
712(1):  (ワッチョイ d9e4-Xmag) 2022/10/31(月)21:34 ID:GzQExg5g0(6/10) AAS
 BitKeeperを元にGitを実装したリーナスはBitKeeper以前のVCSを糞みたいに言ってるんだよね 
 外部リンク[html]:ezoeryou.github.io 
 edとdiffを使ったようなVCSは眼中になかった 
713(1):  (ワッチョイ 497b-vCJ4) 2022/10/31(月)21:39 ID:J+3pjzxx0(18/22) AAS
 >>711 
 だから普通は、内部的に圧縮されたファイルへのアクセスは、 
 1. 単純にメモリ展開する 
 2. 何らかのプロキシオブジェクトでエミュレートする 
 のどちらかで、大概前者だしGitでもそうなってる。 
 だからここで速度低下とかは関係ない話だ。 
 (なお後者は/dev/zeroとか/dev/randomとかと言えば分かるだろう)
省7
714(1):  (ワッチョイ d9e4-Xmag) 2022/10/31(月)21:52 ID:GzQExg5g0(7/10) AAS
 >>713 
 内部的に圧縮されたファイル? 
 「ファイルツリーはdiffコマンドがそのまま解釈できるような形式でファイルシステム上に存在しない」 
 これを勘違いしたのかな? 
 ファイルじゃなくてファイルツリーね 
 gitのディレクトリーのツリー構造を保持する方法独特だからその各ファイルをdiff取ってもらうためにツリーをtraverseするインターフェースを提供する必要が有る 
 ファイル単位の差分抽出なんて複雑な処理でもないんだからそれをやってもらうためにそれよりはるかに複雑なインターフェースを設計するとか無駄以外の何物でもないな 
715(1):  (ワッチョイ 497b-vCJ4) 2022/10/31(月)21:54 ID:J+3pjzxx0(19/22) AAS
 >>712 
 ただそれはedとdiffが問題だったわけではないだろうし、 
 仮にそうだったとしても、正しくソフトウェアを構成していればすぐに交換可能で、全く問題にならないんだよ。 
 その辺がソフトウェア階層の意識がないなあと思うところだよ。 
 Cはそういう世界でもあるけどさ。 
  
 edとdiffで展開するのが駄目なら、他方式の cat-file 階層に交換してしまえば何とでもなるんだよ。 
 Gitの方式が優れていれば、他VCSがGitの末端階層のI/Oコードを取り込めば済むだけ。
省7
716(1):  (ワッチョイ 497b-vCJ4) 2022/10/31(月)22:11 ID:J+3pjzxx0(20/22) AAS
 >>714 
 ああ、ファイルと勘違いしていたのは事実だが、それでも意味は同じだよ。 
  
 > gitのディレクトリーのツリー構造を保持する方法独特だからその各ファイルをdiff取ってもらうためにツリーをtraverseするインターフェースを提供する必要が有る 
 勿論その通りだが、つまりこれはファイルシステムであって、その先に隠蔽出来るんだよ。 
 NTFSかext4かbitlockerを使ってるか圧縮DISKかをアプリは気にしないだろ。 
 それはOSがファイルシステムの違いを隠蔽してくれるから。これと同じ。 
 同様に、 cat-file で末端のファイルの形式の違いは隠蔽出来て、
省7
717(3):  (ワッチョイ d9e4-Xmag) 2022/10/31(月)22:17 ID:GzQExg5g0(8/10) AAS
 >>716 
 cat-fileは単にblobの中身を表示するコマンドってだけで、逆をやるblobを作るコマンドが用意されてるわけじゃない 
 つまりここでソフトウェア的に階層がきれいに分かれてるわけじゃない 
 ここを置き換えて自由な圧縮アルゴリズムを使えるようになっていたとしたら 
 Libgit2 みたいな別実装のライブラリが出現する余地もなかっただろう 
 ここは変にインターフェース階層なんて用意しなくて正解 
 gitはツールであるとともにフォーマットでもあるんだよ
省1
718:  (ブーイモ MMeb-wVCK) 2022/10/31(月)22:33 ID:DiR+92tnM(1) AAS
 そう、このクレーマーはGitのデータモデルやデータフォーマットとしての側面を見落としてる 
 確固とした優れたデータモデルを持つってのは立派なUNIX哲学の一つなんだけどねえ 
719:  (ワッチョイ 8bbb-VzUj) 2022/10/31(月)22:39 ID:h5Hfu9WR0(6/9) AAS
 >>715 
 いいから、お前に git は向いてないから消えろ。git は万人向けじゃない。 
 自分で納得がいくものを作ってそれを使え。 
 どうせ多人数がかかわるようなプロジェクトとかには縁がないだろから、一人で寂しく使ってろ。 
720(2):  (ワッチョイ 497b-vCJ4) 2022/10/31(月)22:41 ID:J+3pjzxx0(21/22) AAS
 >>717 
 > 逆をやるblobを作るコマンドが用意されてるわけじゃない 
 ではなくて、用意するんだよ。 
 そうすれば何でも簡単に出来るようになるだけ。 
 実際は内部的には持っててコマンドとして公開してないだけだから、実装は簡単だし。 
 まあ本当にソフトウェア階層の話が通じないので困るが、もう一度懲りずに繰り返してみる。 
  
 Cで言うと、printfの先はcrt.oに繋がってるだろ。
省10
721:  (ワッチョイ 8bbb-VzUj) 2022/10/31(月)22:45 ID:h5Hfu9WR0(7/9) AAS
 >>720 
 糞理論いいから、まずは作って見せろ。 
722(1):  (ワッチョイ d9e4-Xmag) 2022/10/31(月)22:50 ID:GzQExg5g0(9/10) AAS
 >>720 
 そんな入れ替え可能な階層分けが必要なら最初から全部C言語以外で作ればよかったんだよ 
 でもリーナスはC言語を選んでほぼunixシステムコールを直接叩く方式で実装した 
  
 hqなんかの方がお前の好みに近いだろうけど、hqは廃れてgit全盛となった 
 むかしはこのスレにもhq信者が盛んにチョッカイかけに来たもんだけど、いまは何してるんだろうな 
723:  (ワッチョイ 8bbb-VzUj) 2022/10/31(月)22:55 ID:h5Hfu9WR0(8/9) AAS
 もはや名前すらちゃんと覚えてもらえてない hg さん。 
724(2):  (ワッチョイ 497b-vCJ4) 2022/10/31(月)22:59 ID:J+3pjzxx0(22/22) AAS
 >>717 
 あーだからな、フレームワークを一度使ってみれば勉強になると思うよ。 
  
 フレームワークは型に嵌められるのだけど、 
 その型はそれなりの奴が一生懸命考えた型だから、それなりなんだよ。 
 なるほどこうすればファイルもネットワークもDBも全部同じコードでいけるのか、とか分かるよ。 
  
 ファイルシステム構造も、末端のファイル自体も、 
 上位には関係ないように隠蔽出来るし、難しいことではない。
省4
725:  (ワッチョイ 8bbb-VzUj) 2022/10/31(月)23:00 ID:h5Hfu9WR0(9/9) AAS
 >>724 
 いいからお前は自分で作れ git 使う必要はないぞ 
726(1):  (ワッチョイ d9e4-Xmag) 2022/10/31(月)23:25 ID:GzQExg5g0(10/10) AAS
 >>724 
 結局gitがどういう方式で実装されているかなんてことよりファイルフォーマットの方が重要ってことだ 
 だからgitの実装とファイルフォーマットを切り離すようなインターフェース階層は必要無いしだれも実装しない 
 必要無いものを実装すれば余計なメンテの手間もかかる 
727:  (ワッチョイ 531d-rkLt) 2022/10/31(月)23:25 ID:Sz6pT8cp0(1) AAS
 すごい勢いでスレ消費してるな… 
  
 >>676 
 1回のコミットで整理っていうのは、1つのコミットにまとめるってことかな? 
 それとも1回のコマンドで済ませたいってことかな(何度もcherry-pickしたくない)? 
  
 merge squashじゃあかんかね。 
 連続してない部分的なコミットをまとめるならrebase squashでもいいよ。 
 連続してないコミットなら、rebase -i使えばいいよ。いらないコミットはdropできるよ。
省1
728(1):  (ワッチョイ 497b-vCJ4) 2022/11/01(火)00:01 ID:Jzc3CN/20(1/8) AAS
 >>726 
 ファイルフォーマットというか、 
 Gitのキモはオブジェクトをハッシュでツリーにして管理すれば全て行けたって事だろ。 
  
 そして末端のファイルはblobだけど(既に言ったが)ディレクトリやJSONでもいいし、 
 中間のファイルフォーマットも実はどうでも良くて、 
 結局はメモリ上のオブジェクトツリーをどうやってファイルシステムにマッピングするかでしかないんだよ。 
 traverseさえ出来れば何も問題ないわけでさ。
省17
729(1):  (ワッチョイ d9e4-Xmag) 2022/11/01(火)00:33 ID:kz7RaJ2H0(1/5) AAS
 >>728 
 現状の.git/* の形式が十分にシンプル明解でこれが共通I/Fになっている 
 すでにこの共通I/Fに沿っていろいろな実装が存在している 
 結果これを変更するための内部的なI/F階層が必要とされていない 
 内部的な構造としてはそんなことよりSHA-1をSHA-256に変更することの方が重要で実験的実装が進んでいる 
 切り口が違うからお前の言うような階層をつくってもハッシュの形式の変更には対応できない 
 そんなくだらないことに割く労力は無い 
730:  (ワッチョイ a95f-Tk+f) 2022/11/01(火)00:33 ID:1wY/uhrP0(1) AAS
 長いからまとめたよ。 
 「俺は実装しないけど、俺以外の誰かが俺の推測に沿うように実装しておくべきなんだ。俺は実装しないけど。」 
731:  (ワッチョイ 8b8f-5UCg) 2022/11/01(火)01:23 ID:ju8ytuSJ0(1/2) AAS
 なんでgitの話でフレームワークの話が出て来んのかな 
732(1):  (ワッチョイ 7997-uk66) 2022/11/01(火)01:46 ID:Mxyz6tUC0(1/2) AAS
 無限の自由度の代わりに組み合わせ爆発が生じてエッジケースでバグが出まくり、というのは嫌だという設計思想なんじゃないかな 
 確かにWeb系でDIするのは当たり前だけど、RDBMSやビジネスロジック以外はトラブってもいいWeb系と違ってgitでトラブル続発したら困るし。 
 ファイルシステムみたいなものでは。 
733(1):  (ワッチョイ 7997-uk66) 2022/11/01(火)01:52 ID:Mxyz6tUC0(2/2) AAS
 あと大体git自体が膨大なLinuxカーネルのVCSとしてかなり高速に、確実に動作する必要があったという大前提があるだろう。 
 そこを無視して汎用的にはこっちの方がいいってのは違うんじゃないかな。 
 汎用的な用途としてのVCSが欲しいならばpost-gitを作るしかないと思うよ。 
734:  (ワッチョイ 8bbb-VzUj) 2022/11/01(火)02:08 ID:QdibabTL0(1/2) AAS
 そもそも汎用性がある方が良いというのから幻想 
 道具は利用目的にあっているかどうかが全て十徳ナイフありがたがるやつは素人 
735(1):  (ワッチョイ 497b-vCJ4) 2022/11/01(火)03:17 ID:Jzc3CN/20(2/8) AAS
 >>729 
 それも根本的に間違ってる。 
 ハッシュはハッシュでレイヤーを切るから、正しく構成されてるソフトウェアなら、 
 ハッシュを変更するのはハッシュ生成関数内だけで済むんだよ。 
  
 具体的には、全体は get_hash() を呼んでハッシュを受け取るようにしておいて、 
 その get_hash() 内でSHA-1かSHA-256かmd5かを変更するだけにするんだよ。 
 というかこんなの当たり前すぎてお前らが理解出来てないのにびびる。
省12
736:  (ワッチョイ 497b-vCJ4) 2022/11/01(火)03:19 ID:Jzc3CN/20(3/8) AAS
 >>732,733 
 これをDIと呼ぶのか?はさておき、DIでバグが増えるなんて事はないよ。 
 そして、get_hash()でのオーバーヘッドは関数呼び出し一回でしかなく、 
 それで致命的に遅くなるなんて事もないよ。 
 というか、GitのマージってI/Oバウンドだと思ってるが違うのか? 
737(1):  (ワッチョイ d9e4-Ojdt) 2022/11/01(火)03:55 ID:kz7RaJ2H0(2/5) AAS
 >>735 
 ただ単純にハッシュアルゴリズムをSHA-1からSHA-256に変更するわけじゃないぞ 
 既存のSHA-1リポジトリも全部(リベース状態にすることなしに)SHA-256で運用できるようにしたりするんだよ 
 gitの開発はリポジトリのフォーマットの継続性をとても重視してる 
738:  (ワッチョイ 497b-vCJ4) 2022/11/01(火)08:06 ID:Jzc3CN/20(4/8) AAS
 >>737 
 同じだよ。 
 正しく構成されてる場合は何種類混在しても全く問題ないし、簡単に変更可能だ。 
 つかマジでそれオブジェクト指向(OOP)の基本中の基本だから。 
  
 ただ、混在なら、Cで一般的に使われてるSIZEOFの#defineでは対応出来ないが、 
 Linusのコードなら、Cでは一般的に禁止されてる小文字マクロで 
 普通にそこら辺の関数もマクロだらけの可能性があり、(linuxカーネルコードがそう)
省5
739:  (ワッチョイ 497b-vCJ4) 2022/11/01(火)08:06 ID:Jzc3CN/20(5/8) AAS
 と書くと意味不明だが、この場合は要は貰ったポインタを一々投げ返して操作してもらう。 
 具体的には、 
  
 Hash* hp = get_hash(myObject); // myObjectからHashを生成して貰う、Hashの実体は何か知らない 
 Stream* sp = traverse(hp); // hashをtraverseに投げてstraem的な何かを示している末端のポインタを貰う、traverseはtraverse出来る何か、ファイルかDBかssh先のストレージか知らんが、とにかくtraverse出来る何かをtraverseして、末端のポインタを返す 
 GitObject* go = cat_file(sp); // cat_fileに末端のポインタを渡して、GitObjectを貰う 
  
 とする。これをOOP文法(Cにはないが)で一般的にはメソッドにして、 
  
 Hash* hp = get_hash(myObject); // 管理するのはhashのポインタのみ、中身は知らない
省14
740:  (ワッチョイ 497b-vCJ4) 2022/11/01(火)08:51 ID:Jzc3CN/20(6/8) AAS
 補足。 
  
 分からなければ「OOP 抽象化」でググって色々読んでみてくれ。 
 死ぬほどでてくるはず。マジで基本中の基本だから。 
 ハッシュを交換することに手こずるようなら、その『コード』は間違いなく糞だ。(Git自体が糞と言っているわけではない) 
 ただ、修正すればいいだけ、要は漏れなく上記のようにしてしまえばいいだけではあるが。 
  
 正しく構成すれば、Hash変更なんて簡単に出来るし、 
 そもそもそうなってないコードなんてOOPでは存在を許されてない。
省2
741(1):  (ワッチョイ d9e4-Xmag) 2022/11/01(火)09:16 ID:kz7RaJ2H0(3/5) AAS
 長々とご苦労さんだがお前SHA-256対応の意味が理解できてないよ 
742(1):  (ワッチョイ 497b-vCJ4) 2022/11/01(火)09:26 ID:Jzc3CN/20(7/8) AAS
 >>741 
 俺は以下記事の理解書いてる。 
 俺が書いた事の意味が分からないのは君の問題。 
 外部リンク:www.infoq.com 
 ただ、初めてOOPを示されていきなり意義を理解出来る奴はほぼ居ないのも事実。 
 でも、君は確実に老害扱いされてると思うよ。 
743:  (ワッチョイ f15f-iYvO) 2022/11/01(火)09:32 ID:WFTKMpG40(1) AAS
 なんだか知らんけど5chでうだうだ言ってて何になるの 
744(1):  (ワッチョイ d9e4-Xmag) 2022/11/01(火)09:36 ID:kz7RaJ2H0(4/5) AAS
 >>742 
 君はその記事の意味することを理解できてないね 
 コミットオブジェクトの構造とか役目を理解出来てないと難しいかもしれない 
745(2):  (ワッチョイ 497b-vCJ4) 2022/11/01(火)09:57 ID:Jzc3CN/20(8/8) AAS
 >>744 
 そう思いたいんだろうけど、残念ながらそうじゃない。 
  
 少なくとも君はソフトウェア階層やOOPの基本事項について全く理解出来てない。 
 だから今、老害と言われ続けるか、再び学び直して熟練者と言われるかの分水嶺にいるだけ。 
 俺は君に何も強制することは出来ないが。 
  
 確かに俺はGit初心者なので、記事の理解は間違ってるかもしれない。 
 でも、ハッシュの中身や長さが変わったり混在したところで、
省4
746:  (ワッチョイ 8b8f-5UCg) 2022/11/01(火)10:12 ID:ju8ytuSJ0(2/2) AAS
 > GITは、すべてのファイルオブジェクトとコミットの識別と整合性チェックをSHA-1に強く依存しています 
 こう書いてあるのになんで無視するんだろう 
747(1):  (ワッチョイ d9e4-Xmag) 2022/11/01(火)10:29 ID:kz7RaJ2H0(5/5) AAS
 >>745 
 数行で対応w 
 それが出来ないgithubは無能集団なんですねw 
 糞MSに買われちゃうぐらいだから仕方ないか 
748:  (オッペケ Src5-8VyY) 2022/11/01(火)12:34 ID:lDKItQe4r(1) AAS
 Git初心者に語らせると頓珍漢な文章が生まれるという好例 
749(1):  (ワッチョイ 8bbb-VzUj) 2022/11/01(火)12:39 ID:QdibabTL0(2/2) AAS
 >>745 
 お前日本語読めなさそうだな 
 ましてやリンク先にある英語とかかけらも理解できてないだろ 
 混在とかじゃないぞ。二つを同時につけて「安全」に相互変換するということだぞ 
 安全にすることが目的でSHA-256を使えば解決みたいな話じゃない 
 お前みたいなのが目的と手段を取り違えるタイプの典型 
 OOPとかアホなプログラマでも理解できる単純なことなわけないだろ
省3
750:  (ワッチョイ 699f-1Eu/) 2022/11/01(火)18:29 ID:/+vO/8+o0(1) AAS
 長文すげー 
751:  (ワッチョイ 497b-vCJ4) 2022/11/02(水)05:40 ID:n+gr/3CY0(1/2) AAS
 >>749 
 どうであれ同じだよ。 
  
 複数付けようが、何をどう組み合わせようが、 
 抽象化の向こうの実体については知らないし、取り扱うコードも存在してないから、 
 同じバイナリで動作するんだよ。それが抽象化と隠蔽で、これはOOPの基本中の基本。 
752:  (ワッチョイ 497b-vCJ4) 2022/11/02(水)05:41 ID:n+gr/3CY0(2/2) AAS
 んー、お前ら完全に化石だわ。若い奴からは確実に馬鹿にされてるよ。 
 というか、現在において有名OSSにこんな化石居住区が存在してたことにびっくりだわ。 
  
 >>747 
 数行ってのは誇張ではなく、実際にそんなもんなんだよ。 
 例えばMMDは3DVision対応に20-30行と言ってるが、 
 > そのため、樋口氏がMMDの3D Vision対応に要したのは、20~30行程度の簡単なコーディングのみだった。 
 > 外部リンク[html]:pc.watch.impress.co.jp
省19
753:  (ワッチョイ c114-Tk+f) 2022/11/02(水)06:01 ID:z+vraLDY0(1/2) AAS
 > これは特殊ケースではなく、こうなるように設計するんだよ。 
 > これに対してGitはマニュアル見てもそういう思想が全く見あたらず、「頑張ればいいよね」で終わってる。 
  
 それあなたの感想ですよね? 
 gitはソースコード1行程度で変更終わりですよ 
754:  (ワッチョイ c114-Tk+f) 2022/11/02(水)06:03 ID:z+vraLDY0(2/2) AAS
 > 実装で一番簡単な方法は、Gitをバックエンドに使ってシェルスクリプトでラップすることだよ。これらは既に言ったが。 
  
 シェルスクリプトは移植性低いって分かってる? 
 シェルスクリプトでラップしようものなら 
 Linuxでは動くがFreeBSDでは動かないってことが 
 しょっちゅう発生する 
  
 シェルスクリプトで頑張るものじゃない 
755(1):  (ワッチョイ d9e4-Xmag) 2022/11/02(水)07:01 ID:S2ENS6Jw0(1) AAS
 git の一部機能は git コマンドを使ったスクリプトで実装されていたんだけど、多くのユーザーの要望に応える形でそれらのC言語化進めてる 
756:  (JP 0H8d-8VyY) 2022/11/02(水)09:34 ID:33j+wJW8H(1) AAS
 シェルでラップw 
 USPから悪い影響でも受けたか? 
757:  (ワッチョイ 8bbb-VzUj) 2022/11/02(水)10:35 ID:sFE/M4aa0(1) AAS
 OOPなんて初心者プログラマ訓練ギブスってことを理解できなくてアホ理論展開しているやつがいてw 
758(1):  (ワッチョイ fb66-Q7eZ) 2022/11/02(水)14:42 ID:LlnSL/r70(1) AAS
 OOPなんか、そん辺のサンデープログラマでもかなり深い所までメリットデメリット含め浸透してるがな。 
 関数指向やクロージャがある言語も同様で 
 もはや当たり前のようにハイブリッドになってて一部の原理主義者以外いい塩梅で使ってるから話題にはならん。 
759:  (オッペケ Src5-5UCg) 2022/11/02(水)15:33 ID:4T0OIw/dr(1) AAS
 OOPそれほど語るなら、お前の大好きなシェルスクリプトはみんなOOP意識して作られてるのかって感じだな 
760:  (ブーイモ MMdd-ntN1) 2022/11/02(水)18:08 ID:mw55lzgRM(1) AAS
 リーナスを中心としたOSSコミュニティの起源にタネンバウムとのモノリシックカーネル・マイクロカーネル論争があることを知らないのかな? 
 結果として無駄な抽象階層を積み重ねることの無意味さをLinuxカーネルの成功が証明してしまった 
 もちろんLinuxカーネルもファイルシステムとか必要なとこは抽象化されてるけどね 
761:  (ガックシ 06dd-uk66) 2022/11/02(水)18:41 ID:1AIcQZnX6(1) AAS
 今どきの若い奴(というか最新の風潮)ってなんでもかんでもオブジェクト指向を徹底するって感じじゃないと思うけどなあ 
 それこそオブジェクト指向主義みたいなのが滅茶苦茶強かったのって20年前ぐらいじゃない? 
 WindowsもNTでマイクロカーネルにしたけどオーバーヘッドデカすぎて一部はカーネル空間に戻したりしたでしょ。 
 SIerの階層が深い開発なんかだとオブジェクト指向を徹底しないと事故が起こりそうだけど、そういうとこしか知らない人間なのか? 
762:  (オッペケ Src5-8VyY) 2022/11/02(水)22:26 ID:KtYxSAYnr(1) AAS
 何でもかんでもシェルでやろうとするやつは病気 
 名前を呼んではいけないあの開発手法とか推してそう 
763(2):  (ワッチョイ 497b-vCJ4) 2022/11/03(木)05:47 ID:AHw2USmo0(1/17) AAS
 >>755 
 それはどのプラットフォームで問題になったの? 
 賢い選択とは思えないけどね。 
 具体的なデメリットは既に666で挙げたとおり。 
  
 俺はシェルの互換性問題なんて有ったとは思えないけど、 
 (昔からsh《bsh》は互換性は高かったし、今はその後継のbashで統一されてる。 
 ああ確かにcsh/tcsh/ksh/zshはゴミだったし死滅したよ)
省6
764:  (ワッチョイ 497b-vCJ4) 2022/11/03(木)05:49 ID:AHw2USmo0(2/17) AAS
 >>758 
 その通りだ。だからアマチュアの樋口Pも正しく対応出来てた。 
 だからこそ、このスレのこれまでのやりとりに驚いている。 
 今時初心者でも、他言語スレでもあり得ない流れだ。 
で、パッチ出てきたけど、あれでは駄目だね。 
 彼等はC流のメモリ管理の方法を知らず、Gitは完全に糞コードで出来てる。 
 あれでは他にもメモリリークだらけだよ。
省7
765:  (ワッチョイ 497b-vCJ4) 2022/11/03(木)06:07 ID:AHw2USmo0(3/17) AAS
 ただ見る限りGit界隈は密結合主義のようだ。 
 つまり、Gitと知識的に密結合した、Gitに詳しい奴だけがGitを使うべきであり、 
 tutorial1が基本コマンドなら普通はtutorial2は応用コマンドのところ、 
 なんと内部データ構造の紹介になってるし、 
 (ただこれは俺には極めて有効に作用したが、普通はブーイングの嵐だろう) 
766:  (ワッチョイ 497b-vCJ4) 2022/11/03(木)06:07 ID:AHw2USmo0(4/17) AAS
 ソースコードも密結合、これは馬鹿除けだ!と言い放つ。 
 糞コードでもパッチの手数で勝負だ!カリスマLinusならモグラ叩き志願者は無限に募れる! 
 とまあ、他の誰も出来ないアプローチだね。 
 ただまあ、ソースコードを清潔に保つ目的は長期的メンテの為であり、 
 それは実際出来てるしいいだろ、と言われれば、はーそうですねー(棒)だが。 
767:  (ワッチョイ 497b-vCJ4) 2022/11/03(木)06:07 ID:AHw2USmo0(5/17) AAS
 これ見てたら、buggyな糞コードでもとりあえず動けば受け入れてどんどん改訂し、バグもパッチの手数で勝負するのと、 
 普通のプロジェクトがやってる、レビューして駄目なコードは最初からrejectするのと、 
 (つまり手間をかけてもrejectされる可能性があるからコードを投げるのを躊躇される) 
 どっちが良いのだろう?とは考えさせられるよ。 
 リソースが無限にあるOSSでは、前者の方がいいのだろうか? 
 LinusはBillJoyに対して「オープンソースを理解してない」と思ったらしいが、こういう事なのだろうか? 
 (この発言はLinus著作本にあるらしいが、俺は読めてない)
省7
768(1):  (ワッチョイ d9e4-Ojdt) 2022/11/03(木)10:41 ID:NhDXzDSd0(1/3) AAS
 それだけ文句あるなら本家MLで言うか自分で作り直してみろよ軍師様 
 これだけ大口叩いておいて英語のMLでコミュニケーションとれないとかだったら笑うが 
 Git は世界中のプログラマが使ってる最重要プロジェクトで、これが改良されるとなれば世界中から絶賛される 
769:  (ワッチョイ 699f-1Eu/) 2022/11/03(木)10:46 ID:odT0DHDr0(1) AAS
 まだやってのか 
 暇そうだな 
770(1):  (ワッチョイ 497b-vCJ4) 2022/11/03(木)13:22 ID:AHw2USmo0(6/17) AAS
 >>768 
 それは無理だね。 
 仮に時間が十分にあったとしても、俺が改善出来るのはソースコードであって、アプリではない。 
 アプリの改善には良い仕様にする事が最も重要で、実装は実は大した問題ではない。 
 (使う分には十分に動けばなんでも良くて、それが糞コードで出来てたから何?でしかない) 
  
 GitはLinus本人が当時のVCSの問題点を全て把握してたからいい仕様になった。 
 俺はそうじゃない。今の俺がやったら俺にとって都合がいいだけで、他にとっては糞な物にしかならない。
省17
771(1):  (ワッチョイ 7997-uk66) 2022/11/03(木)13:30 ID:9oLRzF140(1/4) AAS
 index stageなかったら複数ファイルの変更を一度にcommitできないじゃん。コミット粒度の問題から、全部の変更をcommitしたいわけでもないし。 
 どのcommitを取ってきてもちゃんと動く状態にするのが普通だからどう考えてもいるでしょ。 
772:  (ブーイモ MMeb-ntN1) 2022/11/03(木)13:52 ID:/4IN/B1bM(1) AAS
 indexの意味がわかってない馬鹿が全然関係無いファイルをコミットしてリポジトリをブチ壊す 
773(1):  (ワッチョイ 497b-vCJ4) 2022/11/03(木)14:35 ID:AHw2USmo0(7/17) AAS
 >>771 
 > index stageなかったら複数ファイルの変更を一度にcommitできないじゃん。 
 いや普通に出来るよ。曖昧だったが、俺は git add -u; git commit -m "message"; で使ってる。 
以降はワークフローの話だからどちらが正しいとかいう事ではないが、 
 > コミット粒度の問題から、全部の変更をcommitしたいわけでもないし。  
 これは若干邪道というか基本的に全部commitするものだろうし、commitしてから前に進めばいいだけで、 
  
 > どのcommitを取ってきてもちゃんと動く状態にするのが普通だから
省7
774:  (ワッチョイ 8b8f-5UCg) 2022/11/03(木)14:40 ID:5PP47Osh0(1/3) AAS
 git分からない思想も理解できないならSVN使えば? 
775(1):  (ワッチョイ 7997-uk66) 2022/11/03(木)14:46 ID:9oLRzF140(2/4) AAS
 >>773 
 そりゃgitの設計思想で想定されたコミットの仕方をしていないからindex stageがいらないと感じるだけでしょ。 
 大多数は設計思想通りに使っているので、index stageが必要だと理解していると思うよ。 
 だから、「どう使うために設計された」かと聞かれれば、gitの思想通りにコミット粒度を適度に保つためだとしか言いようがない。 
 「俺は違うから俺はいらない」はそれはそうだろうが、だから何?って話になる。 
776:  (ブーイモ MMeb-ntN1) 2022/11/03(木)15:04 ID:jVDh6EB5M(1) AAS
 適当なタイミングで時系列に修正を記録していくものだと思ってる阿保には理解できないVCS 
777(1):  (ワッチョイ 497b-vCJ4) 2022/11/03(木)15:05 ID:AHw2USmo0(8/17) AAS
 >>775 
 git add -u を複数回して粒度を上げて動くものだけcommitしてもいいのだけど、 
 俺の場合は10回に1回程度は2-3回前の変更とdiff取った方が見やすいことがあって、 
 その場合にhash控えておくのが面倒だし、gcされてたらさらに面倒だし、gc切るのもまた邪道だろうしで、 
 動かないのもcommitしてfeatureの途中は動きませんと割り切るのが一番ましかと思ってる。 
  
 まあでもありがとう。 
 粒度調整の為ならこちらの予想の範囲内ではあった。 
778(1):  (ワッチョイ a95f-Tk+f) 2022/11/03(木)15:26 ID:O+O1uzzM0(1) AAS
 >>777 
 > その場合にhash控えておくのが面倒だし、gcされてたらさらに面倒だし、gc切るのもまた邪道だろうしで、 
 N個前との diff は git diff HEAD~N でハッシュを控える必要もないし gc のくだりは何のこと言ってるのかわからない。 
  
 > 動かないのもcommitしてfeatureの途中は動きませんと割り切るのが一番ましかと思ってる。 
 ローカルブランチなら別に構わないけど、そのノリで作られたブランチをそのままレビューするのは効率悪い。 
 なのでマージ前のブランチをレビュー対象とする開発では push の際に整理することになるから、 
 都度整理の際にインデックスはとても有用。
省1
779(1):  (ワッチョイ 8bbb-VzUj) 2022/11/03(木)15:53 ID:HnXRQ5rf0(1) AAS
 index の重要性が分からないやつが git 語ってて草。 
 素人向けに説明すると git の役目は他人に読んでもらうやすい分かり易いパッチを仕上げること。 
 個人で作る分にはそれほど関係ないが共同作業するには他人への分かり易さ、見た目は最重要といっていい。 
 料理に例えるならフライパンやまな板のまま出すんじゃなくて、皿に盛って食べ易くしてから出すのが基本。 
 ワークツリーがフライパンで、インデックスが皿。フライパンからでも直接食えるけど、綺麗に皿に盛って、そこで丁寧にチェックしてから提供すれば他人の作業効率が上がる。 
780:  (ワッチョイ 497b-vCJ4) 2022/11/03(木)16:18 ID:AHw2USmo0(9/17) AAS
 >>778 
 > N個前との diff は git diff HEAD~N でハッシュを控える必要もないし gc のくだりは何のこと言ってるのかわからない。 
 (tutorial2を読んだだけの理解だから間違ってるかもしれんが、) 
 669で言ったように、Gitが分かりにくいのは業務プロセス名がコマンドに付いてるからだよ。 
 実際には、git add でスナップショットを取ってて、(←これが直感的に認識出来ない) 
 git commit でツリーの頭にそれを付け加えてるだけ。 
 だからaddしてないと付け加えるべきスナップショットがないからコケる。
省19
781(1):  (ワッチョイ 497b-vCJ4) 2022/11/03(木)16:20 ID:AHw2USmo0(10/17) AAS
 >>779 
 いやレビュー対象はcommit済みで、index上ではないだろ。 
782:  (ワッチョイ 8b8f-5UCg) 2022/11/03(木)16:22 ID:5PP47Osh0(2/3) AAS
 うんうんわかった 
 大人しくSVN使え 
 その方が君には向いている 
783:  (ワッチョイ d9e4-Ojdt) 2022/11/03(木)17:18 ID:NhDXzDSd0(2/3) AAS
 >>781 
 779はindex上でレビューするんじゃなくて、indexにいれた状態にしてからdiff --cachedでcommit前の確認をするってことじゃない?自分もそれやるよ 
784(2):  (ワッチョイ 8b14-Tk+f) 2022/11/03(木)17:50 ID:e1pojM/n0(1/8) AAS
 >>763 
 > (昔からsh《bsh》は互換性は高かったし、今はその後継のbashで統一されてる。 
 > ああ確かにcsh/tcsh/ksh/zshはゴミだったし死滅したよ) 
  
 FreeBSDにはbash入っとらんぞ 
785:  (ワッチョイ 8b14-Tk+f) 2022/11/03(木)17:52 ID:e1pojM/n0(2/8) AAS
 >>763 
 > 既にあるbash(多分C)ソースをコンパイルしただけのものを同梱し、 
 > gsh(=gitsh)だ!これを使え!と強弁すれば済んだろ。 
 bashだけじゃ足らんだろ 
 GNUコマンドも全部入れなきゃな! 
786:  (ワッチョイ 8b14-Tk+f) 2022/11/03(木)17:53 ID:e1pojM/n0(3/8) AAS
 >>770 
 > 仮に時間が十分にあったとしても、俺が改善出来るのはソースコードであって、アプリではない。 
 だからソースコードを改善しろってw 
787(1):  (ブーイモ MMeb-ntN1) 2022/11/03(木)18:10 ID:3fLLADP3M(1) AAS
 >>784 
 macもbsahやめたんだよね 
 GPLから逃げるために 
788(3):  (ワッチョイ 497b-vCJ4) 2022/11/03(木)19:01 ID:AHw2USmo0(11/17) AAS
 あと実は、masterの意義も分からないのだが。俺の場合は、 
  
 master: 今現在Web上で公開しているもの 
 develop: 今現在ローカル上でテストしているもの 
 feature: 今現在変更中のソースコード 
  
 と3つポインタが必要なのは分かる。 
 しかし、masterは常にdevelopとfast-forwardマージするなら、developにタグ打てば済む。 
 途中からのbranchも可能だし、hotfixするにしても問題ない。
省6
789(1):  (ワッチョイ 497b-vCJ4) 2022/11/03(木)19:03 ID:AHw2USmo0(12/17) AAS
 >>784 
 >>787 
 政治的案件をOSS側がフォローする必要ないと思うが… 
790(1):  (ワッチョイ 8b14-Tk+f) 2022/11/03(木)20:29 ID:e1pojM/n0(4/8) AAS
 >>789 
 なに政治的案件の話にすり替えようとしてるんだよ 
 gitは環境依存が激しいシェルスクリプトに依存しないように 
 C言語で書いてるって話をしていただろ 
上下前次1-新書関写板覧索設栞歴
あと 212 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.036s