标签存档: VCS

Snow Leopard Server 上配置 Gitosis 笔记

为了迁移项目 Git 仓库到 Mini Server 上,需要在 Snow Leopard Server 上配置一下 Gitosis,但是 Mac OS X 和 Linux 不太一样,有些地方需要特殊处理一下。

安装 Gitosis

Gitosis 的安装就不多说,在参考文档2中有。

添加 Git 用户组及用户

添加用户可以用参考文档1中的方法来创建,没有尝试直接用 OSX 的用户管理来创建是否可用。

# 这里的用户组和用户ID 用 401,但是实际用时需要根据服务器上的情况来创建
# 我在使用时 401 这个 gid 就已经被占用了,可以使用以下两个命令看看要用的
# ID 是否已经被用了。
sudo dscl . list /Users uid
sudo dscl . list groups gid
 
# 创建用户组 git
sudo dscl . create groups/git
sudo dscl . create groups/git gid 401
 
# 创建用户 git
sudo dscl . create users/git
sudo dscl . create users/git uid 401
sudo dscl . create users/git NFSHomeDirectory /Users/git
sudo dscl . create users/git gid 401
sudo dscl . create users/git UserShell /bin/bash
sudo dscl . create users/git Password '*'
 
# 创建用户主目录,Git 仓库就要放在里面
sudo mkdir /Users/git
sudo chown git /Users/git
sudo chgrp git /Users/git
 
# 下面这一句是把 git 用户添加到可以使用 ssh 访问的用户组里面
# 如果不执行这句的话,git push 或者 git pull 等等的时候会出错
sudo dscl . -append /Groups/com.apple.access_ssh GroupMembership git

配置 Gitosis

这个在参考文档2中都有详细说明。

参考文档

  1. git hosting with Leopard, Ian White
  2. 权限管理器 Gitosis, Pro Git
  3. Adduser for Mac OS X = dscl + niutil + nicl, otaku ramblings

Subversion 配置笔记

在决定转向SVN之后,就去下了个Subversion 1.4.6装上,但是默认的情况下,SVN并不像CVSNT那样提供一下基于网络的访问接口,因此在一开始,我只能用TortoiseSVN使用file:///协议来访问版本库。

这样终究不是个办法,因此去网上找了找,发现SVN本身也提供将SVN安装成服务的方法,只要自己添加一下就行了。使用以下命令:

sc create svnserve binpath= “c:\svnserve\svnserve.exe –service
–root c:\repos” displayname= “Subversion” depend= tcpip start= auto

注意,如果你是在Vista下面的话,需要使用管理员权限来添加服务。还有一点就是,在输入命令的时候,属性名称后面跟着=,不能有空格,但是=与后面的值之间必须有一个空格。

配置之后就可以用svn://协议来访问版本库了。

配置网络访问之后,还需要设置一下访问权限,这个在版本库conf目录里的svnserve.conf里配置。

找到 [general] 段,可以从注释里看到配置匿名访问、密码数据库等等选项。其中 anon-access 是用来设定版本库的匿名访问权限,auth-access 是用来设定登录用户的访问权限,password-db 是用来设定用户密码数据库,一般取默认 passwd 就行了,realm 是用来设定版本库的域,如果两个版本库的的域一样,那么它们就会使用同一个用户密码数据库。

用户权限有 none、read、write 三种,我的配置如下:

[general]
anon-access = none
auth-access = write
password-db = passwd
realm = my subversion

最后,在同个目录下的 passwd 文件中添加用户名密码即可,格式为“用户名 = 密码”,一行一个帐号。

Windows 下配置 CVS 服务器

在进行团队项目开发的过程当中,源代码版本控制是不可缺少的部分,我目前用过的代码版本控制工具就两个,Visual Source Safe和CVS,呃,准确来说,CVS是昨天才开始用的。

本来,我是一直用着VSS的,比较方便,直接集成在VSS里面,但是目前在写的XBS是ASP的,Visual Studio里没有ASP的项目,不像PHP可以有个vs.php,所以比较麻烦,一直用EditPlus来写XBS。前两天因为一个项目用PHP的,又想到了Eclipse有个PDT的,就去下了个已经配置好的开发PHP的Eclipse IDE,然后想要弄个代码版本控制工具,就想到了CVS这个开源界鼎鼎有名的东西,立马上网去搜,找到了for Windows的版本:cvsnt。

cvsnt是cvs Windows版本的服务端程序,提供基于 TCP/IP 协议的 CVS 服务,可以在http://www.cvsnt.org/下载到。找到了服务器程序后,找了几天篇教程,就开始配置CVS服务器。

准备工作

从http://www.cvsnt.org/下载cvsnt,我下载的版本是2.5.04。

安装cvsnt

直接双击运行cvsnt安装文件,安装过程中可以选择以经典、自定义和完全三种方式安装,在自定义方式中可以选择安装路径。安装完成后,在控制面板里出现一个CVSNT Server的项目,图标是一条鱼~~

配置cvsnt

安装完成cvsnt后,就可以从控制面板中那条鱼来配置cvsnt了。首先,你要新建一个目录用来存放cvs仓库,我用的是G:\CVSROOT。这里需要先了解两个概念:cvs仓库和模块。我是这样理解的,cvs仓库相当于VS里一个解决方案,它可以包含多个项目,即模块。

打开cvsnt的控制面板后,可以看到7个选项卡,分别是:Server Information,用于查看服务器信息及一些简单的统计信息;Respository configuration,配置CVS仓库,包括添加、删除等;Server Setting,配置服务器运行的一些参数,诸如端口、加密、压缩等选项;Capatiblity Options,有关兼容性的选项,在这里主要配置一个兼容非cvsnt客户端的版本响应为cvs 1.11.2;Plugins,插件配置,安装完成可以不用管的~;Advanced,安装完成后也不用管了;About,在这里可以管理cvsnt服务的状态,停止或启动cvsnt和cvsnt lock服务。

其实简单来说,custom换默认设置安装完成后,要设置的东西只有两个:cvs仓库和服务器设置。

服务器设置:设置Run as为系统管理员帐号Administrator,或者新建一个本地用户,专门用于cvs。使用一个新建的本地帐户的好处是可以使用NTFS的权限控制来保证服务器的安全。

CVS仓库设置:进入Respository configuration选项卡,点击Add,出现添加CVS仓库的对话框,Type选择Standard即可,然后在Location里输入之前新建的用于存放CVS仓库的文件夹,我用的是G:\CVSROOT,在Name里会自动转换成一个可以用的CVS仓库的别名,比如我用的是“/CVSROOT”,其他的都默认,确定后cvsnt会询问你所添加的CVS仓库目录没有初始化,是否进行初始化,点“是”就行了,cvsnt会自动初始化指定的目录,初始化完成之后,可以在里面看到一个CVSROOT的文件夹。

认证设置:配置完CVS仓库后,为了使CVS能使用帐号进行访问而不是使用windows用户,需要修改cvsnt的认证方式,在CVS仓库目录的CVSROOT目录里找到config文件,先把它的只读属性去掉,然后使用文本编辑器打开,将第一行的#SystemAuth=yes改成#SystemAuth=no。

用户设置:在CVSROOT目录里,新建一个passwd文件,用文本编辑器打开,添加两行内容:

cvsroot:

xujiwei:

可以把“xujiwei”改成你要用的用户名。

修改密码:添加了用户之后,最好把密码修改掉。修改密码需要在cmd中进行,首先打开一个cmd,设置一下cvsroot环境变量:

set cvsroot=:pserver:xujiwei@127.0.0.1/cvsroot

注意,这里的xujiwei是之前添加的用户名,/cvsroot是之前添加的CVS仓库的别名,如果你的设置不同,请把它们替换成自己的值,以后不再说明。

接着登录CVS服务器,因为添加用户时没有设置密码,因此可以不输入密码直接回车登录:

cvs login

修改密码:

cvs passwd

输入新密码和确认密码之后,就成功修改了用户的密码。

结语

我也是第一次使用cvs,因此如果文中有所错误还请指正。

by Xu Jiwei