《2022年Svn版本管理教程 .pdf》由会员分享,可在线阅读,更多相关《2022年Svn版本管理教程 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、用 subversion(SVN) 进行版本管理老是给别人讲 svn,花时间太多,近来无事,就写了subversion的版本管理技巧,基本的没多讲,只捡重要的写了一下,以便一劳永逸,希望有用。好难编辑,终于搞完了 .版本管理约定程序员编写程序的过程中,每个程序都会有很多不同的版本,这就需要程序员很好的管理代码,在需要的时间可以取出需要的版本,并且每个版本都有一个完整的说明。我们使用 Sub Version(简称 SVN)作为版本管理工具。这里着重介绍SVN 作为跨平台的多人协作使用方法。在多个程序员管理同一段代码的过程中,版本的管理显得尤为重要,使用SVN 可以方便的进行分支、合并,记录下所有
2、的版本。SVN 基本配置在开始某项软件、文档的开发与撰写时,首先由配置管理负责人建立SVN 仓库、用户名及其权限,并通知相关人员SVN 仓库地址、 SVN 仓库负责人。配置强制注释SVN 仓库的负责人把工程的tsvn:logminisize 设置为 1,以便强制注释。设置方法:在你的工程文件夹右键 -属性中,进入 Subversion标签,选中 tsvn: logminisize,确保复选框 recursive选中,然后点击 Set按钮把它的值设为1,其意思是指提交的注释最短长度为一个字。如图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
3、 - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - SVN 软件配置1.忽略文件在 SVN 的Setting的General中,设置需要忽略的文件以便忽略掉一些临时的、无用的文件,常被忽略的文件有 *.opt *.ncb *.suo *.plg *.pch *.idb *.pdb *.scc *.obj Debug Release *.o *.bin *.out *.ilk *.aps debug release *.clw *.bak。每个程序员可以根据自己的需要进行修改忽略文件,上面只是使用 VC+与 Tornado编程时常
4、用的一些忽略文件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 2.合并比较工具在 Merge Tool 中可以选择用来合并的工具,强烈推荐用Araxis Merge。在Setting-Diff 中填入C:Program FilesAraxisAraxis Merge v6.5Merge.exe;在Setting-Merge 的选项中,填入C:Program FilesAraxisAraxis Merge v6.5Merge
5、.exe %theirs %mine %merged ;其中C:Program FilesAraxisAraxis Merge v6.5Merge.exe是指合并工具的路径, %theirs %mine %merged分别指 .将要合并到主干的分支,主干,及合并后的结果。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - SVN 仓库目录结构SVN 仓库的负责人规划好仓库的目录结构。推荐的目录结构如下图所示。仓库的一级目录只有两个
6、,分别为code和 doc。其中, doc主要用来放置先期的文档,code主要用来放置工程的代码,也可以包含后期的文档。仓库的二级目录只可以是branch与 trunk 两个目录,分别存放主干与分支。trunk 目录下直接存放工程文件。 branch目录下包括一些子目录分别对应各个分支。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - 本地目录结构从 SVN 仓库中取出代码时,一定不要把整个仓库取出来,而应该只取出trunk 目
7、录,或只取出 branch下的某个分支目录(比如上图中的svn:codebranchxw_051206 )。合作开发方法合作开发基本流程一个项目会有多个人共同合作开发完成。基本流程是:* 各开发成员建立自己的分支,并在此分支上开发* 各开发成员把分支合并到主干上并形成较为稳定* 各个成员重新从主干上建立新的分支,在此分支上开发(即回到 第一步)* 循环往 复,直到工程结 束。下面我用一个 例子来说明合作开发的基本流程。现在 xb 与 lzj 两个开发人员要共同开发一个工程onlytest,其这个工程的主干的SVN 仓库地址如下图。名师资料总结 - - -精品资料欢迎下载 - - - - - -
8、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - 分支的建立xb与 lzj 分别在 onlytest这个工程中建立两个分支,分别为xb _051115和 lz_051115。在这里分支 命名要采用姓名缩写_6个数的日期_后缀(可选)的形式,比如xb_051208_1,xb_051212之类的。创建完分支后我们可以 看到这个工程的目录结构如下图所示:建完之后, xb和 lzj 分别在本地取出对应的分支进行开发。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
9、 - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - 分支的合并当程序到 达一个比较稳定的 阶段,就需要把分支合并到主干上,下面讲述一下合并的流程。在本节中继续使用上一 节中所示的工程与 SVN 仓库讲 解。1.xb与 lzj 分别修改自己分支上的代码现在,主干上的 test_SVN.txt 是空文档。由 xb 与 lzj 修改提交后,两个分支中test_SVN.txt 分别如下两图所示:2.xb将 xb_051129分支合并到主干xb先把主干 check out到本地。然后在主干的目录上右键选择svn-merge
10、,弹出如下窗口:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - 此对话框的含 义是把 From 指定的分支版本到To指定的分支版本 之间的差异合并到主干上。在这里分支选的是 xb_051129。版本 号的选定方法是点击 From 中的 Show Log,在 Log 窗口中按住 Ctrl 键,点击选择 ”made a copy” 之上的那个版本,以及最 顶上的那个版本,如图 2.11所示。然后点击确定回到上图中的对话框,会自 动
11、填写 From 与 To中的 Revision号。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - - - 然后直接点击 merge进行合并,你也可以通过dry run 来看是不是两 者之间有差异。由于没有其它人修改主干,所以合并的很顺利,下图是 xb_051115与主干合并后的结果。合并完毕之后,由 xb 对主干进行提交。3.lzj 将 lzj_051129 分支合并到主干, 解决冲突xb合并完 毕之后,lzj 要将他的分支合并到主干
12、上 去,方法同上。 但是由于 xb 已经修改过主干,所以 产生了冲突,会弹出一个 冲突对话框。双击对话框中的 产生冲突 的文件名,就可以调出工具对此文件进行合并,下图是我们用merge工具显示的 界面。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 - - - - - - - - - * 首先比较 第一个窗口与第二个窗口,把结果修改合并到 第二个窗口。* 然后确保 光标处于第二个窗口时,点击上图中 红色圈圈 所示的按钮。这 样会把第二个窗口的内容全部 复制到 第
13、三个容口。之后保存, 退出。* 然后在工程目录上点右键,进行SVN-Resolved。这样会删除无用的临时文件。* 最后提交所作的修改,并添加详细 的注释。其它注意事项SVN 中的标签与 CVS 不同,使用 SVN 时不用 专门为目录 添加标签, 因为 SVN 也对目录进行版本管理。我们在提交时写好注释(比如重要的版本提交时使用051201之类的日期作为开 头),就可以通过注释来 查找比较重要的目录版本 号,相当于 CVS 或 VSS中的标签。另外,每个工程都会有一个版本说明文件,通过此文件可以查找关键版本。文件的 删除、移动与重命名你可以重 命名、移动或删除你的文件或文件夹, 但请使用 SV
14、N 进行这些 操作,否则之前 的版本信息会丢失。使用 SVN 删除、移动与重命名文件夹的方法是在文件 /文件夹上点右键进行SVN 操作,或直接在资源浏览器 中使用右键 拖放(会 弹出 SVN 选项)。文件的 删除、移动与重命名之前,必须保证工作目录是最新的版本;进行这些操作之后,需要进行提交。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - 版本的回 退在代码的编写过程中,难 免会有不 尽人意的地方,你也 许需要回 退到某一个
15、版本, 但是在这个过程中可 能有一些文件你 想保留,也有一些文件你不 想保留,这就 牵扯到很复 杂的版本管理过程,在这里给 大家推荐几种方法。1. 若是你编辑了工程,在没有提交的前提下,你 想放弃这些修改,你可以直接选择revert就可以更新到工程的最新的版本。2. 若是你想退回到某一个版本,你就可以直接选择update to reversion如图,这样我们就可以把我们的版本回 退到你选中的版本 去,这种情况 下 SVN 并没有显示出有 什么冲突 ,并且新建立的文件也 还在,但是在这 种情况 下你并不 能直接在你回 退后的版本上进行编辑, 因为SVN 的版本控制还是在最新的主干上。我们需要
16、update并解决冲突 。3. 你可以直接选择 revert changes from this revision如图,这 样的话你可以直接 解决冲突 并提交。不过这 种方法的不 足是,你新建的文件都没有了,整个工程都回退到之前的版本了。4. 我推荐的一 种方法是,直接 export 一个你需要的版本,然后用你export的版本 覆盖你的最新的版本,这 样你就可以不 丢失你新建的文件,同时 获得 head的 SVN 控制文件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,
17、共 13 页 - - - - - - - - - 提交的时 机每个工程会有很多个 小模块 ,当某个模块达 到稳定的时 候,你就需要提交一 次,以免写下个模块代码的时 候出现不可恢复的错误。每一次提交需要 前,需要通过 pclint 检查,保证是一个编 译没有错误的版本。 当提交比较稳定的版本的时 候,同时要修改你的版本 号。提交的时 候要添加注释, 若多人共同修改同一段代码我们就需要为注释添加上更加详细 的说明版本说明文件版本说明文件为 xml 表格,可用 excel编辑,它会记录下关键的版本信息。版本说明文件 内容如下表。发布版本是指用户对 外公布 的版本 号,后文中有 详细描述 ;Revision是 SVN 内部的工程文件夹的版本 号。一个发 布版本可 能对应多个 Revision:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -
限制150内