git windows伺服器配置

z3642214發表於2011-07-26

軟體下載地址:
msysgit 當前版本1.7.3.1:http://code.google.com/p/msysgit/downloads/list
copssh 當前版本4.0.2:http://www.itefix.no/i2/copssh
tortoisegit 當前版本1.6.2.0:http://code.google.com/p/tortoisegit/downloads/list
WinSCP 當前版本4.2.9:http://winscp.net/

在安裝之前確保以前安裝的殘渣都被清乾淨。
(例如安裝後的檔案,Openssh SSHD服務,SvcCOPSSH使用者,sshd使用者,C:git_shell_ext_debug.txt,C:Documents and SettingsSvcCOPSSH 等等)

伺服器安裝 msysgit 和 copssh
客戶端安裝 msysgit,tortoisegit可選,WinSCP可選

msysgit安裝時選擇了”Checkout as-is,commit as-is”
tortoisegit安裝時選擇了”TortoisePLink”

服務端配置:
a. 在 選單開始程式CopsshCOPSSH Control PanelStatus 中,確保Service is running
此Service對應著Openssh SSHD服務,有問題的話自己去看看,一般都是修改了密碼導致此服務啟動失敗
控制檯下輸入 netstat -an,應該看到 0.0.0.0:22

b. 在 選單開始設定控制皮膚管理工具計算機管理本地使用者和組使用者 增加 git000
密碼”git000″
使用者不能更改密碼
密碼永不過期
本地路徑 D:sourcesvar
(應該去掉“隸屬於 Users”,使之許可權最小。然後在允許此使用者操作的目錄上點右鍵,選擇“屬性安全”,精確控制此使用者對此目錄的許可權。)

c. 在 選單開始程式CopsshCOPSSH Control PanelUsersAdd 增加 git000
Access type我選擇linux shell and sftp,因為我覺得sftp也是個好東西
(注意,域使用者可以加入,但死活都說密碼不對,這個bug浪費了我一天時間)
可以開啟C:Program FilesICWetcpasswd檔案看看,裡面有使用者和使用者對應的目錄,比如
git000 對應著 /cygdrive/d/sources/var,以後想修改時可以直接修改此檔案

d. 拷貝 C:Program FilesGit 中的 libiconv2.dll git-upload-pack.exe git-upload-archive.exe git-receive-pack.exe git.exe 到 C:Program FilesICWbin 中
(有更優雅的解決方法,但我沒試驗成功,因此就直接拷貝算了)
(優雅的解決方法:
編輯C:ICWetcprofile檔案,
syspath=`/bin/cygpath -S`
winpath=`/bin/cygpath -W`
gitpath1=`/bin/cygpath “C:/Program Files/Git/bin”` #用反斜槓
gitpath2=`/bin/cygpath “C:/Program Files/Git/libexec/git-core”` #用反斜槓
export PATH=”/bin:$syspath:$winpath:$gitpath1::$gitpath2″
在 選單開始程式CopsshStart a Unix BASH Shell 中輸入 echo $PATH 看看路徑對不對;
然後再輸入git-upload-pack.exe,應該能找到此檔案。
但是,git啟動時並不去呼叫profile,所以
編輯C:Program FilesICWhomegit000.bashrc檔案,
gitpath1=`/bin/cygpath “C:/Program Files/Git/bin”` #用反斜槓
gitpath2=`/bin/cygpath “C:/Program Files/Git/libexec/git-core”` #用反斜槓
export PATH=”$PATH:$gitpath1:$gitpath2″
但還是屁用沒有

e. 在 選單開始程式CopsshStart a Unix BASH Shell 中輸入
cd bin
ssh git000@xp19.tools.net
git000@xp19.tools.net’s password: git000
$ cd ~
$ ls
顯示 D:sourcesvar 的內容
$ cd /
$ ls
顯示 C:Program FilesICW 的內容
這說明用SSH登陸成功
$ exit
$ exit
(可以看出以這種方式登入時,根目錄是C:Program FilesICW,工作目錄是D:sourcesvar)

f. 到D:sources中建立了一個abc目錄,在abc目錄中又建了一個a檔案
在abc目錄內點右鍵,選擇Git Bash,輸入
git –bare init
這樣就在伺服器上建立了一個空倉
在D:sourcesabc上點右鍵,選擇“屬性安全”,加入git000使用者,精確控制此使用者對此目錄的操作許可權……
(客戶端用git登入時,根目錄將認為是d:,工作目錄是D:sourcesvar)

客戶端操作:
a. 在F盤中建立test目錄,點右鍵,選擇 Git Bash,然後輸入
$ git clone -v git000@xp19.tools.net:/abc abc
失敗
$ git clone -v file://git000@xp19.toold.net:/abc abc
失敗,竟然將C:/Program Files/Git/作為根目錄

b. 安裝tortoisegit,在F盤中建立test目錄,點右鍵,選擇 Git Clone,然後輸入
ssh://xp19.tools.net/sources/abc,按確定,輸入使用者git000,輸入使用者git000
成功
在abc上建立Branch,名為123(右鍵,TortoiseGitCreate Branch)
成功(看起來像沒有任何反應,但相應的選單有了。右鍵,選擇Git Branch,就能看到)
修改f:testabca檔案,在f:testabc上點右鍵,選擇Git Commit->”master”
成功
右鍵,選擇TortoiseGitPush
成功
換個地方重新下載,a檔案是修改後的內容,說明剛才的Push操作是成功的

c. TortoiseGit的設定
設定TortoiseGitSettingsGeneralMSysGit中設定Git.exe所在路徑,假如你更改了git的安裝位置,就需要修改此處
TortoiseGitSettingsGitConfig中設定使用者資訊,提交時必須設定

d. 如果你還想使用 sftp
安裝WinSCP後,開啟WinSCP,主機名輸入 xp19.tools.net,使用者名稱 git000,密碼 git000,然後點選登入

其它:
procexp.exe和Procmon.exe是兩個免費工具,可以從M$網站上下載到。
當刪除某個檔案時總是報此檔案正在被使用,開啟procexp.exe,選單:FindFind handle or dll,然後輸入檔名,點search後就可以看出到底是誰在使用這此檔案。
當用git下載檔案時總是失敗,在伺服器上開啟Procmon.exe,監控一下git-upload-pack.exe到底在哪兒找檔案。
附上git的關係圖:



相關文章