[過去ログ] Git 19 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
100: (ワッチョイ b57b-3eqv) 2022/11/12(土)06:46 ID:h41UD2lS0(3/29) AAS
ちな、CodeOfConduct読んで、あいつら中の人か!ってのが分かったので俺的査定。

Avar Arnfjord Bjarmason: 今なんとか方向修正を試みてるように見える。上手く導ければ有能だが、果たして?
Christian Couder: 出てきてないので不明
Junio C Hamano: 休暇中?らしい (40)
Taylor Blau: 無能。ってか閻魔大王が全スルーするならいないのと同じ。ちゃんと門番やれ。

そういえばGitのコーディングルールはどこにあるのだ?
今回ほどの糞コードは、コーディングルールで引っかけて落とせるはずだが。
101
(5): (ワッチョイ b57b-3eqv) 2022/11/12(土)06:52 ID:h41UD2lS0(4/29) AAS
>>89,94,95
全部読んだ。なかなか面白かった。(89はコメントも全部読んだ)
君が冷やかしかマジかは分からないが、マジで要るんなら作ってみてもいい。
ただし今すぐ取りかかれるわけでもないし、全般的に考えて本年度末(3月末)位が現実的な目標になる。

今考えている構成をざっくり言うと以下

・Gitをゴミ箱/バケツ化するラッパ(フロントエンドのみ。バックエンドはGitで、Gitは別インストール必須)
・electronで作ってwindowsストアに配置(広告付き無料アプリ)
 十分売れてる限り保守してやんよ(その必要すらないほど単純なアプリだが)
・プロプライエタリで伽藍開発。バザールなんてとても無理。コードは俺が書くから、お前らは使い勝手をフィードバックしろ。
・GitBucket(仮称)、Gitと付けたら不味いのなら考え直す
・コンセプトは、「何も知らなくても使える『全自動完全履歴保持バケツ』」
 よって仕様は限りなく簡素化し、それ以上やりたければDBはgitだからgitアプリ使え、とする
・diffは取れるがmergeは直感的GUIがないので無理。が、主にバイナリを保存する連中には全く関係ないし。
・branchはディレクトリに割り当てて手動で。というより、git内にcommit履歴が保持されてないのでbranchの識別が出来ない。
102
(3): (ワッチョイ b57b-3eqv) 2022/11/12(土)06:54 ID:h41UD2lS0(5/29) AAS
実装するだけなら2週間程度で十分だが、

・electron使ったこと無いので調査に2週間ほどかかる
・アプリストアも広告付きのアプリも作ったことないので、これも2週間ほど調査必要
・仕様を練らないとろくな事にならない、
 Linusが2週間と言ってるのは実装であって、それ以前にずっといろいろVCS使ってきてるから仕様が熟成済みだっただけ。
・そもそも顧客がいるかどうか
・一応は他WindowsGitアプリを全部確認する必要がある。今tortoiseGit試しにインストールしてみたところ。

があるので、冷やかしでないのなら新しくスレ立てて様子見する。
スレタイには GitBucket(仮称)と、何か「Gitはもう諦めた系」「頑張らない系」の連中を集められる文言を入れたいが、何がいいか。
板はここかソフトウェア板だと思うが、他に候補があるか。
ただ対象ユーザーはここに来る連中ではなくガチのど素人なので、もっと全然違うところの方がいいかも?
 
スレタイ案:
A. もうGitBucket(仮称)でええやん。
B. GitBucket(仮称)使ってるからって、Gitが分からなかった訳じゃないんだからねっ!!!
C. GitBucket(仮称)計画中、Gitに疲れた奴集まれ
D. 日常のバックアップツールGitBucket(仮称)

