标题: windows下git的server搭建

时间: 2014-03-01 16:00:04

正文:

早前就尝试过 windows 下搭建,大概了解到其实不跑 git server , 也可以直接 clone , 也就是说 git 命令支持从本地文件 clone , 好像一般支持的几种方式分别为: 本地文件, http, ssh 。 因为 git 本身不提供用户认证功能,本地文件就没法保护了; http 协议可以靠 web server 比如 apache 本身的认证,ssh 就靠就不用说了。下面是用 http 的方式结合 apache 的认证来的相对简单。

之前一直使用 github + tortoiseGIT 来操作,机器已经有基本的 git 环境了,其实包括下面说的 msysgit 都是之前安装了的。

        转载请注明出处 http://blog.hickwu.com/posts/320 by Hick

首先是安装 msysgit , 这个没什么特别的,按照默认安装,安装路径建议不要带空格(比如我的 D:\program\Git )。有些教程建议安装过程中选择"Run git from the Windows Command prompt", 实际上这个没有十分的必要。

为了保证 D:\program\Git\libexec\git-core\git-http-backend.exe 能正常工作,需要把 D:\program\Git\bin\libiconv2.dll 拷贝到 D:\program\Git\libexec\git-core\ 下,这时候命令行直接跑起来能看到 500 错误如下:

D:\program\Git\libexec\git-core>git-http-backend.exe
Status: 500 Internal Server Error
Expires: Fri, 01 Jan 1980 00:00:00 GMT
Pragma: no-cache
Cache-Control: no-cache, max-age=0, must-revalidate
fatal: No REQUEST_METHOD from server

接着初始化一个库作为 server 端的,如果 git 命令不在 PATH 不能直接使用就跟我的这样:

F:\web>d:\program\Git\bin\git.exe init --bare admin

然后安装好 apache ,并修改配置文件 httpd.conf :

SetEnv GIT_PROJECT_ROOT F:/web SetEnv GIT_HTTP_EXPORT_ALL ScriptAliasMatch \ "(?x)^/(.*/(HEAD | \ info/refs | \ objects/(info/[^/]+ | \ [0-9a-f]{2}/[0-9a-f]{38} | \ pack/pack-[0-9a-f]{40}.(pack|idx)) | \ git-(upload|receive)-pack))$" \ "D:/program/Git/libexec/git-core/git-http-backend.exe/$1"

以上主要为了能走 http 访问 git 库。下边修改则是支持 http 认证,

 <Location /yyadmin/> 
     AuthType Basic
     AuthName "GIT Server"
     AuthUserFile "F:/web/.htpasses"
     Require valid-user
 </Location>

然后添加可以访问的用户:

d:\program\Apache2\bin\htpasswd.exe -bc f:\web\.htpasses 用户名 密码

然后重启 apache 就可以访问和 clone/pull/push了: http://localhost/admin

查看更多文章
分享到:


分享到: