1 名前:login:Penguin [2007/12/16(日) 18:40:39 ID:GslAi8rs] ソースコード管理を行うバージョン管理システム、git について語ろう。 あの、リーナス・トーバルズだって、バージョン管理を始めたんだ。 www.kernel.org/pub/software/scm/git/ git チュートリアル (バージョン 1.5.1 以降用) www8.atwiki.jp/git_jp/pub/Documentation.ja/tutorial.html
804 名前:login:Penguin mailto:sage [2010/06/03(木) 22:34:29 ID:NRpX3vOy] git の branch コマンドは他のVCSみたいな、いわゆる枝(branch)を作るコマンドじゃないことを理解した方がいい。 単に自分のいる点に目印の旗を立ててるだけ。 commitやreset等で自分が動けば旗も移動する。
805 名前:login:Penguin mailto:sage [2010/06/03(木) 22:37:18 ID:2hMMbzRW] >>804 これの"create"は「作る」という事ではないのですか? $ man git-branch ... NAME git-branch - List, create, or delete branches
806 名前:login:Penguin mailto:sage [2010/06/03(木) 23:35:29 ID:k3O2NdDL] >>805 まあ論理的には「作る」と考えて良いんだけど、、、 内部的には複数のコミットから親として参照されてればそれはブランチと言える というぐらいで、特にbranchコマンドを使わなくても、ある履歴の途中の位置を checkoutして何かコミットすれば分岐になるし、commit --amend とかで やり直ししても以前のコミットと新しいコミットは分岐してる。 ただこの場合古いコミットは一見して行方不明になるけど、branchコマンドは そこに旗を立てて移動しやすかったり自動でGCされないようにしたりしてる感じ。 reset とかいろいろ試してるうちに内部構造が分かるとそう思うようになったかな。
807 名前:login:Penguin mailto:sage [2010/06/04(金) 00:02:52 ID:/Cv0eiGe] 各コミットは親を記憶してるから点から親を遡ることで枝を表現できる ただ子の記憶は無いから自分の子供がどうなったかを辿る簡単な手段は無い checkout等で移動してコミットが消えてるように見えるのはこの為
808 名前:login:Penguin mailto:sage [2010/06/04(金) 06:08:20 ID:PyuP7am3] >>805 自動更新してくれるタグとおもえばよいよ
809 名前:login:Penguin mailto:sage [2010/06/05(土) 11:36:02 ID:aEd5JAax] 実はCVSでも似たようなことになっているんだけど、 自動GCがないということと、リポジトリの実装がファイル 単位なのでcvs adminコマンドで実現しようとすると1コミット に関連するファイルに比例して面倒になる、という点が大きく違う。
810 名前:login:Penguin mailto:sage [2010/06/05(土) 20:57:10 ID:zknULthJ] git svn clone すると Using higher level と言われて取ってこれないんですが、 どうしたらいいんでしょうか? $ git svn clone --prefix svn/ -s svn+ssh://xxx/var/svn/project Initialized empty Git repository in /Users/alice/src/project/.git/ Using higher level of URL: svn+ssh://xxx/var/svn/project => svn+ssh://xxx/var/svn error: git-svn died of signal 13 svn ls すると見えてます。svn co もできます。 $ svn ls svn+ssh://xxx/var/svn/project branches/ tags/ trunk/ バージョン $ git --version git version 1.7.1 試しにローカルに作ったsvnリポジトリに対しては、リポジトリ内のサブディレクトリに 相当するプロジェクトを同様のコマンドで取ってこれます。 $ git svn clone --prefix svn/ -s file:///var/svn/project2 → 成功
811 名前:810 mailto:sage [2010/06/05(土) 23:35:57 ID:zknULthJ] 試行錯誤してたらローカルのsvnリポジトリに対してでも svn+ssh だと失敗 git svn clone --prefix svn/ -s file:///var/svn/project2 → 成功 git svn clone --prefix svn/ -s svn+ssh://localhost/var/svn/project2 → 失敗 git svn clone -s svn+ssh://localhost/var/svn/project2 → 失敗 git svn clone svn+ssh://localhost/var/svn/project2 → 失敗 git svn clone svn+ssh://localhost/var/svn/project2/trunk → 成功 もしかしてssh経由だと最後の方法しかダメ?