原文出处: http://www.blogjava.net/youxia/archive/2007/10/23/155372.html

我的上一篇随笔讲了怎么使用Subversion客户端去连接服务器,由于服务器是别人的,我们只能体验到有限的功能。要探索版本控制的方方面面,非得自己建立Subversion服务器不可。在这一篇中,我将构建一个自己的源代码仓库。

首先是规划,我觉得应该从以下几个方面来考虑问题:

1、源代码仓库放在什么地方?

2、怎么将版本库发布到网络上?

3、设置什么样的认证和授权策略?

先来看第一个问题。我认为,一个开发团队应该使用一台单独的服务器来存放版本库,而这台服务器的操作系统,我推荐是Unix/Linux。原因很简单,因为大多数的Unix/Linux系统都自带有Subversion软件,而且Unix/Linux系统都有很好的安全性。

我使用的是红旗桌面6.0,才推出没多久,号称内核和所有自带的软件包都是最新的,我推荐大家使用。当然,这个系统也不是完美无缺的,毕竟国产的东西常遭诟病,我选择它的原因主要还是字体比较清晰。红旗桌面6.0自带的Subversion软件为1.4.2。先给大家看一个截图:

在Linux系统中,我建立了一个目录/var/svnroot作为版本库的存放目录,然后使用svnadmin命令来创建了一个版本库。svnadmin和svnlook都是服务器端的工具,他们可以直接操作版本库服务器上的目录和文件,而不需要Subversion服务器运行。进入到刚才创建的版本库目录/var/svnroot/jproject中,可以看到里面的目录结构,如上图所示。其中的conf目录为存放配置文件的地方,等会设置认证和授权策略的时候会用到。

再来看第二个问题。只有把版本库发布到网络上,才能够让别的机器访问得到,毫无疑问需要使用一个服务器端的守护程序。在网上找一下资料,发现大部分讲Subversion服务器配置的文章都是使用的httpd服务器搭配mod_dav和mod_dav_svn模块来提供Subversion服务,我想可能是因为http协议更适合于广域网的环境吧。使用httpd配置比较复杂,如果只是在局域网内做开发,使用Subversion自带的svnserve也是不错的选择。

运行svnserve命令,带-d选项即可以作为一个单独的守护进程运行,-r选项可以指定发布哪个目录下的版本库。一旦服务器运行,就在端口3690进行监听。使用telnet可以测试到3690端口已经开放了,如下图:

这时,就可以在客户机上使用svn://192.168.1.3/jproject来连接Subversion服务器了。

最后看第三个问题。svnserve服务器运行后,当用户请求访问某个版本库的时候,svnserve会先读取版本库目录下的conf目录中的svnserve.conf文件,然后根据这个文件中的设置来决定认证和授权策略。

我的认证和授权策略很简单,认证就使用简单的用户名和密码机制,授权策略为经过认证的用户可以读些版本库、匿名用户只能读不能写。因此,这个配置文件很简单,如下:

在这个配置文件中,设置了保存用户名和密码的文件为passwd,再编辑该文件,添加两个用户,如下图:

OK,现在svnserve的设置已经基本完成,下面使用Eclipse来测试一下。在Eclipse中建立一个HelloWorld项目,在项目上点右键,在弹出菜单中选择小组-〉共享项目,然后依照提示一步一步进行即可,如下列图片所示:

点击确定,HelloWorld项目就全部被提交到Subversion版本库中了,从下图中可以看出,加入到版本库中的项目前面的图标都有所改变,只要鼠标悬停到文件上面,就会显示更改的时间和用户,真的是非常方便。

最后要说的是,svnserve提供的授权机制比较简单,对于一个用户,要么能够访问整个版本库,要么就什么也不能访问,如果要指定某个用户只能访问某些文件夹而不能访问另外的文件夹是不可能的。要想实现这样的功能,只有使用httpd。这大概也是httpd作为Subversion服务器主流的原因之一吧。

评论

# re: 使用Subversion进行源代码管理(二):创建和发布版本库  回复  更多评论

2007-10-23 19:17 by tangfl

最新的 svn 已经可以做到目录级别的权限控制了,但还是做不到单个文件级别。
写博客之前,尤其是写这样的教程类的文章前,应该自己先确认一下的。

# re: 使用Subversion进行源代码管理(二):创建和发布版本库  回复  更多评论

2007-10-25 14:30 by 海边沫沫

@tangfl 
多谢指正。

Subversion 从1.3版之后,svnserve也提供了目录级别的访问控制,其配置方法为先编辑conf/svnserve.conf文件,添加一行: 
authz-db = authz

