16boke - 一路博客

基于GitStack搭建本地的Git中心服务器

基于GitStack搭建Git中心服务器
在Git常用命令的使用情景中提到过多人协作的项目往往是需要一个中心服务器来同步多人之间的工作成果,另外,最终的工作成果通常也是中心服务器上的代码为准(为了项目管理的需要),因此,备份时往往需要对中心服务器上的仓库进行刻盘。
中心服务器上创建的项目仓库一般为裸仓库(没有工作目录),且需要为项目开发人员设置访问和操作中心服务器上仓库的权限(访问、读、写)。
本文将介绍如何使用开源软件GitStack在Windows上搭建Git中心服务器。
工具列表:
服务器端:GitStack 1.4.1,GitStack中已经集成了Git,可以不用再独立安装msysgit
客户端:msysgit 1.7.10
下载并安装GitStack
到其官方网站上下载最新版的GitStack 2.3.6。
安装文件有100M,要注意的是,目前GitStack只支持下面几个系统(不支持Windows XP):
Windows Server 2008
Windows Server 2008 R2
Windows Vista
Windows 7
另外,GitStack是一个新的开源软件(可以看看release的历史),目前有些功能可能还不是很完善,文档也不是很全面,好在GitStack并不复杂。
安装和普通的Windows软件一样,双击安装包自动进行安装,要注意的是最好其安装路径中不要包括空格,所以不建议安装到C:\Program Files下,默认是安装到C:\GitStack下。
安装好GitStack后,下面主要就是配置GitStack和仓库管理。
提醒一下,只需要在服务器上安装GitStack即可,其他的客户机上是不要安装的。安装好GitStack后,可以在任意机器上通过浏览器登录到Git服务器上(当然实际上只有仓库的管理员才有权限登录)。
GitStack的配置
在服务器上,可以通过开始菜单找到GitStack打开,也可以直接打开浏览器,在地址栏里输入http://localhost/gitstack/打开登录界面。
另外,也可以通过server机的IP地址来登录,如server的IP地址为:192.168.0.105,则可以直接在浏览器的地址栏中输入http://192.168.0.105/gitstack/打开登录界面(注意在客户机上只能使用这种方式来打开登录界面,通过ipconfig可以查看本机的IP地址)。
初始状态下,默认的登录账户为admin,登录密码也为admin。管理员登录后可在Settings->General中修改admin的登录密码。
勾选Enable web based repository browsing选项开启在浏览器中直接查看Git仓库的内容。
另外还有两个Repositories和Users & Groups两个界面,其中在Repositories中可以在服务器上创建项目的裸仓库,直接输入仓库名(如输入ProjectRepos),然后点击Create按钮即可(会在服务器C:\GitStack\repositories下创建一个ProjectRepos.git裸仓库),创建好的仓库也会在Repositories中显示出来,并显示出该仓库的clone的地址git clone http://localhost/ProjectRepos.git,之后就可以在Action下通过浏览器查看仓库、添加用户/Group并设置用户/Group权限等。
在Users & Groups中,Users下是用来创建用户或修改用户密码等,每个用户对应一个Username和其Password,已有的用户会在上面的列表中显示出来;Groups下用于创建组,可以在每个Group下添加或移除用户,已有的Group也会在列表中显示出来。
牛刀小试
上述已经在服务器上创建了一个ProjectRepos.git裸仓库,现在我们在服务器上来克隆该仓库。
cd d:
mkdir project
cd project
git clone http://192.168.0.105/ProjectRepos LocalRepos 或 git clone http://localhost/ProjectRepos LocalRepos 或 git clone http://localhost:80/ProjectRepos LocalRepos
默认的是80端口,可以修改为其他端口。 这里,会提示输入用户名和密码,注意输入的用户名和密码不会被显示出来。
cd LocalRepos 进入了工作目录,我们可以添加文件到工作区,并提交到本地仓库中。
然后,将本地修改推送到服务器的仓库里:git push origin master,这里会提示输入用户名和密码,注意输入的用户名和密码不会被显示出来。 通过git remote -v,我们可以查看origin对应的服务器上的仓库地址。
这时打开GitStack,可以看到服务器上仓库有了提交的内容。
在客户机上克隆服务器的仓库到本地
先在客户机上安装msysgit 1.7.10。
cd d:
mkdir project
cd project
git clone http://192.168.0.105/ProjectRepos LocalRepos
这里,会提示输入用户名和密码,注意输入的用户名和密码不会被显示出来。
cd LocalRepos 进入了工作目录,我们可以添加文件到工作区,并提交到本地仓库中。
然后,将本地修改推送到服务器的仓库里:git push origin master,这里会提示输入用户名和密码,注意输入的用户名和密码不会被显示出来。 通过git remote -v,我们可以查看origin对应的服务器上的仓库地址。
这时打开GitStack,可以看到服务器上仓库有了提交的内容。
在客户机上也可以打开GitStack,直接在浏览器的地址栏中输入http://192.168.0.105/gitstack/打开登录界面,当然这需要知道管理员密码。
(这里要注意的是,要保证在客户机上能够成功打开GitStack或者从服务器上克隆仓库,必须将服务器的防火墙关闭,否则在客户机上的这些操作就会失败。这个问题一直困扰了我好几个小时。)
可见,服务器和客户机在操作上已经没有什么区别了,这正是Git作为分布式版本控制系统的体现。

注意:GitStack的默认端口为80,可以进行修改,在Settings--General--Server Ports中修改Http port。如果修改后不记得修改的端口号了,可以查看:D:\GitStack\apache\conf\gitstack\listen.conf文件。

Listen 8082

Git