SSH+Git Server on Windows - 在Windows下搭建Git服務器

Git是爲Linux Kernel開發而設計的版本控制系統,因此其與Linux的結合非常緊密。這使得它在Linux下使用起來非常方便。但是對於習慣Windows的人就不那麼友好了。雖然目前也有msys-git和TortorseGit這樣的項目,使得在Windows上使用Git變得越來越方便。但目前一個明顯的缺陷就是要把自己的版本庫共享給其他人時,很不方便。

在Linux下,由於有完美的SSH支持,因此clone遠程機器的版本庫只要:

git clone [email protected]:path/to/repo local_dir

就可以輕鬆搞定。那麼可以在Windows上配置好SSH,然後用和Linux下一樣的方式來使用git嗎?

可以的: 首先,需要安裝兩個工具:
1 - Git,Windows下的Git,還是msys-git比較好。
2 - SSH,可以用CopSSH,可以在Windows上啓動SSH服務,而不僅是客戶端。

安裝這兩個工具的過程沒有什麼難度。這裏假定Git是安裝在C:\Git目錄下,CopSSH安裝在C:\ICW目錄下。那麼當你安裝好以後,git已經可以從遠程得到版本庫,SSH也有一個用戶可以登錄了。假定這個用戶是git(CopSSH默認沒有任何用戶可以登錄,需要手動激活一個設好密碼的Windows用戶)。

這時,從其它機器用git用戶通過ssh登錄以後,可以執行ls,cd等基本命令。但是git任然不能運行。所以,也就還不能通過這個ssh來發布git版本庫了。要實現這個,需要做一些設置。

首先、需要在Git的安裝目錄裏找到cmd目錄,這裏就是C:\Git\cmd了。在裏面創建如下幾個文件:  git, git-upload-pack, git-upload-archive, git-receive-pack。這裏都沒有擴展名的,主要是給登錄後,由bash執行的。每個文件都只有一行,分別是:
git裏寫  git.cmd $*
git-upload-pack裏寫  git upload-pack $*
git-upload-archive裏寫  git upload-archive $*
git-receive-pack裏寫  git receive-pack $*

然後,就要給登錄後的用戶添加path了,保證上面添加的命令可以找到,並執行。找到CopSSH安裝目錄的etc下的profile文件。這裏就是C:\ICW\etc\profile了:在文件最後添加兩行

gitpath=`/bin/cygpath C:/Git/cmd`  #這裏不是引號,路徑是Git下的cmd,斜槓也要用Unix的習慣
export PATH="$PATH:$gitpath"

然後,用git用戶重新從SSH登錄。就可以使用git命令了。
例如創建一個測試庫:
mkdir testgit
cd testgit
git init
touch a b c
git add .
git commit -m "init"
然後,就可以在遠程clone這個庫了。假定這臺機器的ip是192.168.1.1。在另外一臺機器上,
git clone [email protected]:testgit testgit
就可以clone成功了。這樣Windows下的Git+SSH服務就做成功了!

最後,說明一下目前知道的限制:
1)不能用link,也就是所有的文件必須放在git用戶的home下。這個home的位置在 C:\ICW\home\git。
2)clone時不能用絕對路徑,只能寫相對於git用戶home的相對路徑。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章