ソースコード管理を行う分散型バージョン管理システム、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
Git 18
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9ce4-E6ke)
2022/04/23(土) 03:25:45.27ID:HOOXt/T30612デフォルトの名無しさん (ワッチョイ deb0-kEV8)
2022/10/08(土) 00:36:23.18ID:5sXOif570 以前作ったリポジトリのmasterブランチの名前をmainに変えようとしてます 以下の手順であってますか?
リモートリポジトリは自分がSSHでログイン出来るノードにあってベアリポジトリにも入れる状態です
1. (ローカルで) git clone <リモートリポジトリ> <ローカルリポジトリ> # リポジトリを取得
2. (ローカルリポジトリで) git branch --move master main && git push origin main # ローカルでmasterをmainにリネームしてプッシュ
3. (リモートのベアリポジトリで) git symbolic-ref HEAD refs/heads/main # HEADをmainに設定
4. (ローカルリポジトリで) git push origin :master # リモートリポジトリのmasterを削除
おかしいようであれば、新しいリポジトリを作って2.でそっちにpushして古いリポジトリは退避、以後は新しいのを使うことも考えてますがどうでしょうか
リモートリポジトリは自分がSSHでログイン出来るノードにあってベアリポジトリにも入れる状態です
1. (ローカルで) git clone <リモートリポジトリ> <ローカルリポジトリ> # リポジトリを取得
2. (ローカルリポジトリで) git branch --move master main && git push origin main # ローカルでmasterをmainにリネームしてプッシュ
3. (リモートのベアリポジトリで) git symbolic-ref HEAD refs/heads/main # HEADをmainに設定
4. (ローカルリポジトリで) git push origin :master # リモートリポジトリのmasterを削除
おかしいようであれば、新しいリポジトリを作って2.でそっちにpushして古いリポジトリは退避、以後は新しいのを使うことも考えてますがどうでしょうか
613デフォルトの名無しさん (ワッチョイ 5ebb-v24v)
2022/10/08(土) 05:07:17.54ID:qNYwj5bN0614デフォルトの名無しさん (ドコグロ MM02-2v+W)
2022/10/08(土) 07:49:17.82ID:fwLI4Y/XM どうせ安全じゃないだろw
>fatal: detected dubious ownership in repository at
こんなものつけるなよカス
>fatal: detected dubious ownership in repository at
こんなものつけるなよカス
615デフォルトの名無しさん (ワッチョイ de14-kHT+)
2022/10/08(土) 09:15:42.49ID:vxPAcYo70616デフォルトの名無しさん (テテンテンテン MM0a-52T8)
2022/10/08(土) 13:26:00.09ID:HbWzH6SVM617デフォルトの名無しさん (ワッチョイ aa1d-6SQA)
2022/10/08(土) 14:00:29.88ID:x9F/jCO70 >>612set-headサブコマンドが使えるみたい
618デフォルトの名無しさん (ワッチョイ de14-kHT+)
2022/10/08(土) 14:11:03.99ID:vxPAcYo70 >>616
愚か者め。シェルスクリプトは何でも出来る。CGIも作れた。
この間はUNIX哲学に基づいてリアルタイムカーネルなしに
シェルスクリプトだけでリアルタイム処理を実現してみせたわ
https://www.sea.jp/ss2021/download/11-SS2021.pdf
愚か者め。シェルスクリプトは何でも出来る。CGIも作れた。
この間はUNIX哲学に基づいてリアルタイムカーネルなしに
シェルスクリプトだけでリアルタイム処理を実現してみせたわ
https://www.sea.jp/ss2021/download/11-SS2021.pdf
619デフォルトの名無しさん (ワッチョイ de14-kHT+)
2022/10/08(土) 14:23:26.42ID:vxPAcYo70 >>616
gitのような目的を見失ったバージョン管理ソフトを使っているからだ
バージョン管理ソフトはライブラリよりも長く行き続けなければならんものだが
リポジトリでわけのわからんバイナリ形式を使っておるから
バージョン管理ソフトが滅んだら復元は不可能になる。一体何を考えておるのか。
「データはテキスト形式で保存しろ」とはUNIX哲学でも言われている。
gitのような目的を見失ったバージョン管理ソフトを使っているからだ
バージョン管理ソフトはライブラリよりも長く行き続けなければならんものだが
リポジトリでわけのわからんバイナリ形式を使っておるから
バージョン管理ソフトが滅んだら復元は不可能になる。一体何を考えておるのか。
「データはテキスト形式で保存しろ」とはUNIX哲学でも言われている。
620デフォルトの名無しさん (ワッチョイ deb0-zauZ)
2022/10/08(土) 14:47:58.03ID:TKlSmRLn0 容れ物が古くなったら新しい容れ物に中身を移すだけ。
621デフォルトの名無しさん (ワッチョイ de14-kHT+)
2022/10/08(土) 14:51:46.02ID:vxPAcYo70 >>620
よくもまあ懲りもせずにといったところだな
そうやって古くなったソフトを捨て新しいものに入れ替え
せっかく覚えた知識は無駄になり移行作業で苦しむ
POSIX原理主義なら一度覚えた知識は一生使うことが出来る
新しいことを覚える必要はない
よくもまあ懲りもせずにといったところだな
そうやって古くなったソフトを捨て新しいものに入れ替え
せっかく覚えた知識は無駄になり移行作業で苦しむ
POSIX原理主義なら一度覚えた知識は一生使うことが出来る
新しいことを覚える必要はない
622デフォルトの名無しさん (ワッチョイ deb0-zauZ)
2022/10/08(土) 15:05:26.99ID:TKlSmRLn0 啓蒙したいんだろうけど
>新しいことを覚える必要はない
これ読んで「そんなメリットがあるなら俺もPOSIX原理主義に入信しよう」と考えるエンジニアがいるもんかね。
>新しいことを覚える必要はない
これ読んで「そんなメリットがあるなら俺もPOSIX原理主義に入信しよう」と考えるエンジニアがいるもんかね。
623デフォルトの名無しさん (ワッチョイ deb0-kEV8)
2022/10/08(土) 15:30:37.98ID:5sXOif570 >>617
git remote set-headだとリモートトラッキングブランチのHEADが変わっただけでベアリポジトリ側のHEADは変わらず、
HEADが指してるブランチ(master)も削除操作が利かないままだったんですが、もうちょっと教えてもらえませんか
git remote set-headだとリモートトラッキングブランチのHEADが変わっただけでベアリポジトリ側のHEADは変わらず、
HEADが指してるブランチ(master)も削除操作が利かないままだったんですが、もうちょっと教えてもらえませんか
624デフォルトの名無しさん (ワッチョイ 5ebb-v24v)
2022/10/08(土) 17:26:15.60ID:qNYwj5bN0 >>621
いいから、お前は黙ってシェルスクリプトでOSカーネルでも書いとけ。完成するまで戻って来るな。
いいから、お前は黙ってシェルスクリプトでOSカーネルでも書いとけ。完成するまで戻って来るな。
625デフォルトの名無しさん (ワッチョイ de8f-/WJo)
2022/10/08(土) 17:39:03.44ID:88/OpuEG0 啓蒙したいんじゃなくて単に荒らしたいだけだから
だいたいオープンソースなのにソフトウェアが滅ぶとか意味がわからん
だいたいオープンソースなのにソフトウェアが滅ぶとか意味がわからん
626デフォルトの名無しさん (ワッチョイ af90-lDXs)
2022/10/10(月) 11:28:58.21ID:JuIf0a+H0 シェルスクリプトのヤツは釣りだろ?
マジでいってんだったら頭おかしいだろw
(基地外を釣るエサ投下)
マジでいってんだったら頭おかしいだろw
(基地外を釣るエサ投下)
627デフォルトの名無しさん (ワッチョイ de14-kHT+)
2022/10/10(月) 17:13:47.79ID:+gDGPUis0 https://megalodon.jp/2017-0110-1117-05/qiita.com/richmikan@github/items/7c2f844169db9a83c5ae
私の場合は「POSIX原理主義者」という名の人格者として名を知られるようになってきたが、「原理主義」を名乗るだけあって、
私の場合は「POSIX原理主義者」という名の人格者として名を知られるようになってきたが、「原理主義」を名乗るだけあって、
628デフォルトの名無しさん (ワッチョイ 5ebb-v24v)
2022/10/10(月) 17:25:23.67ID:PTVZRYxu0 >>627
いいからお前はシェルスクリプトでカーネル書く作業に戻れ。シェルスクリプトがあれば何でもできるんだろ。
いいからお前はシェルスクリプトでカーネル書く作業に戻れ。シェルスクリプトがあれば何でもできるんだろ。
629デフォルトの名無しさん (ワッチョイ de14-kHT+)
2022/10/10(月) 17:30:56.62ID:+gDGPUis0 >>628
勘違いしてるぞ。俺は人格者(笑)って書き込んだだけだぞ
勘違いしてるぞ。俺は人格者(笑)って書き込んだだけだぞ
630デフォルトの名無しさん (ワッチョイ fb10-7iBv)
2022/10/16(日) 04:54:37.57ID:kNlIrq3k0 Shelling at Russian power plant leaves Belgorod without electricity
https://www.youtube.com/watch?v=n32nblVVz1g
https://www.youtube.com/watch?v=n32nblVVz1g
631デフォルトの名無しさん (ワッチョイ fb10-7iBv)
2022/10/16(日) 04:55:55.59ID:kNlIrq3k0 間違えた、すまん
632デフォルトの名無しさん (アウアウウー Sacf-0j67)
2022/10/19(水) 13:19:13.07ID:1sfAoeRGa Git v2.38.1
633デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2022/10/27(木) 07:22:57.17ID:TnOoNEjS0 Git初心者でGit練習中の者だが、質問いい?
関数の履歴を見るコマンド
Git log -L '/function myfunction/',/},/:myFile
があり得ないほどメモリを食うのだが、これって今のところ仕様?
それとも俺の使い方がまずい?
2MB程度のファイルを2800回程度コミットしたリポジトリがあって、git gc して12MBになってる。
これに対して上記コマンドが9.4GBメモリを食う。
おかげでMINGW32bit環境では全然駄目で、MINGW64bit環境だと上記の通り。
Linux64bit環境でもスワップを増やさないとコケたので4GB以上は食ってるはず。
(windowsでの結果をふまえ、スワップを9GBに増やした環境では動作した)
Gitのバージョンは、Windowsは最新(2.38.1)で、Unixは2.20.1。
なお出力された内容には不満はない。
ただ、10-20行程度の関数が15個履歴として表示されるだけで、このメモリはあり得ない。
シェルスクリプトでも同じ物は得られるが、1GBすら行かないはず。
最初から最後までfreeしないでやってるとしか思えないが、何かそうなる理由ある?
あと、オプション等で回避する方法があれば教えて。
関数の履歴を見るコマンド
Git log -L '/function myfunction/',/},/:myFile
があり得ないほどメモリを食うのだが、これって今のところ仕様?
それとも俺の使い方がまずい?
2MB程度のファイルを2800回程度コミットしたリポジトリがあって、git gc して12MBになってる。
これに対して上記コマンドが9.4GBメモリを食う。
おかげでMINGW32bit環境では全然駄目で、MINGW64bit環境だと上記の通り。
Linux64bit環境でもスワップを増やさないとコケたので4GB以上は食ってるはず。
(windowsでの結果をふまえ、スワップを9GBに増やした環境では動作した)
Gitのバージョンは、Windowsは最新(2.38.1)で、Unixは2.20.1。
なお出力された内容には不満はない。
ただ、10-20行程度の関数が15個履歴として表示されるだけで、このメモリはあり得ない。
シェルスクリプトでも同じ物は得られるが、1GBすら行かないはず。
最初から最後までfreeしないでやってるとしか思えないが、何かそうなる理由ある?
あと、オプション等で回避する方法があれば教えて。
634デフォルトの名無しさん (ワッチョイ e99f-fARP)
2022/10/28(金) 00:23:09.45ID:yz6FOYrM0 LooseCompressionの全展開用の領域 2MB*2800=5.6GB
git logは内部でlessにパイプでデータを渡してるから
パイプバッファも含めて約2倍だろうか
Packしなけりゃ少しはマシかもしれない(未確認)
git logは内部でlessにパイプでデータを渡してるから
パイプバッファも含めて約2倍だろうか
Packしなけりゃ少しはマシかもしれない(未確認)
635デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2022/10/28(金) 07:15:31.79ID:HlXde3ci0 >Pack
git gcのことか?
なら実は当初はしてなくて1.2GBあったが、その時からコケてた。少なくとも2GBは食ってる。
その後gc出来ると知り、やってみたが、実際は自動で何回かやってるようだし、多分大勢は変わりない。
(実は全部新たにコミットし直すのも試してる)
なお愚直にgit show -> 切り出し -> diff を繰り返すだけのスクリプトを作って試してみた。
メモリは普段の使用と変わりなかった。
ただ問題は時間で、12分程度かかる。これでは気軽には使えない。
MINGW64だと2分程度で済む。
時間がかかるのは一々ファイルにしてるから?だから、
/dev/fd/3等で全部でパイプに出来れば短縮出来るかも?、というところ。
(システムキャッシュに完全に載るサイズだから関係ないかも?だし、
そもそも2回ずつ使うのでパイプにフィットしないが)
ただ現在でも初期画面は数分で出るし、出なければ大昔のコミットなのでどうせ問題なく、
実際の運用としては及第点ではある。でも速ければ速いに越した事はない。
Gitはおそらく速度重視なのだろう。
自動増加スワップのMINGW64環境なら現実的には大した問題にはならない。
ただ、全部メモリ上に展開する意味もメリットもないはずなので、
途中で一回もfreeしてないであろうこのコードは、コードとしては大問題だとは思うよ。
(ジョークで言われてる、Javaしか知らない奴が書いた、freeが一つもないコード、になってる)
git gcのことか?
なら実は当初はしてなくて1.2GBあったが、その時からコケてた。少なくとも2GBは食ってる。
その後gc出来ると知り、やってみたが、実際は自動で何回かやってるようだし、多分大勢は変わりない。
(実は全部新たにコミットし直すのも試してる)
なお愚直にgit show -> 切り出し -> diff を繰り返すだけのスクリプトを作って試してみた。
メモリは普段の使用と変わりなかった。
ただ問題は時間で、12分程度かかる。これでは気軽には使えない。
MINGW64だと2分程度で済む。
時間がかかるのは一々ファイルにしてるから?だから、
/dev/fd/3等で全部でパイプに出来れば短縮出来るかも?、というところ。
(システムキャッシュに完全に載るサイズだから関係ないかも?だし、
そもそも2回ずつ使うのでパイプにフィットしないが)
ただ現在でも初期画面は数分で出るし、出なければ大昔のコミットなのでどうせ問題なく、
実際の運用としては及第点ではある。でも速ければ速いに越した事はない。
Gitはおそらく速度重視なのだろう。
自動増加スワップのMINGW64環境なら現実的には大した問題にはならない。
ただ、全部メモリ上に展開する意味もメリットもないはずなので、
途中で一回もfreeしてないであろうこのコードは、コードとしては大問題だとは思うよ。
(ジョークで言われてる、Javaしか知らない奴が書いた、freeが一つもないコード、になってる)
636デフォルトの名無しさん (ワッチョイ 6ebb-eWiu)
2022/10/28(金) 07:18:13.37ID:RikIMzkC0 報告してあげるといい事案だと感じる
637デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/29(土) 06:39:27.49ID:J4pkDf7Q0 パイプへの変更は厳しいので、一時ファイルをRAMDISK上に配置してみたが所要時間は変化無し。
よってシステムキャッシュは効いてて、パイプにしても高速化予算はほぼ無いと分かった。
diffを切ったら8分、さらに切り出しを切っても8分(変化無し)、git showをgit --version に変更したら2分で終了した。
よって時間予算は gitプロセス起動が1/6(2分)、git show が1/2(6分)、切り出しはほぼ0、diffが1/3(4分)と判明。
git showを高速化する為には出来るだけ纏めて取り出すのがよく、
メモリ無限大なら全展開が一番速いのも事実だが、せめてコア数程度にして欲しい。
見てる限り特に先頭も末尾も異常に速くはならない為、
動画と同様に途中にスナップショットを適度に挟んでいるように見え、なら、全展開する必然性/妥当性はない。
(やってもそんなに速くはならないのにメモリを異常に消費する=スワップする分余計に遅くなる)
>>636
これは開発者マシンなら最低でもRAM16GBでSSDだよね!というノリなら方針は間違ってない。
ただ、-n 100 とかで直近100コミットに絞れればいいだけなのだが、これが出来ないのが問題。
どうやってもいきなり9GB超掴みに行くのは使用勝手が悪い。そもそも最初の方の履歴なんてほぼ要らんし。
よってシステムキャッシュは効いてて、パイプにしても高速化予算はほぼ無いと分かった。
diffを切ったら8分、さらに切り出しを切っても8分(変化無し)、git showをgit --version に変更したら2分で終了した。
よって時間予算は gitプロセス起動が1/6(2分)、git show が1/2(6分)、切り出しはほぼ0、diffが1/3(4分)と判明。
git showを高速化する為には出来るだけ纏めて取り出すのがよく、
メモリ無限大なら全展開が一番速いのも事実だが、せめてコア数程度にして欲しい。
見てる限り特に先頭も末尾も異常に速くはならない為、
動画と同様に途中にスナップショットを適度に挟んでいるように見え、なら、全展開する必然性/妥当性はない。
(やってもそんなに速くはならないのにメモリを異常に消費する=スワップする分余計に遅くなる)
>>636
これは開発者マシンなら最低でもRAM16GBでSSDだよね!というノリなら方針は間違ってない。
ただ、-n 100 とかで直近100コミットに絞れればいいだけなのだが、これが出来ないのが問題。
どうやってもいきなり9GB超掴みに行くのは使用勝手が悪い。そもそも最初の方の履歴なんてほぼ要らんし。
638デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/29(土) 08:37:46.51ID:e5vmfD+T0 >>637
HEAD~100 とかじゃ駄目なの?
HEAD~100 とかじゃ駄目なの?
639デフォルトの名無しさん (ワッチョイ 8bbb-juJ7)
2022/10/29(土) 08:44:53.54ID:+5EirK6r0 いやバグレポートすればいいと思う
640デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/29(土) 09:15:13.77ID:J4pkDf7Q0 >>638
実はそこは初心者過ぎてよく知らないんだわ。
git log HEAD~100
では制限出来なかったけど、どう書くべきなの?
とりあえず公式マニュアルでは -n が最初に載ってるので、-n が一番お手軽なのだと思う。
これが効かないのは、多分実装忘れじゃないかと。
> https://www.git-scm.com/docs/git-log
>>639
多分、メモリ大量使用は仕様で、-n が効かないのはバグだね。
実はそこは初心者過ぎてよく知らないんだわ。
git log HEAD~100
では制限出来なかったけど、どう書くべきなの?
とりあえず公式マニュアルでは -n が最初に載ってるので、-n が一番お手軽なのだと思う。
これが効かないのは、多分実装忘れじゃないかと。
> https://www.git-scm.com/docs/git-log
>>639
多分、メモリ大量使用は仕様で、-n が効かないのはバグだね。
641デフォルトの名無しさん (ワッチョイ 8bbb-juJ7)
2022/10/29(土) 09:25:26.30ID:+5EirK6r0 合理性のないメモリ使用があるなら実害があるユーザーが改善のリクエストをバグレポートで出せばいい
そういうもん
レアケース扱いされることもあれば皆が困ってるようなら優先的にチューニングされる
仕様なのでは!?と空気読んで黙ってるのは奥ゆかしいニンジャ精神
そういうもん
レアケース扱いされることもあれば皆が困ってるようなら優先的にチューニングされる
仕様なのでは!?と空気読んで黙ってるのは奥ゆかしいニンジャ精神
642デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/29(土) 09:38:02.85ID:J4pkDf7Q0 >>641
なるほどその通りだ。
ガイドラインが糞長げえ…orz が、数日のうちにレポートする方向でやります。
> https://www.chiark.greenend.org.uk/~sgtatham/bugs.html
> https://www.git-scm.com/community 内の this guide が上記
なるほどその通りだ。
ガイドラインが糞長げえ…orz が、数日のうちにレポートする方向でやります。
> https://www.chiark.greenend.org.uk/~sgtatham/bugs.html
> https://www.git-scm.com/community 内の this guide が上記
643デフォルトの名無しさん (ワッチョイ 7997-uk66)
2022/10/29(土) 11:09:21.06ID:+W9Ulup+0 >>640
手練れのエンジニアとお見受けするが、どのジャンルで仕事されているので?
手練れのエンジニアとお見受けするが、どのジャンルで仕事されているので?
644デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/29(土) 15:16:52.52ID:e5vmfD+T0 >>640
HEAD~100..HEAD みたいなのを最後につけてレンジを制限する話だけど効かない?
HEAD~100..HEAD みたいなのを最後につけてレンジを制限する話だけど効かない?
645デフォルトの名無しさん (ワッチョイ 1302-4ham)
2022/10/29(土) 21:10:22.54ID:YQqcaKMe0 git log -100 じゃなくて?
646デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/29(土) 23:05:25.26ID:e5vmfD+T0 >>645
-100 と -n 100 と --max-count=100 は同じ意味で表示するログの数を制限する
A..B はログを検索する対象を制限する。(Bには存在するけどAには存在しないコミットという意味になる)
-100 と -n 100 と --max-count=100 は同じ意味で表示するログの数を制限する
A..B はログを検索する対象を制限する。(Bには存在するけどAには存在しないコミットという意味になる)
647デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/30(日) 02:06:46.88ID:IOU525bY0 >>644
効いた!ありがとう。
何ぞそれ?と思いきや git log のdocumentの頭に書いてあるのな。
> https://www.git-scm.com/docs/git-log
gitは機能が多すぎてドキュメントがやたら長いので端折っていたのが敗因だ。
やはり最初は一通り読まないと駄目だな。
これなら回せばいいので、組んでみたら32bit環境で43秒で終了した。
これだと高速化チューニングではなく単にfree忘れっぽいのでレポートしておいた。
再現用のスクリプトも同梱してるから気になる人はどうぞ。
https://lore.kernel.org/git/CAFOPqVXz2XwzX8vGU7wLuqb2ZuwTuOFAzBLRM_QPk+NJa=eC-g@mail.gmail.com/T/#u
効いた!ありがとう。
何ぞそれ?と思いきや git log のdocumentの頭に書いてあるのな。
> https://www.git-scm.com/docs/git-log
gitは機能が多すぎてドキュメントがやたら長いので端折っていたのが敗因だ。
やはり最初は一通り読まないと駄目だな。
これなら回せばいいので、組んでみたら32bit環境で43秒で終了した。
これだと高速化チューニングではなく単にfree忘れっぽいのでレポートしておいた。
再現用のスクリプトも同梱してるから気になる人はどうぞ。
https://lore.kernel.org/git/CAFOPqVXz2XwzX8vGU7wLuqb2ZuwTuOFAzBLRM_QPk+NJa=eC-g@mail.gmail.com/T/#u
648デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/30(日) 09:36:57.12ID:b5HYhcbp0649デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/30(日) 12:37:33.31ID:IOU525bY0 >>648
初心者は意味不明な使い方を無自覚でやるから、どうしてもマイナーバグに当たりやすい。
なるほどタグを付けてgit logでは範囲指定がデフォか…
ってそのままtutorialに書いてあったわ。やっぱちゃんと読まなきゃ駄目だったorz
> https://www.git-scm.com/docs/gittutorial
つまるところ、今までこんな馬鹿げた使い方をした奴は居なかっただけだな。
初心者は意味不明な使い方を無自覚でやるから、どうしてもマイナーバグに当たりやすい。
なるほどタグを付けてgit logでは範囲指定がデフォか…
ってそのままtutorialに書いてあったわ。やっぱちゃんと読まなきゃ駄目だったorz
> https://www.git-scm.com/docs/gittutorial
つまるところ、今までこんな馬鹿げた使い方をした奴は居なかっただけだな。
650デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/30(日) 18:58:14.60ID:IOU525bY0 git diff の出力はデフォでpatchになってるのだが、これどうやったら切れるんだ?
> https://www.git-scm.com/docs/git-diff#Documentation/git-diff.txt--p
既にフォーマッタを持っているので、
unixコマンドのdiffのデフォルト出力と同じ物が欲しい。
切るオプションも無いし、下の方のCONFIGURATIONにもそれらしい設定が見つからない。
diff.externalでdiffごと入れ替えないと駄目とかいうクソ仕様?
-s や --no-patchでは出力そのものが出なくなる。ただし
> or to cancel the effect of --patch.
と書いてあるから、かつては--no-patchではdiffのデフォ出力で、-sで出力無しだった気配はあるが。
> https://www.git-scm.com/docs/git-diff#Documentation/git-diff.txt--p
既にフォーマッタを持っているので、
unixコマンドのdiffのデフォルト出力と同じ物が欲しい。
切るオプションも無いし、下の方のCONFIGURATIONにもそれらしい設定が見つからない。
diff.externalでdiffごと入れ替えないと駄目とかいうクソ仕様?
-s や --no-patchでは出力そのものが出なくなる。ただし
> or to cancel the effect of --patch.
と書いてあるから、かつては--no-patchではdiffのデフォ出力で、-sで出力無しだった気配はあるが。
651デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/30(日) 21:37:56.23ID:b5HYhcbp0 >>650
git diff は git diff 形式 (unified diff 形式の変形) で出力される。それ以外の形式が欲しい場合は外部コマンド使うしかない。
git diff は git diff 形式 (unified diff 形式の変形) で出力される。それ以外の形式が欲しい場合は外部コマンド使うしかない。
652デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/30(日) 22:10:12.22ID:IOU525bY0653デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/30(日) 22:14:38.98ID:b5HYhcbp0 >>652
git はパッチ管理システムなんだから、それ以外が考慮されてると思う方が贅沢。
git はパッチ管理システムなんだから、それ以外が考慮されてると思う方が贅沢。
654デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/30(日) 22:34:52.61ID:IOU525bY0 >>653
いやそうじゃねえ。というかこれはソフトウェアの構成を間違ってるよ。
diffだってバグはあるのだから、内製は止めて、普通にdiffのdllをコールすべきなんだよ。
GitはLinusが1日で作ったらしいし、最初はどう考えてもそうなっていたはず。
だから俺は config の中にデフォで diff -u みたいなエイリアスがあるのかと思ってた。
diffを内包する事に、何のメリットもない。
この名残がexternal driverで、それが使えればいいという事なのだろうけど、
ご丁寧にこれを禁止するオプションまである。(-no-ext-diff)
多人数の開発では、同じ画面を見ていた方が何かと楽だから、揃える方向で努力するのはごもっともだが、
禁止するのは違う。どこかでおかしな思想が混入しているよ。
そもそも、それ以外を考慮しない=外部コマンドで十分出来る事はdllを呼ぶ、であって、
この構成だとGitがdiffも構成してるから、君は認識を間違ってる。
Gitは明らかにおかしい方向で無駄な事をやってしまっている。
そしてそれは君の価値観的にもNGなはずだよ。
いやそうじゃねえ。というかこれはソフトウェアの構成を間違ってるよ。
diffだってバグはあるのだから、内製は止めて、普通にdiffのdllをコールすべきなんだよ。
GitはLinusが1日で作ったらしいし、最初はどう考えてもそうなっていたはず。
だから俺は config の中にデフォで diff -u みたいなエイリアスがあるのかと思ってた。
diffを内包する事に、何のメリットもない。
この名残がexternal driverで、それが使えればいいという事なのだろうけど、
ご丁寧にこれを禁止するオプションまである。(-no-ext-diff)
多人数の開発では、同じ画面を見ていた方が何かと楽だから、揃える方向で努力するのはごもっともだが、
禁止するのは違う。どこかでおかしな思想が混入しているよ。
そもそも、それ以外を考慮しない=外部コマンドで十分出来る事はdllを呼ぶ、であって、
この構成だとGitがdiffも構成してるから、君は認識を間違ってる。
Gitは明らかにおかしい方向で無駄な事をやってしまっている。
そしてそれは君の価値観的にもNGなはずだよ。
655デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/30(日) 23:37:53.37ID:b5HYhcbp0 >>654
Linus のこと知ってるのなら長文書く前に調べろ。
git 作る以前から、みんなが勝手なフォーマットでパッチ送って来るのは非常に困るので推奨のパッチ形式を決めてあったんだよ。
で git 作る時に強制的にその形式に統一されるようにした。どうしても他の形式で出したい場合はひと手間かかるのが設計意図どおり。
Linus のこと知ってるのなら長文書く前に調べろ。
git 作る以前から、みんなが勝手なフォーマットでパッチ送って来るのは非常に困るので推奨のパッチ形式を決めてあったんだよ。
で git 作る時に強制的にその形式に統一されるようにした。どうしても他の形式で出したい場合はひと手間かかるのが設計意図どおり。
656デフォルトの名無しさん (ワッチョイ 8b8f-5UCg)
2022/10/30(日) 23:53:15.06ID:LXgcbV870 Linusも言ってたような気がするけど、気に食わなければ自分で作れ
以上
以上
657デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/30(日) 23:58:47.31ID:IOU525bY0 >>655
Linusはデフォを -u にして、patch送るならオプション無しで送れ、としただけでしょ。
これは間違ってない。
問題は、元のdiffの形式の出力が出来なくなってる事だよ。
オプションで出来るよ、でよかっただけ。
オプションすら禁止なら、今のgit diff に各種出力オプションがあること自体が君的に矛盾するだろ。
何故君がそんな意味不明なポジショントークをするのか分からないが、
Gitが方針を間違ってるのは事実だよ。
オプション禁止なら、git diff にオプションを何一つ付けてはいけない。
(仮にこれであれば、賛同はしないが理解はする)
ただまあ、ドキュメントの雰囲気だと、
おそらく昔は --no-patch で元のdiff形式が出せたのではないかと推測される。
君がどこまで知っているのか知らないけど、多分君の歴史理解も間違ってると思うよ。
Linusはデフォを -u にして、patch送るならオプション無しで送れ、としただけでしょ。
これは間違ってない。
問題は、元のdiffの形式の出力が出来なくなってる事だよ。
オプションで出来るよ、でよかっただけ。
オプションすら禁止なら、今のgit diff に各種出力オプションがあること自体が君的に矛盾するだろ。
何故君がそんな意味不明なポジショントークをするのか分からないが、
Gitが方針を間違ってるのは事実だよ。
オプション禁止なら、git diff にオプションを何一つ付けてはいけない。
(仮にこれであれば、賛同はしないが理解はする)
ただまあ、ドキュメントの雰囲気だと、
おそらく昔は --no-patch で元のdiff形式が出せたのではないかと推測される。
君がどこまで知っているのか知らないけど、多分君の歴史理解も間違ってると思うよ。
658デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/31(月) 00:04:41.05ID:h5Hfu9WR0 >>657
お前以外は誰もオプションとか必要ないから作ってないだけだよ。むしろ邪魔。どうしてもやりたければ外部コマンド指定でできるんだからオプションとかでやるよりよっぽど汎用性がある。
オープンソースなんだからオプション必要ならお前が自分でつくればいい。
お前以外は誰もオプションとか必要ないから作ってないだけだよ。むしろ邪魔。どうしてもやりたければ外部コマンド指定でできるんだからオプションとかでやるよりよっぽど汎用性がある。
オープンソースなんだからオプション必要ならお前が自分でつくればいい。
659デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/31(月) 00:08:19.51ID:h5Hfu9WR0 あと −−no-patch には昔からパッチ出さない機能しかないぞ。頭悪い推測とかする暇があったら過去のソース確認してこい。
それこそ git で調べればすぐだぞ
それこそ git で調べればすぐだぞ
660デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 00:21:01.40ID:J+3pjzxx0 >>859
そうか?ならマニュアルの
> to cancel the effect of --patch
の部分は明らかに不要だから削除要請出しといてくれ。
というか君の「昔」がどれ位か知らんが、Linusの言ってた?フォーマットが統一されてないってのは、
diffの各種オプションではなく、edやsharに対してだと思うぞ。
そうか?ならマニュアルの
> to cancel the effect of --patch
の部分は明らかに不要だから削除要請出しといてくれ。
というか君の「昔」がどれ位か知らんが、Linusの言ってた?フォーマットが統一されてないってのは、
diffの各種オプションではなく、edやsharに対してだと思うぞ。
661デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/31(月) 00:43:54.22ID:h5Hfu9WR0 >>660
不要だと思ってるのはお前だけ。その思い込みが勘違いの原因だろ。
不要だと思ってるのはお前だけ。その思い込みが勘違いの原因だろ。
662デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 07:08:10.92ID:J+3pjzxx0 色々確認したが、Gitの現状認識としては651であってるっぽい。
そして外部ツール使うしかないが、これは環境設定無しでコマンドだけで出来る。(動作確認済み)
git difftool --extcmd=/usr/bin/diff <commit> <commit>
> https://qastack.jp/programming/255202/how-do-i-view-git-diff-output-with-my-preferred-diff-tool-viewer
ついでにその中、
> Gitについて学ぶほど、それは1人の人、つまり元のプログラマーのために作られたものだと感じます。
これもよく言われてるようだが、俺も今回の件で同意だ。
合理性に欠ける判断をしているのだから色々文句言われるのも当然だ。
ただLinusは自分用に作った物を公開したら勝手に使われてるだけだから、知ったこっちゃ無いってのも分かる。
ただそれならそうと、いつもの調子でドキュメントにも書いててくれないと困るね。
合理的な構成を推定すると迷子になってしまう。
俺は絶対に diff -u 以外のフォーマットを許さない!絶対にだ!
とか書いてあれば、最初から諦めるので無駄に探す必要はなかった。
俺はLinusのこういった感情的な部分はわりと好きなのだが、まあ昨今の code of conduct では書いても消されるんだろうけども。
そして外部ツール使うしかないが、これは環境設定無しでコマンドだけで出来る。(動作確認済み)
git difftool --extcmd=/usr/bin/diff <commit> <commit>
> https://qastack.jp/programming/255202/how-do-i-view-git-diff-output-with-my-preferred-diff-tool-viewer
ついでにその中、
> Gitについて学ぶほど、それは1人の人、つまり元のプログラマーのために作られたものだと感じます。
これもよく言われてるようだが、俺も今回の件で同意だ。
合理性に欠ける判断をしているのだから色々文句言われるのも当然だ。
ただLinusは自分用に作った物を公開したら勝手に使われてるだけだから、知ったこっちゃ無いってのも分かる。
ただそれならそうと、いつもの調子でドキュメントにも書いててくれないと困るね。
合理的な構成を推定すると迷子になってしまう。
俺は絶対に diff -u 以外のフォーマットを許さない!絶対にだ!
とか書いてあれば、最初から諦めるので無駄に探す必要はなかった。
俺はLinusのこういった感情的な部分はわりと好きなのだが、まあ昨今の code of conduct では書いても消されるんだろうけども。
663デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 10:11:41.92ID:J+3pjzxx0 てかGitってまさかのモノリシックかよ!
こりゃ文句言われるのも分かるわ。完全に方向を間違ってる。
結果的に肥大化していったのだろうけど、現在の状況でこれは駄目だよ。
つかこれシェル化する方向のプロジェクトはないの?
子コマンド群のバイナリだけ貰いたいんだけどさ。
こりゃ文句言われるのも分かるわ。完全に方向を間違ってる。
結果的に肥大化していったのだろうけど、現在の状況でこれは駄目だよ。
つかこれシェル化する方向のプロジェクトはないの?
子コマンド群のバイナリだけ貰いたいんだけどさ。
664デフォルトの名無しさん (ワッチョイ a95f-Tk+f)
2022/10/31(月) 10:39:47.64ID:sko8U7ef0 >>663 好きに fork しなよ。
665デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/31(月) 12:23:13.35ID:h5Hfu9WR0 自分でやってみればいいよ。
自分で多数の人が参加する巨大なプロジェクトを管理するようになれば、形式が統一されていることがどれだけ重要かわかる。
仕様を強制されているようでも、これこそが git の使い易さ、戦闘証明済の実力だと気付くよ。空想と現場は違う。
自分で多数の人が参加する巨大なプロジェクトを管理するようになれば、形式が統一されていることがどれだけ重要かわかる。
仕様を強制されているようでも、これこそが git の使い易さ、戦闘証明済の実力だと気付くよ。空想と現場は違う。
666デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 13:21:07.66ID:J+3pjzxx0 >>665
それが従来形式のdiffの出力をさせない理由なら、
現在のGitプロジェクトの思想は俺とまるで合わない。
今時モノリシックとか、多分じきにこのプロジェクトは頓挫するよ。
multicsの再来だね。(俺は使ったこと無いけど)
自覚症状もあるみたいだし。
> Git is a fast, scalable, distributed revision control system with an unusually rich command set
> unusually
> https://www.git-scm.com/docs/git
ただまあ本当にdiffも内製しているようで、ちょっと驚きだよ。
ただwikiによると当初はローレベルエンジン+シェルスクリプトで、これは俺の思想と合致してる。
windowsに移植する際にシェルスクリプトをCに書き換え、そこでモノリシック化したようだ。
それで環境変数を見るとか、完全に開発の方向性を間違ってる。
当初のシェルスクリプト方式ならdiffを呼ぶだけだから、シンボリックリンクで好きなのと簡単に交換出来た。
この場合、Git側にコードは全く必要ないし、ユーザー側に予備知識も必要ない。
それをモノリシックにしてしまったから、環境変数を読むコードを必要とし、
ユーザーはマニュアルを読むことを強制させられる。
お互いに完全に無駄だ。
このメンテナは、ソフトウェアアーキテクチャはどうあるべきか、全く理解出来てない。
今ですらGitは難しすぎると文句言われてるだろ。
コードを書く為にコード管理システムの勉強が必要とか、完全に本末転倒だし。
じきに巨大な躯体を支えきれなくなって、分割プロジェクトが発生すると思うぜ。
それが多分Next-gitになるのだろうよ。
つか、何でGitはモノリシックを選択してんの?全く意味ねえと思うぞマジで。
本当にdiffとかを絶対に交換させない為?ならマジで死ねでしかないね。
それが従来形式のdiffの出力をさせない理由なら、
現在のGitプロジェクトの思想は俺とまるで合わない。
今時モノリシックとか、多分じきにこのプロジェクトは頓挫するよ。
multicsの再来だね。(俺は使ったこと無いけど)
自覚症状もあるみたいだし。
> Git is a fast, scalable, distributed revision control system with an unusually rich command set
> unusually
> https://www.git-scm.com/docs/git
ただまあ本当にdiffも内製しているようで、ちょっと驚きだよ。
ただwikiによると当初はローレベルエンジン+シェルスクリプトで、これは俺の思想と合致してる。
windowsに移植する際にシェルスクリプトをCに書き換え、そこでモノリシック化したようだ。
それで環境変数を見るとか、完全に開発の方向性を間違ってる。
当初のシェルスクリプト方式ならdiffを呼ぶだけだから、シンボリックリンクで好きなのと簡単に交換出来た。
この場合、Git側にコードは全く必要ないし、ユーザー側に予備知識も必要ない。
それをモノリシックにしてしまったから、環境変数を読むコードを必要とし、
ユーザーはマニュアルを読むことを強制させられる。
お互いに完全に無駄だ。
このメンテナは、ソフトウェアアーキテクチャはどうあるべきか、全く理解出来てない。
今ですらGitは難しすぎると文句言われてるだろ。
コードを書く為にコード管理システムの勉強が必要とか、完全に本末転倒だし。
じきに巨大な躯体を支えきれなくなって、分割プロジェクトが発生すると思うぜ。
それが多分Next-gitになるのだろうよ。
つか、何でGitはモノリシックを選択してんの?全く意味ねえと思うぞマジで。
本当にdiffとかを絶対に交換させない為?ならマジで死ねでしかないね。
667デフォルトの名無しさん (ブーイモ MM33-wVCK)
2022/10/31(月) 14:15:23.19ID:Yrczlr02M Simple is not easy
Gitは後者を選択することでSIerのドカタまで幅広く受け入れられたということだ
Gitは後者を選択することでSIerのドカタまで幅広く受け入れられたということだ
668デフォルトの名無しさん (ワッチョイ 8b8f-5UCg)
2022/10/31(月) 14:29:14.51ID:Pk1WyFqz0 (だからgit difftoolが用意されてんだろと言いたいけど、linux原理主義者みたいだし黙っとこう)
669デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 15:04:18.65ID:J+3pjzxx0 >>667
他よりましなだけだろ。
ただ俺が思うに、Gitはもっと簡単に出来て、
・勉強しないといけないGit(今)
・勉強しなくてもなんとなく使えちゃうGit(次世代)
に分離すると思うよ。次世代版の需要圧力はもう既に十分あるし。
実のところ、今のgitにラッパシェルスクリプト群を被せれば次世代版出来ちゃうし、
(勿論見た目だけだがそれが重要)
俺はそれ作って使おうかとも思案中。
Gitは業務プロセス名のコマンドだから、実際何が起こっているのか分かりにくいのが一番の問題だよ。
コマンド名変えるだけでも相当変わる。
他よりましなだけだろ。
ただ俺が思うに、Gitはもっと簡単に出来て、
・勉強しないといけないGit(今)
・勉強しなくてもなんとなく使えちゃうGit(次世代)
に分離すると思うよ。次世代版の需要圧力はもう既に十分あるし。
実のところ、今のgitにラッパシェルスクリプト群を被せれば次世代版出来ちゃうし、
(勿論見た目だけだがそれが重要)
俺はそれ作って使おうかとも思案中。
Gitは業務プロセス名のコマンドだから、実際何が起こっているのか分かりにくいのが一番の問題だよ。
コマンド名変えるだけでも相当変わる。
670デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 15:05:02.85ID:J+3pjzxx0 >>668
それに辿り着くのにググったりマニュアルを読まないといけないのが問題なんだよ。
今のGitは世界中のプログラマに努力を強いてて、その犠牲の上に成り立ってる。
3時間程度あれば、再現コード付きのバグ報告が出来てしまう。
それをマニュアルを読むのに費やしてるのだから、無駄でしょ。
世界中のプログラマが3時間を世界が進歩する方向に費やせたら、Gitももっとよくなってたはずだよ。
それに辿り着くのにググったりマニュアルを読まないといけないのが問題なんだよ。
今のGitは世界中のプログラマに努力を強いてて、その犠牲の上に成り立ってる。
3時間程度あれば、再現コード付きのバグ報告が出来てしまう。
それをマニュアルを読むのに費やしてるのだから、無駄でしょ。
世界中のプログラマが3時間を世界が進歩する方向に費やせたら、Gitももっとよくなってたはずだよ。
671デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 15:39:10.00ID:oV1LtMOH0 それは世界中の人が俺に1円を恵んでくれたら
俺は大金持ちになっていたと言っているようなもんだな
俺は大金持ちになっていたと言っているようなもんだな
672デフォルトの名無しさん (ワッチョイ 8bbb-VzUj)
2022/10/31(月) 15:57:50.61ID:h5Hfu9WR0 >>670
もっと良い物ができると主張するんなら作って広めてから出直してこい
もともと git を使ってきたやつらがどういう連中かわかって無さ過ぎ
linux カーネルコミュニティとか、文句言ってる暇があったらコード書いて変更した方が速いってやつらばかりだぞ
そういう連中がのべ何万人も十年以上使い続けた結果で今の仕様になってる。本当に問題だったら誰かがとっくに直してる
お前にはこの言葉を贈ろう「馬鹿でも使えるものは馬鹿しか使わない」
もっと良い物ができると主張するんなら作って広めてから出直してこい
もともと git を使ってきたやつらがどういう連中かわかって無さ過ぎ
linux カーネルコミュニティとか、文句言ってる暇があったらコード書いて変更した方が速いってやつらばかりだぞ
そういう連中がのべ何万人も十年以上使い続けた結果で今の仕様になってる。本当に問題だったら誰かがとっくに直してる
お前にはこの言葉を贈ろう「馬鹿でも使えるものは馬鹿しか使わない」
673デフォルトの名無しさん (ワッチョイ 8901-Gf1x)
2022/10/31(月) 16:18:24.02ID:SCCWpcRv0 gitにdiffの書式の多様性を求めるなら、自分が使ってるコマンドの方を多様性を受け入れるようにすれば良いんじゃね
674デフォルトの名無しさん (ワッチョイ d9e4-Xmag)
2022/10/31(月) 16:37:40.55ID:GzQExg5g0 gitにとってファイルの差分を抽出する機能は、単にユーザへ表示したりパッチをつくるだけじゃなくて、gitの特徴的なマージやリベースを実現するための核心的機能なんだよ
なので専用のものを内製する意味はある
なので専用のものを内製する意味はある
675デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 18:09:11.73ID:J+3pjzxx0676デフォルトの名無しさん (ワッチョイ 8901-ZlL6)
2022/10/31(月) 18:20:34.93ID:5K9TC9u30 初歩的な質問ですが教えてください。
コミットの履歴が汚くなった場合、皆さんはどのように管理されてますでしょうか?
具体的には、
gitでdevelopからブランチを切ったAで作業しました。
ブランチAのコミット履歴が汚くなったので
新たに作成するブランチBにブランチAで変更したファイルを
一回のコミットで整理したいです。
git cherry-pick -n fromID..toID
などで整理しているのでしょうか?
コミットの履歴が汚くなった場合、皆さんはどのように管理されてますでしょうか?
具体的には、
gitでdevelopからブランチを切ったAで作業しました。
ブランチAのコミット履歴が汚くなったので
新たに作成するブランチBにブランチAで変更したファイルを
一回のコミットで整理したいです。
git cherry-pick -n fromID..toID
などで整理しているのでしょうか?
677デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 18:28:03.00ID:oV1LtMOH0 >>675
タラレバ
タラレバ
678デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 18:33:43.29ID:J+3pjzxx0 >>672
> のべ何万人も十年以上使い続けた結果
それは言いすぎ。カーネルコミュニティって400人規模と聞いた覚えがある。
毎年全員入れ替わっても1万人規模だよ。
まあこれは本質ではないのでいいが。、
> 「馬鹿でも使えるものは馬鹿しか使わない」
これって誰の言葉だ?Linusが
> マジで、Cを選択する理由が「何もなかった」としてもだ、C++プログラマー避けになるというだけで、Cを使う大義名分になる。
> https://cpplover.blogspot.com/2013/05/linus-torvalsc.html
と言ってるのは知ってるが。(しかもこれはGitの話らしい)
ちなみに俺はLinusの意見にも賛同する。プロジェクトに馬鹿が混入しないことは本当に重要なことだ。
ただ君と根本的に違うのは、「簡単は正義」と思ってることだ。
簡単に出来るのなら、簡単な方がいい。
馬鹿をふるい落とす為に敢えて難しい構造やコードにすることはない。
俺が見る限りLinusもそうしているわけではないが、君がそうしたいのは理解した。
まあ機会があれば実装して広めることになるかもしれない。
ただ俺は別のことをやろうとしてるから、Gitなんて動けば何でもいい程度でしかないので、優先順位は極めて低い。
あとたぶん、君は
> 文句言ってる暇があったらコード書いて変更した方が速い
の意味を誤解している。が、これは今言っても通じないと思う。
> のべ何万人も十年以上使い続けた結果
それは言いすぎ。カーネルコミュニティって400人規模と聞いた覚えがある。
毎年全員入れ替わっても1万人規模だよ。
まあこれは本質ではないのでいいが。、
> 「馬鹿でも使えるものは馬鹿しか使わない」
これって誰の言葉だ?Linusが
> マジで、Cを選択する理由が「何もなかった」としてもだ、C++プログラマー避けになるというだけで、Cを使う大義名分になる。
> https://cpplover.blogspot.com/2013/05/linus-torvalsc.html
と言ってるのは知ってるが。(しかもこれはGitの話らしい)
ちなみに俺はLinusの意見にも賛同する。プロジェクトに馬鹿が混入しないことは本当に重要なことだ。
ただ君と根本的に違うのは、「簡単は正義」と思ってることだ。
簡単に出来るのなら、簡単な方がいい。
馬鹿をふるい落とす為に敢えて難しい構造やコードにすることはない。
俺が見る限りLinusもそうしているわけではないが、君がそうしたいのは理解した。
まあ機会があれば実装して広めることになるかもしれない。
ただ俺は別のことをやろうとしてるから、Gitなんて動けば何でもいい程度でしかないので、優先順位は極めて低い。
あとたぶん、君は
> 文句言ってる暇があったらコード書いて変更した方が速い
の意味を誤解している。が、これは今言っても通じないと思う。
679デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 18:41:18.26ID:oV1LtMOH0 小1「掛け算よりも足し算のほうが簡単だ!」
680デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 18:42:37.79ID:oV1LtMOH0 しょう1「かけざんよりもたしざんのほうがかんたんだ!かんじよりもひらがなのほうがかんたんだ!」
681デフォルトの名無しさん (ワッチョイ a95f-Tk+f)
2022/10/31(月) 18:50:02.57ID:sko8U7ef0 >>678
> ただ俺は別のことをやろうとしてるから、Gitなんて動けば何でもいい程度でしかないので、優先順位は極めて低い。
これまでの開発者を含めて他の人もそうだっただけという可能性に思い至れば何の不思議もないことなのに。
> ただ俺は別のことをやろうとしてるから、Gitなんて動けば何でもいい程度でしかないので、優先順位は極めて低い。
これまでの開発者を含めて他の人もそうだっただけという可能性に思い至れば何の不思議もないことなのに。
682デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 18:50:46.86ID:J+3pjzxx0 >>674
不可欠な機能ではあるが、核心的機能ではない。
事実として、Git内のdiffをGNUdiffに差し替えても、マージやリベースが出来なくなるわけではないだろ。
Gitは方針を間違ってる。
もし仮にGNUdiffのアルゴリズムが糞過ぎて出力が糞でマージが出来ないとしても、
アルゴリズム部分はGNUdiffにcontributeし、Gitがそのソースコードを使えばいいだけ。
Git内のdiffもGNUdiffからforkしたのだろうし、普通はこうすると思うけど。
別に実装すべきなのはフォーマッタで、--word-diffとかの部分だよ。
勿論GNUdiffに入れるのがベストだが、この辺は断られてもおかしくないし。
ただこれも人間用であって、マージする為に必要な機能部分ではないから、
君らから見てもGitではなくdiffに入れておけ、となるはずだが。
まあdiffに手を入れたくなるのは分かるが、それはソフトウェア開発ではやってはいけない方向で、
我慢してGNUdiffにcontributeしておく方が全体の長期的利益になるんだよ。
Gitがこの辺、アルゴリズムとViewをごちゃ混ぜに扱ってるのも気になる。
MVCとかまるで言われない世界ではあるけど、それでも基本として理解しておくべきだよ。
ビューを分離しておくことはものすごく重要だから。
不可欠な機能ではあるが、核心的機能ではない。
事実として、Git内のdiffをGNUdiffに差し替えても、マージやリベースが出来なくなるわけではないだろ。
Gitは方針を間違ってる。
もし仮にGNUdiffのアルゴリズムが糞過ぎて出力が糞でマージが出来ないとしても、
アルゴリズム部分はGNUdiffにcontributeし、Gitがそのソースコードを使えばいいだけ。
Git内のdiffもGNUdiffからforkしたのだろうし、普通はこうすると思うけど。
別に実装すべきなのはフォーマッタで、--word-diffとかの部分だよ。
勿論GNUdiffに入れるのがベストだが、この辺は断られてもおかしくないし。
ただこれも人間用であって、マージする為に必要な機能部分ではないから、
君らから見てもGitではなくdiffに入れておけ、となるはずだが。
まあdiffに手を入れたくなるのは分かるが、それはソフトウェア開発ではやってはいけない方向で、
我慢してGNUdiffにcontributeしておく方が全体の長期的利益になるんだよ。
Gitがこの辺、アルゴリズムとViewをごちゃ混ぜに扱ってるのも気になる。
MVCとかまるで言われない世界ではあるけど、それでも基本として理解しておくべきだよ。
ビューを分離しておくことはものすごく重要だから。
683デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 19:41:41.79ID:oV1LtMOH0 え?まさかgit diffを差分を見るだけのツールだと思ってるの?
684デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 19:42:41.80ID:oV1LtMOH0 GNU diffに依存したら、GNU diffが使われないところで
動かないってわからんかなぁ
diffは移植性低いんだよ?
動かないってわからんかなぁ
diffは移植性低いんだよ?
685デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 19:49:40.38ID:J+3pjzxx0 ちなみに652で既に言ったが
> --output-indicator-new=<char>
> --output-indicator-old=<char>
> --output-indicator-context=<char>
> Specify the character used to indicate new, old or context lines in the generated patch. Normally they are +, - and ' ' respectively.
> https://www.git-scm.com/docs/git-diff
このオプションが相当にヤバい。
これはデフォで
diff | less
となってる部分を、
diff --output-indicator-new='>' | less
とすれば幸せになれますよ、ということだが、これは
diff | sed 's/^\+/>/' | less
とすれば出来ることなので、gnuにこれを提案しても当然「そんなんイラネーよ」で終わってしまう。
Cで実装すべき案件ではないから。
そこで何故断られたのかを理解せず、だったらforkしますのノリなので、完全に無能の働き者だよ。
多分こいつらは本当にCしか書けない、Cしか知らない連中だ。
sed/awk/perl/python/rubyのどれかでも少しでも出来れば、この発想にはならない。
コントリビューターがこれを出してくるのも、メンテナがこれを止めないのも狂ってる。
プロジェクトにはいまだに正規表現を書けない老害しかいないと分かる。
だからこのオプションは、Linus的に言えば、常識的なプログラマー除けにはなってしまってるだろうよ。
> --output-indicator-new=<char>
> --output-indicator-old=<char>
> --output-indicator-context=<char>
> Specify the character used to indicate new, old or context lines in the generated patch. Normally they are +, - and ' ' respectively.
> https://www.git-scm.com/docs/git-diff
このオプションが相当にヤバい。
これはデフォで
diff | less
となってる部分を、
diff --output-indicator-new='>' | less
とすれば幸せになれますよ、ということだが、これは
diff | sed 's/^\+/>/' | less
とすれば出来ることなので、gnuにこれを提案しても当然「そんなんイラネーよ」で終わってしまう。
Cで実装すべき案件ではないから。
そこで何故断られたのかを理解せず、だったらforkしますのノリなので、完全に無能の働き者だよ。
多分こいつらは本当にCしか書けない、Cしか知らない連中だ。
sed/awk/perl/python/rubyのどれかでも少しでも出来れば、この発想にはならない。
コントリビューターがこれを出してくるのも、メンテナがこれを止めないのも狂ってる。
プロジェクトにはいまだに正規表現を書けない老害しかいないと分かる。
だからこのオプションは、Linus的に言えば、常識的なプログラマー除けにはなってしまってるだろうよ。
686デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 19:51:14.64ID:oV1LtMOH0 git diffはパッチファイルを作るために利用されるし、
diffは環境依存するコマンドなんだから、
そんなのに依存したら、gitの移植性が低くなる
別の環境で実行したら、diffコマンドの出力がおかしくて
正しくパッチ当てられませんとかなったら困るやろ
常識で考えろや
diffは環境依存するコマンドなんだから、
そんなのに依存したら、gitの移植性が低くなる
別の環境で実行したら、diffコマンドの出力がおかしくて
正しくパッチ当てられませんとかなったら困るやろ
常識で考えろや
687デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 19:53:03.45ID:oV1LtMOH0688デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 19:53:31.39ID:J+3pjzxx0689デフォルトの名無しさん (ワッチョイ d9e4-Xmag)
2022/10/31(月) 19:56:13.88ID:GzQExg5g0 >>682
diff.externalやdifftoolによる置き換えは差分表示に使うdiffを置き換えるだけで、git内部でマージやリベースを行うための差分抽出には使わないだろ
diff.externalやdifftoolによる置き換えは差分表示に使うdiffを置き換えるだけで、git内部でマージやリベースを行うための差分抽出には使わないだろ
690デフォルトの名無しさん (ワッチョイ 699f-ZlL6)
2022/10/31(月) 20:00:09.03ID:9mfNegYM0 ん?
これはもしかして以前来てたPOSIX原理主義者氏か?
これはもしかして以前来てたPOSIX原理主義者氏か?
691デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:00:09.25ID:oV1LtMOH0692デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:01:01.17ID:oV1LtMOH0 例えば2004年版のdiffには-uがないからな
The Open Group Base Specifications Issue 6
https://pubs.opengroup.org/onlinepubs/009604499/utilities/diff.html
The Open Group Base Specifications Issue 6
https://pubs.opengroup.org/onlinepubs/009604499/utilities/diff.html
693デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 20:02:19.83ID:J+3pjzxx0 >>686
> diffは環境依存するコマンド
は?
まあ仮にそうだったとして、Git内のdiffがあらゆる環境で同じdiffを生成するように小細工してるとでも?
ただまあこの場合、ぶっちゃけ、小細工出来る=原因が分かってる≒多分Intサイズとかの違い、だから、
リモートリポジトリのマージで(俺は実際何を送ってくるのか知らんが)diffを送ってくるのなら、
それはマージ時点で鯖に問い合わせてdiffで済むかファイル本体を送らせてローカルでdiff取るかすればいいだけでしょ。
正直、原因究明して小細工するより後者の方が断然楽なので、合理的判断ならそうしてると思うけど。
>>691
前後したが上記。
>>689
その内部でマージやリベースを行う為のdiffをGNUdiffのdllコールと置き換えて、
マージやリベースが動かなくなるかって話だよ。普通に動くと思うけど。
> diffは環境依存するコマンド
は?
まあ仮にそうだったとして、Git内のdiffがあらゆる環境で同じdiffを生成するように小細工してるとでも?
ただまあこの場合、ぶっちゃけ、小細工出来る=原因が分かってる≒多分Intサイズとかの違い、だから、
リモートリポジトリのマージで(俺は実際何を送ってくるのか知らんが)diffを送ってくるのなら、
それはマージ時点で鯖に問い合わせてdiffで済むかファイル本体を送らせてローカルでdiff取るかすればいいだけでしょ。
正直、原因究明して小細工するより後者の方が断然楽なので、合理的判断ならそうしてると思うけど。
>>691
前後したが上記。
>>689
その内部でマージやリベースを行う為のdiffをGNUdiffのdllコールと置き換えて、
マージやリベースが動かなくなるかって話だよ。普通に動くと思うけど。
694デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:03:29.56ID:oV1LtMOH0 > まあ仮にそうだったとして、Git内のdiffがあらゆる環境で同じdiffを生成するように小細工してるとでも?
同じdiffを生成するために、gitで実装してるんだろ
頭悪いのか?
依存ライブラリ(この場合はコマンドだが)を減らすのは
移植性を高めるための常識だ
同じdiffを生成するために、gitで実装してるんだろ
頭悪いのか?
依存ライブラリ(この場合はコマンドだが)を減らすのは
移植性を高めるための常識だ
695デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:04:11.62ID:oV1LtMOH0 OSの標準コマンドに依存したら
移植性は低くなるんだよ
常識やろ
移植性は低くなるんだよ
常識やろ
696デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 20:08:10.94ID:J+3pjzxx0 >>692
> ユニファイド形式diffを最初に開発したのはウェイン・デイヴィソンで、
> 1990年8月のことであった(comp.sources.miscのVolume 14にunidiffとして投稿)。
> リチャード・ストールマンがGNUプロジェクトのdiffコマンドにこの機能を1ヶ月後に加え、
> 1991年1月リリースのGNU diff 1.15から使えるようになった。
> https://ja.wikipedia.org/wiki/Diff
ただそれ以前に、-uがある/ないはGitでマージ出来る/出来ないにはならないだろ。
それは完全に人間用であってさ。
> ユニファイド形式diffを最初に開発したのはウェイン・デイヴィソンで、
> 1990年8月のことであった(comp.sources.miscのVolume 14にunidiffとして投稿)。
> リチャード・ストールマンがGNUプロジェクトのdiffコマンドにこの機能を1ヶ月後に加え、
> 1991年1月リリースのGNU diff 1.15から使えるようになった。
> https://ja.wikipedia.org/wiki/Diff
ただそれ以前に、-uがある/ないはGitでマージ出来る/出来ないにはならないだろ。
それは完全に人間用であってさ。
697デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 20:10:05.98ID:J+3pjzxx0 >>694,695
だからファイル本体をダウンロードして、mergeするマシン上でdiff取ればいいだけだろ。
これでマシン依存をなくせるし、普通の実装だよ。
通じないのか?どうもお前の書き込みは頭が悪そうだし。ならここら辺で切り上げるが。
だからファイル本体をダウンロードして、mergeするマシン上でdiff取ればいいだけだろ。
これでマシン依存をなくせるし、普通の実装だよ。
通じないのか?どうもお前の書き込みは頭が悪そうだし。ならここら辺で切り上げるが。
698デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:15:24.67ID:oV1LtMOH0699デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:15:53.77ID:oV1LtMOH0700デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:16:36.27ID:oV1LtMOH0701デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 20:38:58.71ID:J+3pjzxx0 >>690
違うし、565からの議論は俺にとっては一部意味不明だが、正直相当不毛なのは分かる。
それはGitの構造が糞だからだ。
結局のところGitはファイルシステム上のblobツリーを管理するツールでしかない。
そしてblobが気に入らないのなら、テキストにしてしまえばいいだけで、それもまたGitでしかない。
これを理解出来ない馬鹿同士で議論してて空回りしてるだけのように見える。
具体的には、git cat-fileがblob読み出しで、対になる書き込みツールもあるはずだが知らないが、
それらを個別に交換出来れば何とでもなるだけ。PHPで一般的に使われてるPDO方式だが、
要は最終段のI/Oだけは各種取りそろえて、切り替えれば何でも出来る構造にする。つまり、
Git謹製の cat-file バイナリ:Git純正blob形式
オレオレバイナリかシェルスクリプト: Git謹製blobファイルの名前でディレクトリを作り、
その中に自分の好きな形式で突っ込んでおけばいいだけ。
XMLでもJSONでも、ただのテキストでもいい。
それらがssh用ならリモートリポジトリを読むし、DB用ならDBに格納されることになる。
最終段のI/Oを読み書きセットで交換してしまえば、その上のコードは全く同一でいけるんだよ。
繰り返すが、PHPやWebの連中は常識的にこれをやってる。(理由は複数のDBに対応する為)
それをsshは別に実装してるようだし、方針自体がかなり狂ってるよ。
LinusもDBに入れてるのを糞に言ってるが、保存先は本質ではないし、
適切なアーキテクチャであれば簡単に交換可能なものだ。
だから本来、こんな議論が発生する余地もないのだけど。
違うし、565からの議論は俺にとっては一部意味不明だが、正直相当不毛なのは分かる。
それはGitの構造が糞だからだ。
結局のところGitはファイルシステム上のblobツリーを管理するツールでしかない。
そしてblobが気に入らないのなら、テキストにしてしまえばいいだけで、それもまたGitでしかない。
これを理解出来ない馬鹿同士で議論してて空回りしてるだけのように見える。
具体的には、git cat-fileがblob読み出しで、対になる書き込みツールもあるはずだが知らないが、
それらを個別に交換出来れば何とでもなるだけ。PHPで一般的に使われてるPDO方式だが、
要は最終段のI/Oだけは各種取りそろえて、切り替えれば何でも出来る構造にする。つまり、
Git謹製の cat-file バイナリ:Git純正blob形式
オレオレバイナリかシェルスクリプト: Git謹製blobファイルの名前でディレクトリを作り、
その中に自分の好きな形式で突っ込んでおけばいいだけ。
XMLでもJSONでも、ただのテキストでもいい。
それらがssh用ならリモートリポジトリを読むし、DB用ならDBに格納されることになる。
最終段のI/Oを読み書きセットで交換してしまえば、その上のコードは全く同一でいけるんだよ。
繰り返すが、PHPやWebの連中は常識的にこれをやってる。(理由は複数のDBに対応する為)
それをsshは別に実装してるようだし、方針自体がかなり狂ってるよ。
LinusもDBに入れてるのを糞に言ってるが、保存先は本質ではないし、
適切なアーキテクチャであれば簡単に交換可能なものだ。
だから本来、こんな議論が発生する余地もないのだけど。
702デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:39:57.17ID:oV1LtMOH0703デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:40:47.45ID:oV1LtMOH0 以前来てたPOSIX原理主義者氏ではなく
また別のPOSIX原理主義者氏のようだなw
また別のPOSIX原理主義者氏のようだなw
704デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:41:49.56ID:oV1LtMOH0 自分が認めているもの以外「全部方針が狂ってるよ」
その理由は、自分が認めていないからだよ
世界が認めていても
「俺が認めていないから世界の方が狂ってるんだよ!」
その理由は、自分が認めていないからだよ
世界が認めていても
「俺が認めていないから世界の方が狂ってるんだよ!」
705デフォルトの名無しさん (ブーイモ MMeb-uk66)
2022/10/31(月) 20:45:31.00ID:GrGctmUAM POSIX原理主義はWindowsでの開発がめんどくさくなるんで本当に嫌いだわ
あと今更awkやsedの読みづらい文法覚えるより他のスクリプト言語で書いた方が楽だし、POSIX原理主義はPOSIXに慣れている奴のポジショントークにすぎないと思うね
あと今更awkやsedの読みづらい文法覚えるより他のスクリプト言語で書いた方が楽だし、POSIX原理主義はPOSIXに慣れている奴のポジショントークにすぎないと思うね
706デフォルトの名無しさん (ワッチョイ d9e4-Xmag)
2022/10/31(月) 20:46:22.02ID:GzQExg5g0 >>693
gitのバージョン管理されているファイルツリーはdiffコマンドがそのまま解釈できるような形式でファイルシステム上に存在しないからファイル単位で変換して外部関数呼び出すとか馬鹿だな
さらにgit内部で保持されるファイルの差分情報をdiffの出力みたいな字句解析が必要なバイト配列で取り扱うのも馬鹿げてる
このファイル差分抽出は間違いなくgitの核心的機能これが無ければVCSとして機能しない
gitのバージョン管理されているファイルツリーはdiffコマンドがそのまま解釈できるような形式でファイルシステム上に存在しないからファイル単位で変換して外部関数呼び出すとか馬鹿だな
さらにgit内部で保持されるファイルの差分情報をdiffの出力みたいな字句解析が必要なバイト配列で取り扱うのも馬鹿げてる
このファイル差分抽出は間違いなくgitの核心的機能これが無ければVCSとして機能しない
707デフォルトの名無しさん (ワッチョイ 6914-Tk+f)
2022/10/31(月) 20:49:18.25ID:oV1LtMOH0 >>705
POSIX原理主義者はPOSIXを理解してないよ。
POSIX原理主義者はPOSIXを理解してないよ。
708デフォルトの名無しさん (ワッチョイ d9e4-Xmag)
2022/10/31(月) 20:55:34.73ID:GzQExg5g0709デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 21:08:17.57ID:J+3pjzxx0 >>706
そこら辺の機能はGit以前から完全に機能してるんだよ。
> diffが作られてしばらくは、ソフトウェアコードや技術文書のマークアップのソース部分の変更箇所を比較する、
> プログラムのデバッグ出力の検証、ファイルシステム中のファイル一覧の比較といった使い方が一般的であった。
> ed用の出力により、ファイルへの一連の変更をひとまとめにしてファイル容量を節約するというアイデアが出てきた。
> Source Code Control System(SCCS)はそのようなアイデアを実装したものとして1970年代後半に実装がなされた。
> https://ja.wikipedia.org/wiki/Diff
だからそれはGitのアイデアでも全然無く、Git以前からdiffとedを組み合わせれば誰でも出来る物だった。
勿論diffの出力がキモだから出来るだけ--minimumなのは目指すとしても、
それはdiffを改善すべき話で、Git本体が対応する話ではない。
てかこの辺のソフトウェア階層の話が通じないところを見ると、割と階層無しの文化=本当にCしか知らない感じだな。
例えばJSとかでは、扱うデータの先がDBなのか、ローカルファイルなのか、メモリ上のStringなのかを
上位のコードは区別しないで済むようにコーディングすることが普通で、
と言うか実際はそうしか出来なくて、強制的にそうさせられるわけだが、
形式的には、ネットワークでもローカルファイルでもメモリ上のStringでも、
プログラミングモデル側からは全部読み書き出来る状態になってから制御が渡される。
(メモリ上に展開し終えてから渡されるイメージ、なおこれをRubyでは上手いこと遅延読み出しにしてたりするが)
CでI/Oを分離するにしても普通はそうするし、実際、Gitでもそうなってる。
でないと git log -L で全展開の倍ほどメモリ食うとかあり得ないし。
最終段のI/Oは普通はそうやって上位のコードと分離するもので、Gitもcat-fileでそうなってる。
ただ、それを交換出来ないので、テキストやDBに保存したい奴に対応出来てないだけ。
これはGitの構造の問題だよ。
それでsshを別に実装しますとか、かなり馬鹿げた方針だ。
少なくともJS知ってればそうはならない。
そこら辺の機能はGit以前から完全に機能してるんだよ。
> diffが作られてしばらくは、ソフトウェアコードや技術文書のマークアップのソース部分の変更箇所を比較する、
> プログラムのデバッグ出力の検証、ファイルシステム中のファイル一覧の比較といった使い方が一般的であった。
> ed用の出力により、ファイルへの一連の変更をひとまとめにしてファイル容量を節約するというアイデアが出てきた。
> Source Code Control System(SCCS)はそのようなアイデアを実装したものとして1970年代後半に実装がなされた。
> https://ja.wikipedia.org/wiki/Diff
だからそれはGitのアイデアでも全然無く、Git以前からdiffとedを組み合わせれば誰でも出来る物だった。
勿論diffの出力がキモだから出来るだけ--minimumなのは目指すとしても、
それはdiffを改善すべき話で、Git本体が対応する話ではない。
てかこの辺のソフトウェア階層の話が通じないところを見ると、割と階層無しの文化=本当にCしか知らない感じだな。
例えばJSとかでは、扱うデータの先がDBなのか、ローカルファイルなのか、メモリ上のStringなのかを
上位のコードは区別しないで済むようにコーディングすることが普通で、
と言うか実際はそうしか出来なくて、強制的にそうさせられるわけだが、
形式的には、ネットワークでもローカルファイルでもメモリ上のStringでも、
プログラミングモデル側からは全部読み書き出来る状態になってから制御が渡される。
(メモリ上に展開し終えてから渡されるイメージ、なおこれをRubyでは上手いこと遅延読み出しにしてたりするが)
CでI/Oを分離するにしても普通はそうするし、実際、Gitでもそうなってる。
でないと git log -L で全展開の倍ほどメモリ食うとかあり得ないし。
最終段のI/Oは普通はそうやって上位のコードと分離するもので、Gitもcat-fileでそうなってる。
ただ、それを交換出来ないので、テキストやDBに保存したい奴に対応出来てないだけ。
これはGitの構造の問題だよ。
それでsshを別に実装しますとか、かなり馬鹿げた方針だ。
少なくともJS知ってればそうはならない。
710デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2022/10/31(月) 21:09:37.44ID:J+3pjzxx0 Webの連中は馬鹿なのも事実だけど、馬鹿でも上手く行くように色々上手く出来てるのも事実なんだよ。
Cの連中は一度Webをやってみると凄く勉強になると思うよ。俺もそうだったし。
ただしWebはかなり糞なのも事実だが。
Cの連中は一度Webをやってみると凄く勉強になると思うよ。俺もそうだったし。
ただしWebはかなり糞なのも事実だが。
711デフォルトの名無しさん (ワッチョイ d9e4-Xmag)
2022/10/31(月) 21:15:30.28ID:GzQExg5g0712デフォルトの名無しさん (ワッチョイ d9e4-Xmag)
2022/10/31(月) 21:34:40.89ID:GzQExg5g0 BitKeeperを元にGitを実装したリーナスはBitKeeper以前のVCSを糞みたいに言ってるんだよね
https://ezoeryou.github.io/blog/article/2015-04-08-linus-git-interview.html
edとdiffを使ったようなVCSは眼中になかった
https://ezoeryou.github.io/blog/article/2015-04-08-linus-git-interview.html
edとdiffを使ったようなVCSは眼中になかった
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★10 [BFU★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」★2 [ぐれ★]
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 ★2 [蚤の市★]
- 【高市リスク】立民・小西洋之参院議員「高市総理がとんでもない安全保障オンチで外交オンチ」 [ぐれ★]
- 【野球】「地上波で放送しないWBC」は2軍選手中心で十分! 今こそネットフリックスに『ノー』を突き付けてほしい 江本氏が提言 [冬月記者★]
- 『DOWNTOWN+』会員数50万人突破で見えてきた 松本人志の“月収4ケタ万円”驚愕収入 [阿弥陀ヶ峰★]
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap599
- 福島競馬3回5日目
- こいせん 全レス転載禁止
- 巨専】
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1806
- とらせん IP
- 高市早苗、車のナンバーに37-77を愛用しているのが中国人に見つかる。盧溝橋事件の1937年7月7日を記念してか [624898991]
- 【悲報】高市政権関係者「閣僚には円安が何かよくわかってない人がいる」「総理もデメリットを理解してない」🤤 [359965264]
- 【悲報】国連、日本を「先進国」から「高所得国」へ再分類、事実上の格下げ [769931615]
- 【正義のミカタ】ほんこん さん「非核三原則は憲法に書いてない。核兵器持ったらええがな」 [201193242]
- 日本人「憲法9条があれば侵略されないって叫んでた売国左翼のゴミどもは今どんな気分?😂wwwwww」 [441660812]
- 勤続10年 年収310万 年休125日残業ほぼなし 有給100%通る
