twitterこの広告は、90日以上更新していないブログに表示しています。2012-06-19gitリポジトリをホストするのにWebDAV使わないほうがいい共有gitリポジトリをホストする方法をググると、WebDAVを使ったやり方が結構出てくる。このやり方には明確なデメリットしか無いにもかかわらず、WebDAVを使ってホストする方法を紹介するページでは触れられていないことが多い。大した話ではないが、開発者が二度とひっかからないためにリポジトリのホストにWebDAVを使わないほうがいい理由を書いておく。WebDAVを通じてホストすると遅いWevDAVを通じてホストするとサーバサイドフックが起動しない遅い超遅い。ベンチマークを測ったわけではないが、sshでホストする場合と比べてcloneやpushやpullが3倍以上遅いのではないか。WebDAVでホストすると遅くなってしまうのには理由があって、sshでホストする場合とWebDAVでホストする場合とでは、そもそもの通信プロトコルが違うから。protocolという効率の悪い通信になるようだ。protocol)と言われます。固有のコードは何も必要としないからです。Gitレポジトリのレイアウトを推測することができます。http://git-scm.com/book/ja/ch9-6.html作業時にpushやpullがもたついたりするのは作業のリズムを壊してしまいがちだ。pushやpullは早くなければ開発者を妨害する。サーバサイドフックが起動しない遅いのは我慢すればなんとかなるかもしれないが、サーバサイドフックが一切起動しなくなるのは致命的だ。gitでは、各アクションごとにフックスクリプトを設定することができる。サーバサイドフックはその中でも共有リポジトリに対するアクションへのフックを設定できる。pushした時にメールやIRCで通知を流してくれるのはこれのおかげだ。複数人で開発する際に、pushの通知を受けとることは絶対必要だ。本番ブランチに対して誰かがpushしたことを通知して欲しい時が誰にでもきっと来る。WebDAVを使っている限りそのたぐいのことが本当に一切できない。HTTPを導入するかのどちらかだ。ssh経由でホストする場合は、開発者全員がsshでログインできるサーバに共有用のリポジトリを置くだけで良い。一度共有リポジトリを作った後は、ssh://user@hostname/path/to/foo.gitでcloneできる。initすればいいだけで簡単。--shared=true開発者が全員ログインできるサーバがない、gitリポジトリ用のサーバのユーザを増やしたくない、鍵認証したいが鍵の管理がめんどくさい、リポジトリごとにpushできる開発者を制限したい、などの場合は、gitosisやgitoliteなどの専用の管理ツールを使うとよい。gitosisやgitoliteなどのツールを利用すると、鍵と開発者の対応をサーバの一つのユーザ内で完結させた上でリポジトリやリポジトリのブランチごとにpushできる開発者を細かく制限できる。個人的にはブランチ単位で権限を細かく制御できるgitoliteがgitosisよりもおすすめ。HTTPを導入することでWebDAVによるホストの欠点を完全に隠すことができる。速度もssh経由に劣らないし、サーバサイドフックも起動する。HTTPという大仰な呼ばれ方だが、導入方法は単にgit-http-backendというCGIを共有gitリポジトリをホストするサーバに設置するだけだ。ユーザは今まで通りcloneしたりpushしたりできるので、エンド開発者がリポジトリのアドレスを変えたりしなければならないなどの移行作業がまったくない。HTTPの導入について書いてある。結論バージョン管理システムにかぎらず複数人で開発する際のインフラとなるものは、それがヘボければ開発者の作業を妨害するし、優れていれば開発者みんなを気持ちよくさせてくれる。»はてなブログをはじめよう!anatooさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。