冷やかしじゃない奴からの投票を受け付ける。
103
(5): (ワッチョイ b57b-3eqv) 2022/11/12(土)06:57 ID:h41UD2lS0(6/29) AAS
>>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を使う人も使わない人も問題ない)
104
(1): (アウアウウー Saa9-9aJV) 2022/11/12(土)09:27 ID:xzRuq+6da(1) AAS
electron 使うなら、ブラウザ上にOSのデスクトップ画面を再現するのと同じ事ができるだろう。
ゴミ箱/バケツのところでなくて、デスクトップに置いて管理されている事になっているファイルをコントロールできるようにして欲しい。
105
(1): (ワッチョイ 2514-H0Ic) 2022/11/12(土)09:30 ID:Cj/ueztB0(1/9) AAS
>>98
> Gitはパッチ適用ツールであって、本当に、パッチ書く側のサポートが全くない。
パッチ適用ツールはpatchコマンドっていうんだよ
gitはそれ以上のサポートがたくさんある
これ以上何がほしいいっていうんだよw
106
(1): (ワッチョイ 2514-H0Ic) 2022/11/12(土)09:31 ID:Cj/ueztB0(2/9) AAS
>>103
> 俺だったら、branchなんて、各ディレクトリにそのままマッピングする。
同じ名前のブランチが複数あることを想定してないね
ちょっと失格かな。
107: (ワッチョイ 2514-H0Ic) 2022/11/12(土)09:37 ID:Cj/ueztB0(3/9) AAS
>>103
> というわけでGitBucketは基本この方針でmasterに全ての履歴を数珠繋ぎ、
ああ、GitとGitHubの区別もついてなさそうだね
108
(1): (ワッチョイ 2514-H0Ic) 2022/11/12(土)09:39 ID:Cj/ueztB0(4/9) AAS
>>103
> branch切換で全部上書きで入れ替わるのは、頻繁に過去と現在を往復するにはいい仕様だが、普通の人には要らん。
branch切り替えで入れ替わるのはコミットしたものだけだよ
これは便利でコミットしてない設定ファイルやデータファイルなどは
そのまま残る

こういうことまで考えつかなかったでしょ?w
109: (ワッチョイ b57b-3eqv) 2022/11/12(土)10:59 ID:h41UD2lS0(7/29) AAS
>>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文字らしい)を越えると記録出来なくなる。
> 外部リンク:learn.microsoft.com
だからガチもん商用アプリではこの解は使えない。
(仮にルートに置いてもc:\の3文字は長くなるので、ユーザーファイルが合計258-260文字のパスになってるときに記録出来ない)
が、今回は、「そんな糞長いパスにするな」で終わり、諦める。(WARNINGは出す)
110: (ワッチョイ b57b-3eqv) 2022/11/12(土)11:00 ID:h41UD2lS0(8/29) AAS
てな話を仕様として詰める必要があって、つまり、

1. どういう機能が欲しいか
2. それはこの仕様(実装)でいけるか

みたいなこと。
ちょこちょこやるのはさておき、本格的にやるならスレ分けるべきだな、という話。
111
(1): (ワッチョイ b57b-3eqv) 2022/11/12(土)11:11 ID:h41UD2lS0(9/29) AAS
>>105
commit/rebase履歴の全保持と、commitのフィルタ機能だね。
記録側からみればゴミなcommitも、プログラマからみれば重要なんだよ。だからそれを見えなくする機能だね。
CSSでいうdisplay:noneの機能。
今は、「綺麗に清書して=プログラマには必要だったコミットも全部消して」提出しろ、になってるだろ。
これが無駄だし、プログラマ的には不快だ。
それは悪戦苦闘の記録であって、デグレードした場合に参照したい時もあるんだよ。消してるのは不味い。
ローカルだけにしろ、はその通りだが、今はローカルだけにも出来ない仕様だろ。(無駄にブロックチェーンしてるので)
112: (ワッチョイ b57b-3eqv) 2022/11/12(土)11:11 ID:h41UD2lS0(10/29) AAS
>>106
世界規模で勝手に開発してるLinuxならそうだろう。
しかし、ローカルファイルシステム、或いは共有ファイルシステムに於いては、当たり前だが「同じディレクトリ名」=「同一」なんだよ。
だからディレクトリ名が被って困る、なんて事はない。
そして、バックアップ的には、branchはパスが伸びた程度の意味しかないから、これで問題ない。
(git流のbranchの使い方をしてても、これで問題ない。
通常のファイルシステムでは、パス+ファイル名が同じなら同一と見なすが、
ここがgitではパス+ファイル名+ブランチ名になってるだけ。
branch自体の参照先も変えられる!と思うかもしれんが、それはユーザーがそうしたのであって、
確か○月○日頃の○○ブランチ内にそのファイルがあるはず、と思い出すのはユーザー責任だ。
いずれにしても何処かに記録はされてるから、あとは頑張って探せという仕様)
113: (ワッチョイ adc2-owoj) 2022/11/12(土)11:13 ID:inQx9iPN0(1/3) AAS
git関係ないけどWindows10 1607以降はMAX_PATH制限なくなってるんだな
114
(1): (ワッチョイ b57b-3eqv) 2022/11/12(土)11:13 ID:h41UD2lS0(11/29) AAS
>>108
知ってるぞ。
ただ、切り替わらなくてもいい共通ファイル類はその場合には .git 階層に置くんだよ。

