blogこの広告は、90日以上更新していないブログに表示しています。Subversion分散SCMを使いたい!と思う今日この頃。仕事ではSVN(Subversion)を使っているのだが、ちょっとしたお試し編集をするためにブランチを作ることに抵抗がある。ブランチは欲しい、大きめな変更をコミット無しで行いたくない、やはり少しずつコミットして進めていきたい。変更が全て記録されてしまうのがいただけない。ログが残るのは良いことなのだが、本当に使うかどうか未知数な実験的プログラミングのログまで残したくない。使うと決まってから初めて残すようにしたいのだ。すまん、これまで一緒に仕事をしてきた人々よ。俺はこれまで「ログが残って困ることがなんかある?いらなきゃ無視すればいいだけなんだから、気にするな。ブランチでもなんでもバンバン作ってしまえ!」とうそぶいてきているわけだが...ハッタリかましてました!本当は俺も抵抗があるのだ。そこで、分散SCMだ。いうと、SVKがいまひとつ気に入らなかったのと、Git勉強中なので、この際git-svnだ。そんなわけで、使い方を覚えてみた。Gitには、git-svnというSVNと連携するための機能というかコマンドというかがある。インストールGitはMacPortsでインストールしたのだが、普通にgit-coreをインストールしてもgit-svnは有効になっていない。有効にするためには、次のようにする必要があった。+svnまたは、バイナリをダウンロードして自分でインストールすればOK.チェックアウトSVNリポジトリのクローンとなるローカルgitリポジトリを生成する。http://server:port/repo/projectオプション-sは、--stdlayout。tags/を採用していることを示している。これにより、gitのmasterブランチにtrunk/が割り当てられ、リモートブランチにはtrunk/と、branches/とtags/直下のディレクトリが設定されるようになる。-bオプションを利用することで、トランク、タグ、ブランチのパスを指定することも可能。コミットローカルリポジトリの更新内容をSVNリポジトリに反映。dcommitアップデートSVNリポジトリの更新内容をローカルリポジトリに取り込む。rebaseに当たる。pullしてもアップデートされないので注意。dcommit後者の場合、SVNリポジトリに.gitignoreが書き込まれるが、SVN利用者にいやがられなければそれでも。タグとブランチタグもブランチも、リモートブランチとして扱われている。v1_0トランクとブランチは同じ扱い、タグは「tags/タグ名」という名前に変更される。"SVNリポジトリにタグを作成する。clone時に指定したディレクトリ、例えば-sを使ったならtags/。v1_0"というコメントが自動的に設定される。"SVNリポジトリにブランチを作成する。clone時に指定したディレクトリ、例えば-sを使ったならbranches/。v1_0"というコメントが自動的に設定される。タグまたはブランチをチェックアウト初回のみ、こう(ローカルブランチを作成し、そのブランチにスイッチ)。v1_0二回目以降は、こう(スイッチするだけ)。my_v1.0この操作の後でdcommitしたら、当然ながらSVNリポジトリのブランチ(この場合branches/v1_0)に変更が反映される。ちなみに、複数のブランチへの更新を一気にdcommitすることはできない。dcommitすることを除けば、普通にgitを使う場合と同じ。俺がやりたいことは、たぶん次のような手順で実施するんだろうなぁ。trunkをチェックアウトして、そいつから自分の検証用のローカルブランチをつくって、好きにプログラミングする。...作ったプログラムが使い物にならないと判断して廃棄する場合、単にローカルブランチを削除する。mywork気に入って、trunkに取り入れたい場合は、マージしてdcommitし、用済みになったローカルブランチを削除する。myworkこれで、自分が好きに使えるブランチを自由に作成でき、気に入らなければなかったことにできるわけだ。Gitは学習コストこそ高いが、慣れると柔軟性が高いうえに高速で使いやすいSCMである。自分一人で使う(俺が扱えればいい)ので、とりあえず学習コストは考慮しなくていいから、SVNの代わりに使うことに問題は無い。SVNリポジトリに対してより細かい操作が必要になったら、素直にSVNクライアントを使えばいい。SVN側のブランチを反映させたローカルブランチを作成した場合、そいつとgit側で自分が作ったローカルブランチとを簡単に見分ける方法が無いのが問題。ネーミングルールを作ればいいか。SVNとの認証は、普通にSVNを使う場合と同様の手順になる。SVNの認証キャッシュ(~/.subversion/auth/以下のファイル)があればそれを使うし、無ければパスワードを聞いてくる。ここでちょっとした問題がある。Mac版SVNはバージョン1.4以降は認証キャッシュを~/.subversion/auth/svn.simpleに書くのではなく、Keychainを使うようになっている。前者はパスワードが平文で書かれるため、セキュリティ的に危なかったのだが、それが改善されたわけだ。git-svnを使用して認証すると、これが従来通りの平文キャッシュになってしまう。普通のSVNクライアントを使ってKeychain使用版のキャッシュを作っておいても、それを平文版キャッシュで上書きしてしまう。~/.subversion/auth/svn.simpleディレクトリのパーミッションに気をつけていれば(700にしておく)あまり問題はないと思うのだが、気持ち悪いなぁ。4」を書いたCapistranoでタスクの実行対象サーバを絞り込む方法GitをHTTP経由で使うときのパスワードを安全に扱いたい月別アーカイブはてなブログをはじめよう!idesakuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。