上一篇終於搞定 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 同步了

git over proxy

發表迴響

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Verified by MonsterInsights