というかね、gitが何故か「カレント主義」になってて、とにかく「カレントディレクトリ」なんだよな。
これは本当によく分からない。
俺がGitGUIで最初にやったのは、「Open repository ...」を探すこと、だからな。
無いから、「え?まさか?カレントで起動しないと駄目なのか?」でわざわざショートカット作り直して起動し直した。
普通そんなアプリ無い。この辺は、「いつも通りのアプリ」じゃないと駄目なんだよ。
115
(1): (ワッチョイ 1563-sfiH) 2022/11/12(土)11:26 ID:403mRijK0(1/9) AAS
>>101
仕様や開発グループがグダグダだと思っているものをバックエンドにするのか
「gitがグダグダだからできなかった」と言い訳して終わりそう

>>103
mergeのことは考えてないんだな
116: (ワッチョイ 4bbb-tcgO) 2022/11/12(土)11:28 ID:zxvXZjfz0(1/14) AAS
>>102
投票とかどうでもいいから早く別スレ行け
馬鹿向けのアプリは馬鹿だけが多数寄ってきて繁盛するからそっちで頑張れ
git は馬鹿には使えないことが理解できたんだろ
117
(1): (ワッチョイ 4bbb-tcgO) 2022/11/12(土)11:37 ID:zxvXZjfz0(2/14) AAS
>>103
ブランチにディレクトリを使うのは既に subversion がやって失敗した道だぞ
ファイル数やファイルサイズが大きくなるとブランチ切るのに時間とディスク容量がかかり過ぎる
過去話読んでも何も学ばないやつはゴミを再発明するよな
とはいえ、お前やお前が想定しているユーザー層はたいした規模のプログラム組まないだろうからゴミでも十分かもな、知らんけど
118
(2): (ワッチョイ b57b-3eqv) 2022/11/12(土)11:45 ID:h41UD2lS0(12/29) AAS
>>115
車輪の再開発はしないんだよ。
どこまで使えるか判断して、その範囲は使うし、それを超えた範囲は使わない。
(今の実態だと、git add 絶対パス、はほぼ確実にバグを踏むから使わない)
自分で作ればバグがない物が簡単に出来るわけでもないし。

> mergeのことは考えてないんだな
GUIでmerge、例えばドラッグアンドドロップでmergeは怖いだろ。
コピーするつもりがmergeされたら悲惨なことになる。
(コピーや移動と同じGUIにmergeをアサインしてはいけない)
だからmerge自体はgitアプリで明示的にやれ、という仕様。その方が安心だ。

そもそもバイナリはmerge出来ないし、
GitBucket使うような連中にはmergeなんてほぼ要らん。

てゆうかね、そもそもmergeが主な仕事ならgit使うべき。あれは完全にmerge特化型だから。
GitBucketのユーザーは、そのmergeのネタを作る側、つまりプログラマとかクリエーターとかだ。
管理側じゃなくて、管理される側。
119
(2): (ワッチョイ 4bbb-tcgO) 2022/11/12(土)11:59 ID:zxvXZjfz0(3/14) AAS
>>111
アホでやんの。マニュアル斜め読みしただけで実際に使用してないので本質が見えてないな
rebase する前に新しいブランチ切ってやれば
rebase前とrebase後の両方残せるという基礎の基礎すら理解できてないのか
普通はそうやって使うんだよ。マージも一緒。
ブランチが軽量で好きなだけ切れるので情報残したい数だけブランチを切ればいいだけだよ
rebase --keep-base みたいな使い方もあるけど基本が理解できてないやつは混乱するだけだろうな
120
(1): (ワッチョイ 1563-sfiH) 2022/11/12(土)11:59 ID:403mRijK0(2/9) AAS
>>118
× mergeが主な仕事ならgit使うべき。
○ mergeを使う可能性があるならgitを使うべき

長文君ソフト(仮)ではmergeのことを考えてないんだから

すでに書かれてるけど他のスレに行ってくれ
仕様の検討も含めてそっちでやればいいんだから
121
(1): (ワッチョイ b57b-3eqv) 2022/11/12(土)12:01 ID:h41UD2lS0(13/29) AAS
>>117
ああその失敗情報は有り難い。
ただ、そこは理論的に問題ない。

技術的には、Gitでもカレントを「上書き」するのだからコピーと同じだけのI/Oが必要であり、
I/Oバウンドの場合、GitでもSubversionでもその部分の処理時間は同じになる。
(Gitのbranch切換とSubversionのブランチ作成が同じI/O負荷)
そこで速度差が出るのだから、実際は、86で既に言ったとおり、Subversionが各ソースを「展開」するのが遅くて、
それはおそらく順方向履歴しか持ってないからだ。
(逆方向履歴持ってれば、commitは早くならないかもしれないが、branch切り出しはコピーと同速に出来る)

ここら辺はSubversionの基本アーキが腐ってるからだが、
この点GitBucketは中身Gitだから、コピーするだけで、結果的には本家Git(上書きするだけ)と同速だよ。

そのコピーが重い?
だったらbranch切換セレクタだけは付けるから、それで勝手に自前で管理しろ。
バックアップツールとしては、branchはパスが伸びただけの意味しかないからそうする、というのは112の通り。

コピーオンライトのファイルシステム、つまりハードリンクにする手もあるけど、これはユーザーが付いて来れないだろ。
ならコピー時間待たせた方がいい。
122
(1): (ワッチョイ b57b-3eqv) 2022/11/12(土)12:09 ID:h41UD2lS0(14/29) AAS
>>119
> rebase する前に新しいブランチ切ってやれば
そこはbranchではなくてタグだとは思うが、要はそれ、gcされないようにポインタ残してるだけだろ。
しかし開発しなくなったbranchは刈り取れ、というのが一般の使い方だろ。(それが推奨されてるように見える)

そもそもgcされないようにxxする、というのが間違ってるんだよ。
そんなところまでユーザーが密結合すべきではない。
普通にオススメ通りやったら、探せば何処かに履歴はあるよ、程度じゃないと。

まあ--keep-baseについては見てみるよ。
Bookの方が断然良かったのでman の方読むの止めてたから、知らなかった。
123: (ワッチョイ 4bbb-tcgO) 2022/11/12(土)12:11 ID:zxvXZjfz0(4/14) AAS
>>121
お前、作成の負荷と切り替えの負荷の区別ついてないだろ
実用上で問題になるのは作成の負荷、切り替えはディレクトリ方式の方が軽いけどそこは重要じゃない
124
(1): (ワッチョイ 4bbb-tcgO) 2022/11/12(土)12:15 ID:zxvXZjfz0(5/14) AAS
>>122
必要なものには後で探せるように名前をつけておく。
名前のないものはいらないものなので掃除の時に捨てる。
基本中の基本すら理解できないの?
125
(1): (ワッチョイ d55f-BvCT) 2022/11/12(土)12:18 ID:bWvYfJDZ0(1) AAS
Subversion のブランチ作成がファイル数やサイズで重くなるとか・・・
てきとうなこと言うやつが二人になってカオス。二人とも早く別スレに行くか黙るかしてくれ。
126
(1): (ワッチョイ 4bcf-IBSA) 2022/11/12(土)12:34 ID:ajB/boEg0(1/4) AAS
GitBucket をdisってんのかと思った。
その名前はもう使われてるから変えろバカ。
127
(4): (ワッチョイ b57b-3eqv) 2022/11/12(土)12:54 ID:h41UD2lS0(15/29) AAS
>>120
多分な、開発現場において「ファイル内の」mergeが日常ってのはあまりないと思うぞ。
それは各自が勝手にどのファイルをどういじってもいい、ということだから。

gitによって開発フローが変わった!ってのがこの辺かもしれんが、
普通は担当を振り分けて、結果的に
「この期間にこのファイルを触るのは○○だけ」
と交通整理される。
同時に変更する必要があれば、同じ奴に同時にやらせるだけ。(注文が増えるだけ)
そして各自が変更したファイルをかき集めて、くっつけて終わりだ。
お前らはこれもmergeと言ってる気がするが、
これは「更新日時が新しければ上書きする」だけの話で、手動でも楽勝だし、
プログラマはこれをmergeとは言わない。

プログラマが言う「ファイル内」のmergeが日常的に発生するかどうかはその部署のオペレーションによる。
(が、会社とか統制取れる場所でこれをする意味はないから、OSS以外ではほぼないと思うが)
128: (ワッチョイ b57b-3eqv) 2022/11/12(土)12:57 ID:h41UD2lS0(16/29) AAS
>>126
了解。考え直すよ。一度位ググるべきだったわ。
129: (ワッチョイ 4bbb-tcgO) 2022/11/12(土)13:00 ID:zxvXZjfz0(6/14) AAS
>>125
お前的には svn copy だけがブランチの作成で svn checkout は不要という主張したいの?
svn 的には checkout までが作成で、ブランチの切り替えは cd じゃないか。
オフトピなので svn の思想の話を続ける気はないけど、気になった。
1-
あと 873 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.022s