2012年(158)
分类: C/C++
2012-11-26 15:52:08
git windows服务器配置
软件下载地址:
msysgit 当前版本1.7.3.1:
copssh
当前版本4.0.2:
tortoisegit 当前版本1.6.2.0:
WinSCP
当前版本4.2.9:
在安装之前确保以前安装的残渣都被清干净。
(例如安装后的文件,Openssh
SSHD服务,SvcCOPSSH用户,sshd用户,C:\git_shell_ext_debug.txt,C:\Documents and
Settings\SvcCOPSSH 等等)
服务器安装 msysgit 和 copssh
客户端安装 msysgit,tortoisegit可选,WinSCP可选
msysgit安装时选择了"Checkout as-is,commit
as-is"
tortoisegit安装时选择了"TortoisePLink"
服务端配置:
a. 在 菜单\开始\程序\Copssh\COPSSH Control Panel\Status
中,确保Service is running
此Service对应着Openssh
SSHD服务,有问题的话自己去看看,一般都是修改了密码导致此服务启动失败
控制台下输入 netstat -an,应该看到 0.0.0.0:22
b. 在 菜单\开始\设置\控制面板\管理工具\计算机管理\本地用户和组\用户 增加
git000
密码"git000"
用户不能更改密码
密码永不过期
本地路径 D:\sources\var
(应该去掉“隶属于
Users”,使之权限最小。然后在允许此用户操作的目录上点右键,选择“属性\安全”,精确控制此用户对此目录的权限。)
c. 在 菜单\开始\程序\Copssh\COPSSH Control Panel\Users\Add 增加 git001
Access
type我选择linux shell and
sftp,因为我觉得sftp也是个好东西
(注意,域用户可以加入,但死活都说密码不对,这个bug浪费了我一天时间)
可以打开C:\Program
Files\ICW\etc\passwd文件看看,里面有用户和用户对应的目录,比如
git000 对应着
/cygdrive/d/sources/var,以后想修改时可以直接修改此文件
d. 拷贝 C:\Program Files\Git\ 中的 libiconv2.dll git-upload-pack.exe
git-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:/Program
Files/Git/bin"` #用反斜杠
gitpath2=`/bin/cygpath "C:/Program
Files/Git/libexec/git-core"` #用反斜杠
export
PATH="/bin:$syspath:$winpath:$gitpath1::$gitpath2"
在 菜单\开始\程序\Copssh\Start a
Unix BASH Shell 中输入 echo $PATH
看看路径对不对;
然后再输入git-upload-pack.exe,应该能找到此文件。
但是,git启动时并不去调用profile,所以
编辑C:\Program
Files\ICW\home\git000\.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. 在 菜单\开始\程序\Copssh\Start a Unix BASH Shell 中输入
cd bin
ssh
git000@xp19.tools.net
git000@xp19.tools.net's password: git000
$ cd ~
$
ls
显示 D:\sources\var 的内容
$ cd /
$ ls
显示 C:\Program Files\ICW
的内容
这说明用SSH登陆成功
$ exit
$ exit
(可以看出以这种方式登录时,根目录是C:\Program
Files\ICW,工作目录是D:\sources\var)
f. 到D:\sources\中建立了一个abc目录,在abc目录中又建了一个a文件
在abc目录内点右键,选择Git Bash,输入
git
--bare
init
这样就在服务器上建立了一个空仓
在D:\sources\abc上点右键,选择“属性\安全”,加入git000用户,精确控制此用户对此目录的操作权限……
(客户端用git登录时,根目录将认为是d:\,工作目录是D:\sources\var)
客户端操作:
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(右键,TortoiseGit\Create
Branch)
成功(看起来像没有任何反应,但相应的菜单有了。右键,选择Git
Branch,就能看到)
修改f:\test\abc\a文件,在f:\test\abc上点右键,选择Git
Commit->"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\Find
handle or
dll,然后输入文件名,点search后就可以看出到底是谁在使用这此文件。
当用git下载文件时总是失败,在服务器上打开Procmon.exe,监控一下git-upload-pack.exe到底在哪儿找文件。
附上git的关系图: