git windows服务器配置
软件下载地址:
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/
在安装之前确保以前安装的残渣都被清干净。
(例如安装后的文件,OpensshSSHD服务,SvcCOPSSH用户,sshd用户,C:\git_shell_ext_debug.txt,C:\Documents andSettings\SvcCOPSSH 等等)
服务器安装 msysgit 和 copssh
客户端安装 msysgit,tortoisegit可选,WinSCP可选
msysgit安装时选择了"Checkout as-is,commitas-is"
tortoisegit安装时选择了"TortoisePLink"
服务端配置:
a. 在 菜单\开始\程序\Copssh\COPSSH Control Panel\Status中,确保Service is running
此Service对应着OpensshSSHD服务,有问题的话自己去看看,一般都是修改了密码导致此服务启动失败
控制台下输入 netstat -an,应该看到 0.0.0.0:22
b. 在 菜单\开始\设置\控制面板\管理工具\计算机管理\本地用户和组\用户 增加git000
密码"git000"
用户不能更改密码
密码永不过期
本地路径 D:\sources\var
(应该去掉“隶属于Users”,使之权限最小。然后在允许此用户操作的目录上点右键,选择“属性\安全”,精确控制此用户对此目录的权限。)
c. 在 菜单\开始\程序\Copssh\COPSSH Control Panel\Users\Add 增加 git001
Accesstype我选择linux shell andsftp,因为我觉得sftp也是个好东西
(注意,域用户可以加入,但死活都说密码不对,这个bug浪费了我一天时间)
可以打开C:\ProgramFiles\ICW\etc\passwd文件看看,里面有用户和用户对应的目录,比如
git000 对应着/cygdrive/d/sources/var,以后想修改时可以直接修改此文件
d. 拷贝 C:\Program Files\Git\ 中的 libiconv2.dll git-upload-pack.exegit-upload-archive.exe git-receive-pack.exe git.exe 到 C:\Program Files\ICW\bin中
(有更优雅的解决方法,但我没试验成功,因此就直接拷贝算了)
(优雅的解决方法:
编辑C:\ICW\etc\profile文件,
syspath=`/bin/cygpath-S`
winpath=`/bin/cygpath -W`
gitpath1=`/bin/cygpath "C:/ProgramFiles/Git/bin"` #用反斜杠
gitpath2=`/bin/cygpath "C:/ProgramFiles/Git/libexec/git-core"` #用反斜杠
exportPATH="/bin:$syspath:$winpath:$gitpath1::$gitpath2"
在 菜单\开始\程序\Copssh\Start aUnix BASH Shell 中输入 echo $PATH看看路径对不对;
然后再输入git-upload-pack.exe,应该能找到此文件。
但是,git启动时并不去调用profile,所以
编辑C:\ProgramFiles\ICW\home\git000\.bashrc文件,
gitpath1=`/bin/cygpath "C:/ProgramFiles/Git/bin"` #用反斜杠
gitpath2=`/bin/cygpath "C:/ProgramFiles/Git/libexec/git-core"` #用反斜杠
exportPATH="$PATH:$gitpath1:$gitpath2"
但还是屁用没有
)
e. 在 菜单\开始\程序\Copssh\Start a Unix BASH Shell 中输入
cd bin
[email protected]
[email protected]'s password: git000
$ cd ~
$ls
显示 D:\sources\var 的内容
$ cd /
$ ls
显示 C:\Program Files\ICW的内容
这说明用SSH登陆成功
$ exit
$ exit
(可以看出以这种方式登录时,根目录是C:\ProgramFiles\ICW,工作目录是D:\sources\var)
f. 到D:\sources\中建立了一个abc目录,在abc目录中又建了一个a文件
在abc目录内点右键,选择Git Bash,输入
git--bareinit
这样就在服务器上建立了一个空仓
在D:\sources\abc上点右键,选择“属性\安全”,加入git000用户,精确控制此用户对此目录的操作权限……
(客户端用git登录时,根目录将认为是d:\,工作目录是D:\sources\var)
客户端操作:
a. 在F盘中创建test目录,点右键,选择 Git Bash,然后输入
$ gitclone -v [email protected]:/abc abc
失败
$ git clone -vfile://[email protected]:/abc abc
失败,竟然将C:/Program Files/Git/作为根目录
b. 安装tortoisegit,在F盘中创建test目录,点右键,选择 GitClone,然后输入
ssh://xp19.tools.net/sources/abc,按确定,输入用户git000,输入用户git000
成功
在abc上创建Branch,名为123(右键,TortoiseGit\CreateBranch)
成功(看起来像没有任何反应,但相应的菜单有了。右键,选择GitBranch,就能看到)
修改f:\test\abc\a文件,在f:\test\abc上点右键,选择GitCommit->"master"
成功
右键,选择TortoiseGit\Push
成功
换个地方重新下载,a文件是修改后的内容,说明刚才的Push操作是成功的
c.TortoiseGit的设置
设置TortoiseGit\Settings\General\MSysGit中设置Git.exe所在路径,假如你更改了git的安装位置,就需要修改此处
TortoiseGit\Settings\Git\Config中设置用户信息,提交时必须设置
d. 如果你还想使用 sftp
安装WinSCP后,打开WinSCP,主机名输入 xp19.tools.net,用户名 git000,密码git000,然后点击登录
其它:
procexp.exe和Procmon.exe是两个免费工具,可以从M$网站上下载到。
当删除某个文件时总是报此文件正在被使用,打开procexp.exe,菜单:Find\Findhandle ordll,然后输入文件名,点search后就可以看出到底是谁在使用这此文件。
当用git下载文件时总是失败,在服务器上打开Procmon.exe,监控一下git-upload-pack.exe到底在哪儿找文件。
附上git的关系图: