herokuのGitをProxy越しに使う

git clone

heroku便利ですね。ただでいろいろなフレームワークを使ったアプリケーションを試すことができます!Postgresも使えるし。

proxyでsshなどが許可されていない場合にgitを使おうとするとタイムアウトでうまくいかない場合があります

$ heroku git:clone -a APPNAME
Cloning from app 'APPNAME'...
Cloning into 'APPNAME'...
ssh_exchange_identification: read: Operation timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

proxy環境下だとHTTPくらいしか許可されていないのでHTTPでアクセスするオプションをつけることにします

$ export HTTPS_PROXY=http://proxy:port/
$ export HTTP_PROXY=http://proxy:port/
$ heroku git:clone -a APPNAME --http-git
Cloning from app 'APPNAME'...
Cloning into 'APPNAME'...
remote: Counting objects: 137, done.
remote: Compressing objects: 100% (131/131), done.
remote: Total 137 (delta 48), reused 0 (delta 0)
Receiving objects: 100% (137/137), 1.54 MiB | 642.00 KiB/s, done.
Resolving deltas: 100% (48/48), done.
Checking connectivity... done.

結構探したのですが、実はマニュアルに書いていました

https://devcenter.heroku.com/articles/http-git

git push

続いてgit pushです

$ git add .
$ git commit
[master c6abc8c] sample comment
 1 file changed, 1 insertion(+)
$ git push heroku master
fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

こんな感じでエラーになります。http用に設定してやります

$ git remote add heroku https://git.heroku.com/APPNAME.git
$ git push heroku master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 258 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
..

これだけ。簡単ですね

ちなみにHTTPでもherokuのgitにアクセスできます

$ git clone https://git.heroku.com/APPNAME.git

追記 20141226

どうもgit config –global http.proxy でPROXYを設定していると

could not resolve proxy ...

というエラーが出る場合があるようですが、この場合には~/.gitconfigの設定を削除すれば良いようです