这一行的意思是指将目录级别访问控制的配置放在了authz文件中,authz文件的配置格式如下: 

使用Subversion进行源代码管理(二):创建和发布版本库[转]的更多相关文章

  1. Erlang Rebar 使用指南之二:制作发布版本

    Erlang Rebar 使用指南之二:制作发布版本 全文目录: https://github.com/rebar/rebar/wiki 本章位置: https://github.com/rebar/ ...

  2. Gradle入门(5):创建二进制发布版本

    在创建了一个实用的应用程序之后,我们可能想将其与他人分享.其中一种方式就是创建一个可以从网站上下载的二进制文件. 这篇教程描述了如何创建一个二进制发布版本,满足以下需求: 二进制发布一定不能使用所谓的 ...

  3. 创建本地SVN版本库以及将SVN导入GIT

    创建本地SVN 通常SVN作为一种服务,是在服务器上架设,供用户通过网络访问使用.但如果只是自己日常使用,完全可以架设在本机上,不需要启动后台程序,通过文件的方式访问即可. 建立本地SVN非常简单,一 ...

  4. CodeManage 源代码管理器v2.0发布

    下载地址 欢迎大家提出宝贵的意见和bug

  5. svn创建多个版本库

    mkdir /pangbing cd /pangbing/ svnadmin create 1 svnadmin create 2 svnadmin create3 启动时候这样启动 svnserve ...

  6. Git版本库的创建(Ubuntu)

    在Ubuntu上学习Git随笔. 一. git 仓库的安装 git 在终端用git命令查看Ubuntu是否安装git版本库,如果没有安装,最新版本(Ubuntu18.04)会提示用下面命令进行安装. ...

  7. BugPhobia团队篇章:团队管理与Github源代码管理说明

    0x00:序言 To the searching tags, you may well fall in love withhttp://xueba.nlsde.buaa.edu.cn/ 再见,无忧时光 ...

  8. TFS源代码管理工具:

    源代码管理: 先获取最新版本,再签入.如发现错误,可以点击--源代码管理--获取特定版本撤回修改 1.签入:(要备注,测试通过后签入) 敏捷开发:(小步快跑):小部分功能开发完成测试通过后就签入 全部 ...

  9. 用VisualSVN Server创建版本库,以及TortoiseSVN的使用

    介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化. SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. ...

随机推荐

  1. MySQL的四种主要存储引擎

    在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库.而在设计表的时候,我们都会关注一个问题,使用什么存储引擎.等一下,存储引擎?什么是存储引擎? 什么是存储引擎? ...

  2. LeetCode Path Sum 判断树的路径之和

    /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; ...

  3. IOS 数据加密方式(加盐,MD5加密,)

    加密方式封装 @interface NSString (Hash) @property (readonly) NSString *md5String; @property (readonly) NSS ...

  4. 是否应该提供一个dao.insertIgnoreNull ? (像updateIgnoreNull一样)

     是否应该提供一个dao.insertIgnoreNull ? (像updateIgnoreNull一样)  发布于 406天前  作者 SayingCode  153 次浏览  复制  上一个帖子  ...

  5. 前端高质量知识(五)-JS详细图解全方位解读this

    在这之前,我们需要来回顾一下执行上下文. 在前面几篇文章中,我有好几个地方都提到执行上下文的生命周期,为了防止大家没有记住,再次来回顾一下,如下图. 执行上下文生命周期 在执行上下文的创建阶段,会分别 ...

  6. c# base new 等关键字基础

    base关键字 不仅可以  调用父类的 实例方法,也能狗调用父类的 构造方法 https://www.cnblogs.com/aehyok/p/3519599.html

  7. MapReduce计算每年最大值

    1. 测试文件生成程序,参考 https://www.cnblogs.com/jonban/p/10555364.html MapReduce程序示例如下: 2. 新建Maven项目  hadoop ...

  8. vs2012或vs2013调试卡 关闭调试卡

    以前vs2013就有这个问题.没有解决.今天又装了vs2012.又遇到了.特别郁闷. 今天一定要解决.网上百度了.很久.可能关键字有问题.没有找到好的办法. 找到的办法有.显卡问题.不是管理员运行问题 ...

  9. 创建Android环境并且安装cordova

    需要eclipse.Andriod SDK.java.Apache ant.Node.js.Genymotion 目录链接: 1.安装adt-eclipse 2.安装JAVA 3.安装Apache a ...

  10. css英文长文字会自动换行的解决办法

    iPhone5中显示的效果如下图: 代码修改: 修改后效果如图: