svn版本管理工具的安装及使用
一、实验环境VMware 10、RedHat5.6
1、服务器端:Redhat 5.6
subversion i386 1.6.11-7.el5 subversion-devel i386 1.6.11-7.el5 subversion-javahl i386 1.6.11-7.el5 subversion-perl i386 1.6.11-7.el5 subversion-ruby i386 1.6.11-7.el5
2、客户端:window 7
TortoiseSVN-1.8.7.25475-x64-svn-1.8.9
二、svn服务部署
1、安装svn服务
# yum install subversion* [root@master svndata]# svn svn svnadmin svndumpfilter svnlook svnserve svnsync svnversion
简单介绍一下每个工具的使用:
svn:svn客户端命令
[root@master ~]# svn -? # 获得svn更多帮助,一下命令类似
svnadmin:用于svn的监控和修复
svndumpfilter:迁移备份
svnlook:显示版本库的各种信息,不对svn版本库做任何修改
svnserve:用户启动svn服务
svnsync:实现的是版本库的远程自动备份,将版本库备份到另一台机器上。当主版本库出现问题时,可切换到备用版本库,从而提高SVN的可用性
svnversion:总结工作拷贝的本地修订版本
2、创建版本库目录
mkdir -p /svn/app1/svndata/repos
3、建立svn版本库
svnadmin create /svn/app1/svndata/repos
执行此命令后svn自动在repos目录下添加必须的配置文件
4、修改版本库配置文件参数
(1)、vim /svn/app1/svndata/repos/conf/svnserve.conf 各参数功能在配置文件的注释中有说明, 此处配置如下: [general] anon-access =none # 使非授权用户无法访问 auth-access = write # 使授权用户有写权限 password-db = passwd # 指明密码文件路径 authz-db = authz # 访问控制文件 realm = /svn/app1/svndata/repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。 其它采用默认配置. 各语句都必须顶格写, 左侧不能留空格, 否则会出错. 指令简介:这是svn配置文件的格式,请按照以上格式书写。 (2)、配置用户认证信息 vim /svn/app1/svndata/repos/conf/passwd 输入以下内容: [users] <用户1> = <密码1> admin = admin <用户2> = <密码2> username2 = password2 可以添加多个,此为用户名密码对 (3)、配置权限信息 vim /svn/app1/svndata/repos/conf/authz 说明: [groups] 创建有2个用户组, 分别是harry_and_sally与harry_sally_and_joe 等号右边分别是该组下的成员帐号 [/foo/bar] 项目路径 harry=rw harry用户具有/foo/bar项目路径的读写权限 &joe=r &joe用户具有读权限 *= 任何用户都没有权限读与写 [repository:/baz/fuz] 版本库repository中的 项目路径/baz/fuz @harry_and_sally=rw harry_and_sally用户组下的用户有读写权限 *=r 所有帐号都有读权限 指令简介:此配置文件采用“基于路径的授权”策略,中括号里指定路径,以下列出对各用户的授权。包括只读r,读写rw。没有列出的用户,则不允许访问。还可以对用户分 组,具体请参考svn手册,以下是简单例子: 用户组格式: [groups] <用户组名> = <用户1>,<用户2> 其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。 例如: [repository:/] 版本库目录格式: [<版本库>:/项目/目录] @<用户组名> = <权限> <用户名> = <权限> 其中,方框号内部分可以有多种写法: /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定/opt/svndata。这样,/就是表示对全部版本库设置权限。 repos1:/,表示对版本库1设置权限 repos2:/abc, ,表示对版本库2中的abc项目设置权限 repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限 权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。 例1: [groups] admins = admin,user1,user2 [/] @admins = rw user3 = rw user4 = r * = [repos:/] @admins = rw * = rw 注意:配置auth 、passwd和svnserve.conf一定要心细,否则客户端访问时会认证失败,如不能访问,百度和谷歌上有很多资料可供参考。配置完成,接下来该启动 svn喽:svn默认端口是3690
5、启动svn服务
[root@master ~]# svnserve -d -r /svn/app1/svndata/repos/ --listen-host 192.168.80.128
6、Linux下svn的简单使用
(1)、svn 创建本地工作副本
[root@master ~]# svn checkout svn://192.168.80.128 认证领域: <svn://192.168.80.128:3690> de2dcf3e-3f93-4cf0-a233-585559239507 “root”的密码: 认证领域: <svn://192.168.80.128:3690> de2dcf3e-3f93-4cf0-a233-585559239507 用户名: user1 “user1”的密码: ----------------------------------------------------------------------- 注意! 你的密码,对于认证域: <svn://192.168.80.128:3690> de2dcf3e-3f93-4cf0-a233-585559239507 只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion 可以保存加密后的密码。请参阅文档以获得详细信息。 你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”, 来避免再次出现此警告。 ----------------------------------------------------------------------- 保存未加密的密码(yes/no)?yes A 192.168.80.128/rsync-3.1.0.tar.gz A 192.168.80.128/123.docx A 192.168.80.128/webbench-1.5.tar.gz A 192.168.80.128/xshell4.exe A 192.168.80.128/nginx-1.1.6.tar.gz A 192.168.80.128/nginx-1.7.1.tar.gz A 192.168.80.128/nginx-1.4.7.tar.gz 取出版本 5。
(2)、向svn服务器中提交文件
[root@master ~]# mv anaconda-ks.cfg 192.168.80.128/ [root@master ~]# cd 192.168.80.128/ [root@master 192.168.80.128]# svn add anaconda-ks.cfg A anaconda-ks.cfg [root@master 192.168.80.128]# svn commit -m --fore-log anaconda-ks.cfg 增加 anaconda-ks.cfg 传输文件数据. 提交后的版本为 6。
(3)、在svn中创建新的目录并纳入版本控制下
[root@master 192.168.80.128]# svn mkdir rsync A rsync [root@master 192.168.80.128]# svn mkdir -m "mkdir rsync dir" svn://192.168.80.128/rsync 提交后的版本为 7。
(4)、查看文件和目录状态
[root@master 192.168.80.128]# svn status rsync/ A rsync ? rsync/rsync-3.1.0.tar.gz ?:不在svn的控制中 M:内容被修改 C:发生冲突 A:预定加入到版本库 K:被锁定 [root@master 192.168.80.128]# svn status -v rsync/ A 0 ? ? rsync ? rsync/rsync-3.1.0.tar.gz 第一列保持相同 第二列显示工作版本号, 第三和第四列显示最后一次修改的版本号和修改人 注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
7、window安装使用svn客户端