Proxy環境でもGithubを使用したい

Jenkinsのソースをビルドしたいというきっかけから、Githubを使用することになったのですが、
Proxy環境でもなんとか使用できないかなと思いはじめました。
ちょこっと検索すると同じようなことを思っている方々が多数いらっしゃるようで、
すぐにnobeansさんの日記(id:nobeans:20090520)にたどり着くことが出来ました。
私もconnect.cを使用する方法を実践してみました。


connect.cの作者の方()のページと思われるサイトが以下にあります。
http://bent.latency.net/bent/git/goto-san-connect-1.85/src/connect.html
上のほうのリンクにMSVCでコンパイル済みのWindows用バイナリがありましたので、こちらを利用させて頂きました。
.ssh/configの設定などは、すっかりnobeansさんの日記を参考にさせて頂きました。
設定を行うことでGithub上の自分の公開プロジェクトをローカルへ複製(clone)することが可能になりました。


暫くしていると、fork元のリポジトリが更新され、それらをforkした自分のリポジトリに反映させたくなると思います。
Githubのヘルプ(http://help.github.com/fork-a-repo/)にあるように

git remote add upstream git://github.com/jenkinsci/jenkins.git
git fetch upstream

と実行すると、以下のようになり実行できません。

どうやらGithub上にある自分のリポジトリをローカルに複製(clone)する動作と
Github上のupstreamに指定したリポジトリの変更を自分のリポジトリにマージする動作は
違うようで、Proxy環境内にいると難しいようです。


ローカルに複製する処理は、sshを使用するのでconnect.cで対応できました。
git://〜で始まる処理は、gitプロトコルを使用するとのことでport9418を使用するらしいのです。
ところが、GithubのヘルプにSmart Http Supportというページ(https://github.com/blog/642-smart-http-support)があって
そこからPro Git blogに飛べる(http://progit.org/2010/03/04/smart-http.html)んですが、よ〜く読んでみると
gitプロトコルの代わりにhttpプロトコルが使用できるようなことが書いてあります。


試してみました。

git config --global http.proxy "http://XX.XX.XX.XX:YYYY"
git remote add upstream https://github.com/jenkinsci/jenkins.git
git fetch upstream

今度は成功しました!
現在は、普通にhttp/https経由でgitコマンドが発行できるのですね。