SVN服务器建立/使用手册


SVN 服务器建立/使用手册 1/26 SVNSVNSVNSVN 服务器建立服务器建立服务器建立服务器建立////使用使用使用使用手册手册手册手册 周宇辉周宇辉周宇辉周宇辉 2008200820082008----07070707----04040404 SVN 服务器建立/使用手册 2/26 目录目录目录目录 1. SVN 介绍 .......................................................... 3 1.1 版本控制........................................................ 3 1.1 SVN............................................................. 3 1.2 相关概念........................................................ 5 2. SVN 服务器的建立 .................................................. 7 2.1 基于 SVN 协议的服务端............................................. 7 2.2 基于 HTTP 协议的服务端 ............................................ 8 2.3 SVN 密码管理 .................................................... 9 2.4 SVN 权限管理(实例) ............................................. 10 2.5 服务器端监视................................................... 12 3. 客户端的使用..................................................... 14 3.1 TORTOISE SVN ..................................................... 14 3.1.1 工作目录................................................... 16 3.1.2 与 BeyondCompare 集成....................................... 16 3.1.3 提交修改................................................... 17 3.2 SUBCLIPSE....................................................... 18 3.2.1 安装....................................................... 18 3.2.2 取得工程................................................... 20 3.2.3 提交成果 (Commit).......................................... 23 3.2.4 查看历史................................................... 24 3.2.5 获取特定版本............................................... 24 3.2.6 上传新文件 ................................................. 25 4. 注意事项......................................................... 26 SVN 服务器建立/使用手册 3/26 1.1.1.1. SVNSVNSVNSVN 介绍介绍介绍介绍 1.1 版本控制版本控制版本控制版本控制 简单的讲,版本控制可以让你: • 在开发过程中保存产品的中间结果 • 获取你之前所保存的任一中间结果 • 并对一个阶段的产品进行打包(Label, Tag) • 对任两个中间结果进行比较 图 1-1 版本控制 版本控制是管理信息修改的艺术,它一直是程序员最重要的工具,程序员经常 会花时间做出小的修改,然后又在某一天取消了这些修改,想象一下一个开发者并 行工作的团队 - 或许是同时工作在同一个文件!- 你就会明白为什么一个好的系 统需要管理潜在的混乱。 1.1 SVN SVNSVNSVNSVN 全名 Subversion,即版本控制系统版本控制系统版本控制系统版本控制系统。 SVN 是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本 控制系统,Subversion 管理随时间改变的数据。 这些数据放置在一个中央资料档 案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住 每一次文件的变动。这样你就可以把文件恢复到旧的版本, 或是浏览文件的变动历 史。Subversion 是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程 序源码。 传统的版本控制工具采用 Lock – Modify – Unlock 方式(如图 1-2),例如 VSS。 在这种方式下,一旦用户修改文件,该文件处于锁定状态,此时不允许其他用 户修改。也即一个文件当前仅允许一个用户拥有写权限。 客户端 服务端 配置库 提交、导入、labeling 提取、导出 账户管理 权限控制 提交:向配置库中增加新对象或提交现有对象的变更 Labeling : 为配置库中的对象建立基线 提取:从配置库中获取指定对象的指定版本,有可能会 锁定该对象。 导入:向配置库中导入已备份的数据 导出:从配置库中导出现有数据,用于 备份、移动或其他目的。 SVN 服务器建立/使用手册 4/26 比较常见的 Lock 是采用文件只读\非只读实现的。 图 1-2 Lock-Modify-Unlock SVN 则采用 Copy-Modify-Merge 方式(如图 1-3),这种方式的好处可以允许多 个用户同时修改相同的文件。 一个用户在对已修改的文件进行上传时,如果此时服务器上的版本比该文件 基于的版本要新,则会产生冲突,不允许该用户上传。 该用户必须获取服务器上的新版本,与本地的修改进行合并(Merge),然后进 行上传。 图 1-3 Copy-Modify-Merge SVN 服务器建立/使用手册 5/26 图 1-4 是 SVN 的架构图,从图中可以看出,SVN 的客户端可以采用三种不同的 资源库访问方式:http,svn,local。SVN 的资源库类型有两种。 图 1-4 SVN 架构 1.2 相关概念相关概念相关概念相关概念 TagsTagsTagsTags Tag 是项目在某一时间的快照 (snapshot) 。对于 SVN 来讲,每一次资源库的 修订都是一次快照。 Tag 可以用来建立 milestone。Tag 仅仅是项目某一时刻的标记,与工作空 间,分支等没有任何关系。 SVN 中的 tag 允许自定义名称,这样就可以方便的根据 tag 名称获取项目某一 时刻的版本。 TrunkTrunkTrunkTrunk / / / / BBBBranchranchranchranch Trunk 是项目工作的主干道,也可以理解为项目开发的原始路线、主开发进 程。如果没有特殊的需求,项目会一直在 trunk 中进行。 在某个时刻,可能需要创建工作文档的第二个拷贝,然后单独维护这个拷贝。 这就有了 branch 的概念,一个与其他开发进程独立的开发进程。 以上如图 1-5 所示,在主干道上可以创建多个 branch。 SVN 服务器建立/使用手册 6/26 【【【【注意注意注意注意】】】】 ※※※※ trunk 以及 branch 只是两个概念,在 SVN 中并没有实实在在的两个东西, 如果你愿意的话,trunk 也可以是 branch,branch 也可以是 trunk。两种从 实质上讲并没有什么区别,可以认为是两个不同的工作空间。 ※※※※ 虽然只是概念,但是在开发的时候尤其注意不要弄混当前的工作空间,防止 发生不必要的损失。推荐为项目创建 trunk,branch 两个目录。 图 1-5 trunk、branch 如图 1-6,创建一个 branch。 图 1-6 创建一个 branch 创建 Branch 后,工作的 revision 的变化,如图 1-7。 图 1-7 版本号的变化 ※※※※ SVN 对于 tag 以及 branch 的创建不是 easy copy 的方式,所以不用担心空 间的损耗等。 ※※※※ SVN 的版本号 (revision) 对于整个 SVN 来讲是递增的. SVN 服务器建立/使用手册 7/26 2. SVN 服务器服务器服务器服务器的建立的建立的建立的建立 安装环境:Window XP professional 软件:服务端软件 http://subversion.tigris.org/ Subversion 有三种运行方式,一种是基于 Apache Http Server,一种是 Subversion Standalone Server,还有一种 local 方式。 下面分别介绍 svn、http 两种方式的安装方法。 2222.1.1.1.1 基于基于基于基于 svn 协议的服务端协议的服务端协议的服务端协议的服务端 【1】安装 Subversion 后,使用命令 svnadmin create "D:\MySVN" 创建 svn 资 源库,资源库地址为 D:\MySVN 【2】打开 D:\MySVN\conf\svnserve.conf,去掉以下内容之前的注释符 [general] anon-access = none auth-access = write password-db = passwd realm = My First Repository 说明: anon-access = none 不允许匿名访问! auth-access = write 允许提交修改 password-db = passwd 密码文件名字 如果[general] anon-access = read → anon-access = none 【3】用记事本打开 D:\MySVN\conf\passwd,添加用户名(user)和密码(passwd) [users] user=password 可以添加多个这样的用户名密码对。 【4】创建 svn 服务,并启动,这样 svn 就会开机自动启动 在控制台下,输入如下命令: sc create svnservice binpath= "\"D:\program files\Subversion\bin\svnserve.exe\" --service –r D:\MySVN" displayname= SVNService" depend= Tcpip SVN 服务器建立/使用手册 8/26 注意注意注意注意:::: a. 如果路径中包括空格,一定要用“\”处理“"”号, 例如 svnserve.exe 在 c:\program files\subversion\中,则命令应该写 为 binpath= \"c:\program files\subversion\bin\svnserve.exe\" b. sc 对选项的格式还有要求,所有的“=”前不能有空格,而后面必须有 空格。例如 depend= Tcpip 不能写为 depend = Tcpip 或 depend=Tcpip 【5】经过上述四步的操作,就可以使用 svn://localhost 访问 SVN 服务器。 2.2 基于基于基于基于 http 协议的服务端协议的服务端协议的服务端协议的服务端 基于 Apache Http Server 的 Subversion,有以下好处: • 能使用 WebDAV 协议 • 能使用浏览器作为客户端工具浏览源码仓库。 • 可以很容易的支持 SSPI(Windows 域认证)和 LDAP,这些都是 Apache 本身 就支持的。 • 能得到比较完善的 Apache 安全认证系统,比如 SSL 加密连接。 目前 SVN1.4.6(当前最新版)暂不支持 Apache2.2 以上版本,请使用 Apache2.0 版本进 行配置。如果先安装 Apache2.0,然后在安装 Subversion1.4.6,则 Subversion 的安装会 提示是否配置 Apache 服务器,选择允许配置。则以下 Apache 的配置步骤可以省略。 【1】安装 Apache 服务器 【2】检查 Apache 的 modules 目录是否包含 mod_dav_svn.so 以及 mod_authz_svn.so ,如果没有,从 Subversion 的 bin 目录中拷贝这两个文件到 modules 目录。如果先安装 Apache,然后安装 Subversion,则会自动拷贝这两个 模块。 【3】在 Apache 的 httpd.conf 配置文件中 LoadModule 位置的最后添加如下两 行: LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 并且去掉 LoadModule dav_module modules/mod_dav.so 之前的#号 SVN 服务器建立/使用手册 9/26 【4】如果不执行第 2 步的拷贝,那么在第 3 步新添加的两个 LoadModule 中使用 绝对路径 【5】在 httpd.conf 配置文件的最后添加以下参数: DAV svn SVNPath D:\MySVN AuthType Basic AuthName "Subversion repositories" AuthUserFile D:\MySVN\conf\passwd AuthzSVNAccessFile D:\MySVN\conf\authz Require valid-user 其中: • 中的 svn 为浏览器中需要输入的访问地址 • SVNPath D:\MySVN 指定 svn 仓库的物理位置 • AuthUserFile D:\MySVN\conf\passwd 指定 svn 仓库的密码文件 • AuthzSVNAccessFile D:\MySVN\conf\authz 指定 svn 仓库的权限设置文件 【6】重启 Apache 服务器,然后就可以使用 http://localhost:8080/svn 访问 svn 仓库。其中 8080 是 Apace 服务器设置的端口. 2.3 SVN 密码管理密码管理密码管理密码管理 SVN 使用 svn 协议以及 http 协议的密码处理是有所不同的,svn 使用明文, http 则可以可以使用 md5 加密,对应于 conf/passwd 文件,两者的形式也不同。 基于 svn 协议的 passwd 文件: [users] Larry = larry 在 conf/passwd 文件中增加用户名和密码对就可以。 基于 http 协议的 passwd 文件(缺少[users]头,用户名和密码的分隔为分号): larry1:$apr1$9i......$46q2xMws37UiwyL1w8MkN * 可以通过手动编辑的方式增加用户名和密码(可以是明文) SVN 服务器建立/使用手册 10/26 * 使用 Apache 的 htpasswd 工具创建用户 创建第一个用户 htpasswd -cm d:\Mysvn\conf\passwd user1 回车后会要求输入密码 创建第二个用户 htpasswd -m d:\Mysvn\conf\passwd user1 2.4 SVN 权限管理权限管理权限管理权限管理(实例实例实例实例) 厦门央瞬公司是一家电子元器件设备供应商,其中有个 ARM 部门,专门负责 ARM 芯片的方案设计、销售,并在北京、上海各设立了一个办事处。对于工作日 志,原先采用邮件方式发给经理,但是这种方式有个缺点,那就是不具备连续性, 要看以前的日志必须一封一封邮件去查看,很麻烦。 于是就想到利用 Subversion, 让员工在自己电脑上编辑日志,然后利用 svn 传送回来,既方便员工自己编写日志,又方便对日志的归档处理,而且提交日志的 时候只需要执行一下 svn commit 即可,比发送邮件还要简单的多。 部门文档的目录结构如下部门文档的目录结构如下部门文档的目录结构如下部门文档的目录结构如下 test 部门名称 ├─diary 工作日志目录 │ ├─headquarters 总部工作日志目录 │ ├─beijing 北京办日志目录 │ └─shanghai 上海办日志目录 ├─ref 公司公共文件参考目录 └─temp 临时文件目录 人员情况 - morson,公司总经理,不习惯使用电脑,更喜欢传统的纸与笔,以及面对面的 交流 - michael,arm 事业部的部门经理,没事的时候喜欢弄点儿新技术,用 svn 来 管理日志,就是他想出来的主意 - scofield,北京办人员,老员工,为人油滑难管 - lincon,上海办人员,老员工,大老实人一个 - linda,总部协调员、秘书,文笔不错,长得也不错 - rory,单片机技术员,技术支持 访问权限需求分析访问权限需求分析访问权限需求分析访问权限需求分析 SVN 服务器建立/使用手册 11/26 - 允许总经理、部门经理读取所有文件。顺便给他们开放写权限,以便体现对他 们职位的尊重,虽然对于某些文件来说,他们若拥有“写”权限其实也没什么用处 - 除部门经理外,所有其他人员,均只能看到本办事处人员工作日志 - 不允许匿名访问 - ref 目录只允许经理和秘书读写,对其他人只读 - temp 目录人人都可以随意读写 在服务器端 d:\svndata\test\conf 配置 svnserve.conf [general] password-db = passwd.conf anon-access = none auth-access = write authz-db = authz.conf 在服务器端 d:\svndata\test\conf 配置 passwd.conf 进行用户创建 [users] morson = ShowMeTheMoney michael = mysecretpassword scofield = hellolittilekiller lincon = asyouknows111 rory = 8809117 linda = IlikeWorldCup2006 在服务器端 d:\svndata\test\conf 配置 authz.conf 进行用户创建 注意注意注意注意::::在权限设置中在权限设置中在权限设置中在权限设置中,,,,用户名必须顶格用户名必须顶格用户名必须顶格用户名必须顶格,,,,不能留有空格不能留有空格不能留有空格不能留有空格!!!! [groups] g_vip = morson g_manager = michael g_beijing = scofield g_shanghai = lincon g_headquarters = rory, linda g_docs = linda [/] @g_manager = rw * = r SVN 服务器建立/使用手册 12/26 [/diary/headquarters] @g_manager = rw @g_headquarters = rw @g_vip = r * = [/diary/beijing] @g_manager = rw @g_beijing = rw @g_vip = r * = [/diary/shanghai] @g_manager = rw @g_shanghai = rw @g_vip = r * = [/ref] @g_manager = rw @g_docs = rw * = r [/temp] * = rw 这样 SVN 的配置权限设置完毕。 2.5 服务器端监视服务器端监视服务器端监视服务器端监视 Subversion 是通过 Hooks 来控制每次 Transaction 的行为,有 Pre-Commit, Post-Commit 等。一般情况下我们希望在提交代码后,Subversion 可以自动发送 邮件给组里的每个成员, 这种情况下可以通过 post-commit 这个脚本来完成。 该脚本存放在资源库(Repository)的 Hooks 目录下,以.tmpl 后缀结尾,在 Windows 平台改成.bat,.cmd 或.exe。(根据测试,bat,cmd 不太好用) SVN 服务器建立/使用手册 13/26 图 2-1 资源库脚本 当一个 Transaction 成功完成后,会调用 post-commit.exe,并传递如下两 个参数,根据这两个参数调用 svnlook (Subversion 提供的工具) 可以获取相应的 信息。 set REPOS=%1set REPOS=%1set REPOS=%1set REPOS=%1 set REV=%2set REV=%2set REV=%2set REV=%2 SVN 服务器建立/使用手册 14/26 3. 客户端的使用客户端的使用客户端的使用客户端的使用 3.1 TortoiseSVN 客户端软件 TortoiseSVN,提供了使用图形界面以及和 windows 系统菜单的集 成。http://tortoisesvn.net/ 图 3-1 TortoiseSVN 初始菜单 • SVN Checkout :在本地建立工作目录,与数据仓库的文件建立关联 • Repo-browser:浏览指定地址的数据仓库 • Export:从数据仓库中导出数据 • Create repository here:在本地创建一个数据仓库 • Import:把当前目录的导入到数据仓库 SVN 服务器建立/使用手册 15/26 图 3-2 TortoiseSVN 菜单 • SVN Update:获取最新数据,不会覆盖本地已经修改的文件 • SVN Commit:提交数据,如果点击右键的位置是文件或文件夹,则提交相应 的内容,如果点击的是文件夹内部的空白处,是提交当前文件夹的内容 • Show log:显示当前文件或文件夹的 log 信息 • Check for modifications:检查当前文件或文件夹的修改信息 • Revert:取消本次修改 • Branch/tag:进行 Branch 或 tag 的设置 • Add:向资源库添加文件 • Relocate:重定向当前工作目录与数据仓库的关联 SVN 服务器建立/使用手册 16/26 3.1.1 工作目录工作目录工作目录工作目录 图 3-3 SVN 工作目录图标 该文件的状态是正常的,但不一定和服务器上的最新版本相同 一般该文件被编辑,就会出现感叹号 在更新时有冲突发生的时候出现的图标 该文件设置了 svn:needs-lock,直到你获取锁之前,它都是 read only 的 该文件被锁定 文件或文件夹计划从资源库中删除;或版本控制下的文件在文件夹中缺失。 该文件被添加至数据仓库,但必须 commit 才可以生效。 3.1.2 与与与与 BeyondCompare 集成集成集成集成 进入 Settings 的对话框,在外部程序下可以设置其与外部工具的集成。 SVN 服务器建立/使用手册 17/26 图 3-4 与 BeyondCompare 集成 3.1.3 提交修改提交修改提交修改提交修改 在做了修改之后,可以点击 SVN Commit 菜单对修改的文件或文件夹进行上传。 图 3-5 SVN Commit 菜单 点击 SVN Commit 之后,就会弹出一个输入 log 的对话框: SVN 服务器建立/使用手册 18/26 图 3-6 log 窗口 输入 log 后,点击 OK,svn 客户端就会向远程服务器提交修改: 图 3-7 上传窗口 3.2 Subclipse 3.2.1 安装安装安装安装 使用 subclipse 作为 svn 的客户端 http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240&e xpandFolder=2240&folderID=0 把相应的 features 以及 plugins 文件放到 Eclipse 相应的目录下,然后执行 clean.bat 文件,启动 Eclipse 即可。 Clean.bat 文件: SVN 服务器建立/使用手册 19/26 eclipse.exe -clean 打开 Windows → Preferences,在 Team 节点中会出现 SVN 这个子结点。 图 3-8 SVN 配置窗口 打开 Windows → Show View → Others,在 SVN 节点中,打开 SVN 资源库视 图。 图 3-9 SVN 资源库窗口 点击 可以添加 SVN 资源库(数据仓库),在 URL 中输入地址即可。或者点击 右键出现如下图的“资源库位置”菜单。 SVN 服务器建立/使用手册 20/26 图 3-10 资源库位置菜单 图 3-11 资源库 URL 图 3-12 资源库显示 3.2.2 取得工程取得工程取得工程取得工程 取得工程,开发的第一步。 在 SVN 资源库中选择工程,点击右键出现如下图的菜单。 其中“检出为”就是 check out,可以理解为从服务器获取文件并与本地的某 一工作目录关联起来。 SVN 服务器建立/使用手册 21/26 图 3-13 check out 菜单 然后出现如下图的对话框,可以指定获取文件的特定版本。 图 3-14 SVN 检出窗口 SVN 服务器建立/使用手册 22/26 图 3-15 工作空间选择 点击 Finish 按钮,则会从服务器获取指定版本的文件,然后在指定的目录会 出现如下的现象,这表示该文件夹已与服务器进行了关联。 图 3-16 工作目录状况 在 Eclipse 的包浏览器中的节点中会出现相应的图标,对应于每个文件也会出 现版本号,以及修改日期和相关者。 SVN 服务器建立/使用手册 23/26 图 3-17 Eclipse 中工程显示 3.2.3 提交提交提交提交成果成果成果成果 (Commit) 只要某个文件进行了变动,该文件在树节点中的图标就会发生变化,提示你该 文件有变动。 图 3-18 变动的图标显示 在确认无误后,可以提交劳动成果。在提交之前,需要与服务器的最新版本进 行比较确认修改点(一般情况如此)。 图 3-19 比较菜单 • 基本修订版基本修订版基本修订版基本修订版:与你文件所基于的版本进行比较 • 资源库中的最新内容资源库中的最新内容资源库中的最新内容资源库中的最新内容:与服务器上的最新版本进行比较 • 修订版修订版修订版修订版:与某历史版本进行比较 • Local HistoryLocal HistoryLocal HistoryLocal History:与本地的文件进行比较 然后点击 TeamTeamTeamTeam→→→→提交提交提交提交,来提交(Commit)你的工作成果。 图 3-20 提交菜单 在弹出的对话框中添加注释添加注释添加注释添加注释,,,,然后确认需要提交的文件,点击 OK 进行提交。 SVN 服务器建立/使用手册 24/26 图 3-21 提交窗口 3.2.4 查看历史查看历史查看历史查看历史 点击 TeamTeamTeamTeam→→→→显示资源历史记录显示资源历史记录显示资源历史记录显示资源历史记录查看文件或者文件夹的历史记录。 图 3-22 历史记录菜单 图 3-23 历史记录窗口 3.2.5 获取获取获取获取特定版本特定版本特定版本特定版本 打开要获取特定版本的文件的历史记录,然后在某一记录上点击右键可以看到 许多功能菜单。 SVN 服务器建立/使用手册 25/26 图 3-24 功能菜单 • 获取内容获取内容获取内容获取内容:会覆盖当前的文件,此时如果提交文件,则会成功 • 获取修订版获取修订版获取修订版获取修订版:也会覆盖当前文件,但此时提交,则会发生失败。 3.2.6 上传新文件上传新文件上传新文件上传新文件 点击 TeamTeamTeamTeam→→→→添加至版本控制添加至版本控制添加至版本控制添加至版本控制,把新文件添加到服务器。 图 3-25 添加菜单 此时,被添加的文件的图标就会变成: 图 3-26 以添加版本控制图标显示 然后再执行提交动作提交动作提交动作提交动作就可以把 test.java 文件上传到服务器。 SVN 服务器建立/使用手册 26/26 4. 注意事项注意事项注意事项注意事项 • 首先取得服务器上的最新产品 • 确保所要提交产品的正确性(文档被确认过,代码通过编译,工作目录的正 确等) • 与服务器上的最新版本使用工具进行比较(例如 BeyondCompare) • 添加注释(最好用英文,当然给日本做外包用日文他们也比较欢迎) • 如果不确定,最好实施 Pair check in • Subclipse 提供了资源同步功能,在 commit 之前可以利用该功能确认本地 工作目录与服务器的差别。 • 非服务器管理员不允许随意在服务器上建立或删除文件、文件夹。 • 一般推荐本地只保持一个工作目录。 ※ 更多的关于 SVN 服务器以及客户端的使用可以通过网络搜索获取。
还剩25页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

guying4875

贡献于2013-03-10

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf