上一篇終於搞定 git repository server, 利用簡單的設定就能不走 ssh 而能同步 git 裡的東西
但因為我人處理不知為什麼要管得要嚴不嚴, 網路亂管的公司裡
所以 git port 就被可惡的防火牆擋了, 為了這件事, 只好找翻牆的工具啦
估了很久, 發現一套很好用的軟體 connect.c
document 參考這篇, 超完整
FreeBSD 有 ports 可以用, net/proxy-connect, 這個就不用說明了
而 google 上找到一堆 git 利用 proxy 的方法, 但都不是我要的, 因為方法都太麻煩, 以下介紹則是利用 connect.c 來讓 git 翻牆
1. 把 connect.c 生成 connect <– 自行想辦法, 只要有 .c 檔, 之後利用 gcc 就可能生出來
2. 需要一個 shell script 當做 GIT_PROXY_COMMAND 來用, 這部份 google 上很多, 但也很雜, 可參考這篇
#!/bin/sh export CONNECT_USER='proxy username' export CONNECT_PASSWORD='proxy password' /usr/local/bin/connect -H http://proxy_ip:proxy_port $@ |
把它存成 gitgw.sh , 假設存在 /usr/local/bin/gitgw.sh
其中 CONNECT_USER, CONNECT_PASSWORD 是為了讓 http proxy 和 socks 都能共用, 要是有人想走 socks4 or socks5 的話, 變數不用改
若只想用 http proxy 的話, 可以改成 HTTP_PROXY_USER, HTTP_PROXY_PASSWORD, 這部份是參考上面那篇Document
3. 設定 GIT_PROXY_COMMAND 來讓 git 正式走 proxy
setenv GIT_PROXY_COMMAND /usr/local/bin/gitgw.sh |
以上是 tcsh 的用法, 其他的用法就請自行修改
4. 經過以上設定, git 就能正式利用 proxy 功能讓和 remote repository 同步了