软件下载地址:
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的关系图: