热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SVN系统部署说明(CollabNetSubversionEdge+TortoiseSVN

对互联网公司而言,SVN的重要性不言而喻。本文选用CollabNetSubversionEdge作为SVN服务端和控制台,以TortoiseSVN作为客

对互联网公司而言,SVN的重要性不言而喻。本文选用CollabNet Subversion Edge作为SVN服务端和控制台,以TortoiseSVN作为客户端部署SVN系统。CollabNet Subversion Edge控制台功能十分强大,便于维护管理,且能采用LDAP认证方式,适合部署了内部域控的组织。而TortoiseSVN客户端的功能和性能有口皆碑,无需赘述。

一. 准备工作

  1. 虚拟机准备
    部署一台Windows 虚拟机,关闭防火墙。假设ip为10.10.10.100,已在域控制器为其做了域名解析,主机名为 devint-svn.xzz.com。
  2. 软件准备
    jdk(前往官网);
    CollabNet Subversion Edge(前往官网);
    TortoiseSVN客户端(前往官网)。

二. 安装SVN服务器

  1. 安装jdk
    在虚拟机中安装jdk,完成后配置环境变量JAVA_HOME、PATH、CLASSPATH,然后可以用一个简单的java程序测试是否配置正确。安装配置成功后进行下一步。
  2. 安装CollabNet Subversion Edge
    在虚拟机中运行CollabNet Subversion Edge安装程序,默认安装至完成。安装完成后,可以在开始菜单里看到CollabNet Subversion Edge 快捷方式,点击后进入控制面板登陆页面,说明安装成功。

三. 配置SVN服务器

  1. 配置CollabNet Subversion 服务为自动启动
    在Services配置CollabNet Subversion Edge和CollabNet Subversion Server两个服务为自动启动。

  1. 更改默认管理员密码
    在域内任何一台计算机上打开SVN控制台 [ https://devint-svn.xzz.com/csvn ],以默认管理员admin(默认密码admin)登录,点击右上角Super Administrator(admin)链接,在编辑->修改密码里修改默认管理员密码。

  2. 服务器设置
    在“管理”面板里点击“Server Settings”,如下图所示设置服务器的主机名、端口、版本库父文件夹、备份文件夹,勾选控制台加密,点击保存。

     

  1. 认证设置
    在“管理”标签下点击“Authentication”,配置用户认证,如下图所示。在认证方法勾选“使用htpasswd文件的本地认证以及其它认证方法”和“用LDAP服务器进行LDAP认证”,然后配置LDAP。按照下图所示配置完成后点击保存。

     

  2. 新建一个超级用户
    在“用户”标签下点击“用户列表”,点击“创建”按钮新建一个超级用户。

四. 测试SVN服务器

  1. 创建测试用版本库
    创建一个版本库用于测试。在“版本库”标签下点击“版本库列表”,点击“创建”按钮,新建一个名为“cafescribe_admin”的版本库,勾选“使用模板”和“Create standard trunk/branches/tags structure”,如下图所示。点击“创建”。

     

     

     

    创建完成后可以再版本库列表看到新建的版本库。

     


    创建版本库后,在“版本库”标签下点击“访问规则”,编辑对这个版本库根目录和新版本库的访问规则。为了便于测试,授予所有用户读写权限。

  2. 本地用户访问测试
    在一台安装了TortoiseSVN客户端的机子上,打开“TortoiseSVN Repository Browser”,在跳出的地址框里输入版本库url http://devint-svn.xzz.com/svn/cafescribe_admin :

点击“OK”,在跳出的登陆框里输入用户名“admin”及其密码,按回车键登录。

可以发现成功登录版本库。

  1. 域用户登录测试
    同样的,用域账号访问此版本库,也可以成功登录。

  1. Checkout 测试
    右键->“SVN Checkout”,打开版本库检出窗口。

     

输入版本库url和检出目录,点击“OK”,在弹出的认证框里输入域账号及其密码,点击“OK”,开始检出版本库。

检出成功。

可以发现目标版本库被成功检出到目标文件夹里。

五. 其他重要配置

  1. 控制后台权限控制
    前文已经配置了版本库的认证,包括CollabNet Subversion Edge 本地用户认证和 LDAP 用户认证。CollabNet Subversion Edge系统里创建的本地用户暂且不论,LDAP用户登录系统后台时会留下一条LDAP用户记录(没有登陆过管理后台则没有),然后才可以修改该用户的角色。
    以超级管理员账号登录后台,点击用户->用户列表:

     

可以看到一些LDAP用户登陆过系统管理后台,点击角色列表,可以看到系统已经定义好的角色:

 

点击角色名可以将该角色授予用户:

![]DFNIM.png](http://upload-images.jianshu.io/upload_images/4954542-90325a22ad0fe4f1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  1. 版本库读写权限控制
    组织中大多有多个项目,可以在SVN管理后台针对每个项目分别配置用户的读写权限。
    针对项目的权限控制在CollabNet Subversion Edge 的 版本库->访问规则页面进行,下图是针对一个FOO项目的访问控制例子:

     

     

    首先对用户进行分组,例如IT管理组、架构师组、QA组,以及各个项目的用户组等等,以便进行分组控制。其中项目组中可以划分完全控制(及可读写)以及只读用户组,以分配不同的权限。

  2. Hook Script
    可以利用钩子脚本对版本库进行一些附加的操作,比如在commit时执行检查,如果用户未对本次commit进行说明,则拒绝commit。以下是此钩子的例子:


    @echo off
    setlocal
    set REPOS=%1
    set TXN=%2
    rem check that logmessage contains at least 5_characters
    svnlook log "%REPOS%" -t "%TXN%" | findstr ".." > nul
    if %errorlevel% gtr 0 goto err
    exit 0
    :err
    echo 至少需要输入2个字符及以上的评论, 请修改后重新提交! 1>&2
    exit 1

六. TortoiseSVN客户端简明教程

TortoiseSVN是windows下一个非常优秀的SVN客户端工具,通过它我们可以可视化的管理我们的版本库。不过由于它只是一个客户端,所以它不能对版本库进行权限管理。
安装时按默认步骤安装即可,无需详述。
TortoiseSVN不是一个独立的窗口程序,而是集成在windows右键菜单中,使用起来比较方便。以下简要说明TortoiseSVN的每个菜单项如何使用。

1. SVN Checkout(检出版本库)

点击SVN Checkout,弹出检出提示框,在URL of repository输入框中输入目标版本库地址,在Checkout directory输入框中输入本地工作拷贝的路径,点击确定,即可检出服务器上的版本库。

2. SVN Update(更新版本库)

如果版本库在本地已有工作拷贝,则取得最新版本只是执行SVN Update即可,点击SVN Update,系统弹出更新提示框,点击确定,则把服务器上的最新版本更新下来。

3. SVN Commit(版本提交)

把自己工作拷贝所做的修改提交到版本库中,这样别人在获取最新版本(Update)的时候就可以看到你的修改了。

4. Show log(显示日志)

显示当前文件(夹)的所有修改历史。SVN支持文件以及文件夹独立的版本追溯。

5. Repo-Browser(查看当前版本库)

查看当前版本库,这是TortoiseSVN查看版本库的入口,通过这个菜单项,我们就可以进入配置库的资源管理器,然后就可以对配置库的文件夹进行各种管理,相当于我们打开我的电脑进行文件管理一样。

6. Check for Modifications(检查更新)

点击Check for Modifications,弹出一个列出所有待更新的文件及文件夹的状态的窗口。

7. Revision Graph(版本分支图)

查看文件的版本分支结构,可以点击Revision Graph,系统以图形化形式显示版本分支。

8. Update to Revision(更新至某个版本)

从版本库中获取某一个历史版本。这个功能主要是方便查看历史版本用,而不是回滚版本。注意:获取下来之后,对这个文件不建议进行任何操作。
如果你做了修改,那么当你提交的时候SVN会提示你,当前版本已失效(即不是最新版本),无法提交,需要先update一下。这样你所做的修改也就白费了。

9. Revert(回滚)

如果你对工作拷贝做了一些修改,但是你又不想要了,那么你可以使用这个选项把所做的修改撤销。

10. Clean up(清除状态)

如果当前工作拷贝有任何问题的话,可以使用这个选项进行修正。例如,有些文件原来是版本控制的,但是你没有通过tortoiseSVN就直接删除了,但是tortoiseSVN还是保留着原来的信息(每个文件夹下都有一个.svn的隐藏文件夹,存放着当前文件夹下所有文件夹的版本信息)所以这就会产生一些冲突。可以使用cleanup来清理一下。

11. GetLock/ReleaseLock(加锁/解锁)

如果你不想别人修改某个文件的话,那么你就可以把这个文件进行加锁,这样可以保证只有你对这个文件有修改权。除非你释放了锁,否则别人不可能提交任何修改到配置库中。

12. Branch/tag(分支/标签)

Branch是分支的意思。例如当在设计一个东西的时候,不同的人有不同的实现,但是没有经过实践检验,谁也不想直接覆盖掉其他人的设计,所以可以引出不同的分支。将来如果需要,可以将这些分支进行合并。
tag是打标签的意思。通常当项目开发到一定程度,已经可以稳定运行的时候,可以对其打上一个标签,作为稳定版。将来可以方便的找到某个特定的版本(当然我们也可以使用版本号来查找,但是数字毕竟不方便)。
SVN对于分支和标签都是采用类似Linux下硬链接的方式(同一个文件可以存在两个地方,删除一个不会影响另一个,所做修改会影响另一个),来管理文件的,而不是简单的复制一份文件的拷贝,所以不会有浪费存储空间的问题存在。

13. Switch(切换)

文件创建分支后,你可以选择在主干工作,还是在分支工作,这时候你可以通过Switch来切换。

14. Merge(合并)

主干和分支的版本进行合并,在源和目的各输入文件的路径,版本号,点击确定。系统即对文件进行合并,如果存在冲突,请参考冲突解决。

15. Export(导出)

把整个工作拷贝导出到本地目录下,导出的文件将不带svn文件标志,文件及文件夹没有绿色的”√”符号标志。这个功能是方便我们部署用。
当我们需要发布一个稳定版本时,就可以使用这个功能将整个工程导出到某个文件夹,新的文件夹将不会包含任何版本信息了。

16. Relocate(重新定位)

当服务器上的文件库目录已经改变,我们可以把工作拷贝重新定位,在To URL输入框中输入新的地址。
当我们版本库发生转移的时候就需要用到这个功能了。例如原先的版本库是建在U盘上的,现在转移到(复制整个配置库文件夹)开发服务器上,使用https代替文件系统的访问。因此就需要将原来的工作拷贝的目标版本库重新定位到开发服务器上。

17. Import(导入)

选择要提交到服务器的目录,右键选择TortoiseSVN->Import,系统弹出导入提示框,在URL of repository输入框中输入服务器仓库地址,在Import Message输入框中输入导入日志信息,点击确定,则文件导入到服务器仓库中。

18. Add(加入)

如果有多个文件及文件夹要提交到服务器,我们可以先把这些要提交的文件加入到提交列表中,要执行提交操作,点击执行提交(SVN Commit),即可把所有文件一次性提交到服务器上。

19. Create patch/Apply patch(创建/发布补丁)

创建/发布补丁。如果管理员不想让任何人都随便提交修改,而是都要经过审核才能做出修改,那么其他人就可以通过创建补丁的方式,把修改信息(补丁文件)发送给管理员,管理员审核通过之后就可以使用apply patch提交这次修改了。

20. Unversion and add to Ignore List(取消版本控制并添加到忽略列表)

大多数项目会有一些文件(夹)不需要版本控制,如编译产生的*.obj, *.lst,等。这时候可以把这些文件加入忽略列表。



作者:o黄裳元吉o
链接:https://www.jianshu.com/p/9fb6a91a842a
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


推荐阅读
  • SQL Server中TempDB管理(version store的逻辑 ... [详细]
  • 双十一在家学用 Git
    对于所有的开发者来说,掌握一门代码版本控制系统都是必须的,无论是自己做项目,团队合作,工作中的合作,都离不开版 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • ESXi命令行获取帮助的方法为,常用的命令一般都是以esxcli开头,如果忘记命令可以使用帮助:esxcli-- ... [详细]
  • 修正我的GitHub commit 数据
    早晨上班,滴滴搭车里,我在掘金这个帖子看到大家晒自己的Github活跃记录,我也晒了下自己的记录。不过太少了。有遗漏的commits状况这也让我知道,自己觉得自己很忙的,实际上提交 ... [详细]
  • 在此动手实践中,我们将在Azure机器学习Studio中一步步地开发预测分析模型,首先我们从UCI机器学习库的链接下载普查收入数据集的样本并开始动手实践:http:archive. ... [详细]
  • 前言本篇为大家总结社区多人合作常见的场景和对应的git操作命令。本篇非新手教程,阅读本篇前需具备Git基础知识。Git入门教程请参考https://www ... [详细]
author-avatar
up61
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有