使用Subversion构建版本控制环境(Windows)
使用htpasswd产生密码文件
????????????? vii.????????????? 启用验证后,SVN相关配置如下
<Location /svn>
?DAV svn
?SVNParentPath /usr/local/repository#仓库父目录位于c:/usr/local/repository
?AuthType Basic
?AuthName "Subversion repository"
?AuthUserFile /usr/local/svn/svn-auth-file
?Require valid-user
?AuthzSVNAccessFile /usr/local/svn/svn-access-file
</Location>
?????????? viii.????????????? 配置文件中使用到了svn-access-file,这个文件是用来控制用户访问SVN仓库权限的,下面就讲述以下access文件的配置。
[svn1:/]??????????? //这表示,仓库svn1的根目录下的访问权限
user1 = rw????????? // svn1仓库user1用户具有读和写权限
user2 = r?????????? // svn1仓库user2用户具有读权限
[svn2:/]??????????? //svn2仓库根目录下的访问权限
user1 = r?????????? // user1用户在svn2仓库根目录下只有读权限
user2 =???????????? // user2用户在 svn2仓库根目录下无任何权限
#[/]?????????????? ?// 这个表示在所有仓库的根目录下
#* = r????????????? // 这个表示对所有的用户都具有读权限
#[groups]?????????? // 这个表示群组设置
#svn1-developers = user1,user2?? // 这个表示某群组里的成员
#svn2-developers = user1
#[svn1:/]????????????
#@svn1-developers = rw// 如果在前面加上@符号,则表示这是个组权限设置
????????????????? ix.????????????? 重启APACHE
注意:DocumentRoot目录与svn的SVNParentPath值不可设置为一样,否则可能会出现301 Moved Permanently…错误
?
????????????????????
三、软件使用
a)?????? 、使用命令行(CMD窗口模式)
创建新的版本库
svnadmin create /path/to/repository
svnadmin是有用的subversion系统管理命令,使用svnadmin help查看在线帮助
信息。
添加新的项目(import new project)
?
svn import project file:///repository_name/project -m "Comment"
svn import project http://yourhost/svn_dir/repository_name/project -m "Comment"
?
检出(checkout)项目
svn checkout file:///repository_name/project/trunk project
svn checkout http://yourhost/svn_dir/repository_name/project/trunk project
?
列出仓库中的项目(list)
svn list --verbose file:///repository_name/project
svn list --verbose http://host/svn_dir/repository_name/project
?
状态查询(status)
svn status
给出新文件,已经改变的文件和被删除的文件列表;
?
添加文件或目录(add)
svn add
?
删除文件或目录(delete)
svn delete
svn delete http://yourhost/svn_dir/repository/project_dir
?
提交(commit)
svn commit http://yourhost/svn_dir/repository/project_dir
?
更新(update)
svn update
更新仓库中的文件到本地。
?
标签和特殊版本项目
使用copy命令
svn copy http://yourhost/repos/project/trunk http://yourhost/repos/project/tags/1.0.0
用于创建某个特定版本的快照(snapshot);
svn list http://yourhost/repos/project/tags/1.0.0
b)?????? 、下面我们就用以上介绍的命令创建一个测试仓库
???????????????????? i.????????????? 打开命令提示符,进入E:/repository目录,执行以下命令
????????????????? ii.????????????? 重启apache,浏览http://localhost/repos/qjoa,若看到以下画面,则表示SVN已经正常工作
????????????? iii.????????????? 刚才建立的仓库只是一个空的仓库,里面没有任何的项目/文件,下面,我将演示一下怎么向该仓库添加项目,使用以下命令
svn import D:\WorkSpace\OTH_007_QJTech-OA http://localhost/repos/qjoa -m?"SVN init project"
注意:以上命令必须单行输入,import项目时,最好先去掉apache验证,否则将导致import项目失败!
????????????????? iv.????????????? OK,重新浏览http://localhost/repos/qjoa试试,若出现跟下图类似的画面,则表示项目导入成功;
?
c)?????? 、TortoiseSVN操作简介
???????????????????? i.????????????? 选择语言
TortoiseSVN安装后,默认使用的是英文,为了使用中文需要执行以下操作,在windows资源管理器中右击TortoiseSVN->Settings.
弹出以下对话框,选择“中文(简体)”后点击应用,即更改默认显示为中文如下图所示:
????????????????? ii.????????????? 添加项目(import)
进入需要导入的文件夹,右击 “TortoiseSVN”->“导入”,则可出现如下图所示对话框,在文件库路径中填写刚新建的仓库http://www.ilinux.com.cn/repos/qjoa,点击确定,即可完成项目的导入
????????????? iii.????????????? 检出项目(checkout)
在工作目录新建一文件夹QJOA(我使用的是D:/workspace/qjoa),在有多个项目时,使用工作目录绝对是一个不错的习惯^_^,进入qjoa目录,右击,即出现如下图所示菜单
单击“SVN取出”,则出现如下图所示的画面,
填写适当的信息,单击确定,则TortoiseSVN将开始检出项目,如下图所示
?
????????????????? iv.????????????? 列出项目
资源管理器中右击TortoiseSVN->文件库浏览器;
在URL栏中填入仓库路径,就可以浏览仓库内容,如下图所示
???????????????????? v.????????????? 状态查询
????????????????? vi.????????????? 添加文件或目录
选中要添加的文件夹或文件右击 “TortoiseSVN”->“添加”
????????????? vii.????????????? 删除文件或目录
选中要添加的文件夹或文件右击 “TortoiseSVN”->“删除”
?????????? viii.????????????? 提交修改
在工作目录,右击 —>“SVN提交”
????????????????? ix.????????????? 更新
在工作目录,右击 —>“SVN更新”
注意:添加或删除后需要进行提交操作。更多的有关Subversion的详细用法,请查阅Subversion官方文档中文版本。
?
?
四、相关资源
a)?????? 、Subversion中文站(http://www.subversion.org.cn/);
b)?????? 、Subversion官方站(http://subversion.tigris.org/);
c)?????? 、Subversion官方文档中文版本(http://www.easyea.com/doc/CH/svnbook/);
五、参考
a)?????? 、Installing Subversion(http://svn.collab.net/repos/svn/trunk/INSTALL);
b)?????? 、CVS to SVN Crossover Guide(http://svn.collab.net/repos/svn/trunk/doc/user/cvs-crossover-guide.html);
c)?????? 、apache文档2.0(http://httpd.apache.org/docs/2.0/);