2009-03-26(木) [長年日記]
■ Corkscrewでgitのproxy越え(その2)
先日のトライで、「git:~」なリポジトリに関してはアクセスできるようになったが、GitHubではpullなどの操作はsshを経由するので×なことが判明。逃げ道を探す。
環境変数ではなくgit configを使う
まず、proxy経由でのアクセスを指示するのに、環境変数はよくないという指摘をもらったので、正統派のgit configを使って指定する。
git config --global core.gitproxy 'git-proxy for github.com'
core.gitproxyではproxy越え用のコマンドと、それを使うドメインを指定する。普通、proxy指定ではproxyを使わないドメインを除外指定するけど、こっちは使うドメインを指定するのだな。用途からすると正しいかも。
当面あらゆる外部リポジトリはGitHubの予定なので、面倒だから--globalを指定した。これでいろんなプロジェクトで指定して回らなくて済む。別のサービスが増えるようなことになったら、リポジトリごとに指定しよう。
GitHubにproxy経由でsshアクセス
sshを使う場合は通常「git@github.com:USER/REPOS.git」、つまり「github.com:22」へアクセスするのだが*1、HTTP/HTTPSしか通さないproxyのために、ちゃんと「ssh.github.com:443」が用意されている(参考:Access GitHub repositories from work (take that, firewall!).)。
ということで、(「git@github.com:USER/PROJECT.git」というURLをコピペして使えるように)~/.ssh/configにちょっと仕掛けを入れればいい:
Host github.com HostName ssh.github.com Port 443 ProxyCommand corkscrew YOUR_PROXY_HOST YOUR_PROXY_PORT %h %p
これでいけるはず:
% git clone git@github.com:tdtds/rubbs.git Initialized empty Git repository in /home/sho/src/rubbs/.git/ remote: Counting objects: 34, done. remote: Compressing objects: 100% (34/34), done. remote: Total 34 (delta 4), reused 0 (delta 0) Receiving objects: 100% (34/34), 38.41 KiB, done. Resolving deltas: 100% (4/4), done. %
おk!
*1 gitというアカウントを指定しているということは、GitHub上のユーザは全員同じアカウントで、公開鍵だけで識別されているということか。
2009-03-25(水) [長年日記]
■ だいたいgitが使えるようになった。またはRuBBSとmobilerをGitHubへ
Git入門のチュートリアルをひと通り読んだあとは、ネット上で日本語情報を軽く漁るという、系統だった学習とはとても言えない(でもいつも通りの)手法でだいたいの雰囲気はわかった。というか、GitHubで都度つどに出てくるヘルプが優秀で、その通りにコマンドをツッコむと、だいたいしたいことができるというのは、なかなかすごい。今回いちばん感心したのはGitHubのユーザビリティだったりして。
というわけで、spc.gr.jpの閉鎖にともなって移転先のなかった(しかしすでに歴史的意味しかなさそうな)古いプロジェクトで練習した。RuBBSとmobiler。自宅サーバにあったsvnリポジトリはすでに救出不能なので、最新のパッケージを入れて、READMEの文字コードをUTF-8にした程度だけど(GitHubはREADMEファイルを見つけて勝手に表示してくれるので)。
あとは人サマのリポジトリをcloneして、修正をpushしたりpullしてもらったりするあたりが未体験だけど、全リポジトリが対等なSCMだから勝手は同じだろう。
実際使ってみて、Linusが「ソース管理というよりはパッチ管理」を目指して作ったというのがよくわかった。確かにパッチのやり取りって、従来のSCMではシステム化されていない泥臭い領域だったしなぁ。これは確かに(特にOSS開発では)便利な方式だ。Gitのよさがちょっとわかったよ。
2009-03-24(火) [長年日記]
■ さくらインターネットにgitを入れたメモ
昨日のSubversionに比べて依存関係がないのでとても楽。
% wget http://kernel.org/pub/software/scm/git/git-1.6.2.tar.gz % tar zxf git-1.6.2.tar.gz % cd git-1.6.2 % ./configure --prefix=$HOME --without-tcltk % gmake && gmake install
◆ さく [bitbucketなんかもsshアカウントはhg共通で、鍵で識別してますね。]
◆ ただただし [公開鍵をDBに入れちゃえば、ユーザ管理が楽ですしね。賢いな。]