`
eyejava
  • 浏览: 1267099 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

代码版本管理之SVN、Fisheye及其他

阅读更多
1.为什么是SVN,而不是CVS?
cvs有几个大缺点:
1) tag记录在单个文件上,做版本发布的时候必须对整个项目的文件全部打上tag,操作十分不便。
2)cvs的版本管理是针对单个文件的,而不是针对整个项目,所以对cvs来说只有文件的版本而很难实现项目的版本
3)cvs陈旧的技术架构严重拖累了它,已经好多年没有进步了
而svn正好解决了以上的缺点,同时还带来更多的改进:
1).性能的提高。将更多的数据和操作放在本地,这样性能大大提高。svn协议在传输数据方面性能也是相当不错的,提交一个28M的二进制文件在局域网可以达到800Kb/s的速率,而且svn处理大文件根本感觉不到down机的现象,cvs在处理大文件就有很大的问题,在eclipse里面使用经常发生commit不一致的情况,这也是没有原子提交的问题
2).据说对二进制的文件也能当作文本文件一样来处理,版本只存储变化的部分,这样可以大大节约空间,提高效率
3).目录的版本控制。svn针对目录的移动、改名、删除都当作是版本的变化
4).原子性提交。是一个很好的改进,如果mysql有了事务处理,没有事务处理能叫数据库吗?当然,逻辑性的原子性提交svn是无法帮你完成的,一个开发人员修改了10个文件,做集成测试通过后准备提交代码,但是他一次只提交了8个文件,即使这8个文件成功提交,其他开发人员update到最新版本后也可能导致编译不通过或者运行不成功。所以:开发人员养成原子提交的习惯才真正有效,即要么10个修改过的文件一并提交,要么一个也不提交。当然svn也可以加上一个限制,提交必须整个项目提交,不过这样会带来更大的麻烦,比如临时修改的代码也提交了,完全不能自己控制提交某些代码。
5).原数据管理。目录和文件下的svn:property 也当作是版本的一部分,这是svn新的概念。
6).支持http,https协议,对于远程协作更为方便有效。不过据说https和svn+ssh效率不行。
7).svn是个新东西,所以相应的客户端也是新架构,所以tortoise-svn做的比tortoisecvs好多了,subclipse也不差,良好的客户端是方便使用的保障。
8)offline模式也可以提供很多功能,比如查看历史等等,如图:

需要说明一下,svn一般使用tags目录来做版本发布,branches下面存放分支,trunk是代码变更的主干。tag和branch都是通过copy revision的方式来进行,效率很高!而且操作很简单。

当然svn也有一些缺点:
1).不能回退误提交的版本,提交一次就将永远成为版本的一部分。
2).有待发现

2.安装使用svn
windows下下载安装包,默认安装即可。安装成windows服务会方便使用,项目组使用选择svn服务即可了,所以apache也没必要安装。
使用svnadmin create初始化repository。
svn import导入版本库
具体可参照svnbook里面的《快速指南》
注:subclipse不能设置语言选项,默认读取eclipse的语言环境,所以一般是中文菜单,需要改成英文菜单得修改eclipse.ini,加上:
nl
en_US

在初始化repository和初始化导入版本库时有两点很重要:
1.项目的目录结构。
有三种目录结构可供选择
1)在svnadmin create的时候将不同项目建成不同的目录,即/project1,/project2。这样每个项目的独立的,用户权限都是独立的。事实上做这些配置也是很少的工作,copy文件修改一下就可以了。但是项目组新加一个成员必须修改好几个project的配置
2)svn/project/trunk/..., svn/project/branches/NAME/..., svn/project/tags/NAME/...
3)svn/trunk/project/.., svn/tags/project/.. ,svn/branches/project/..
2)3)两种目录结构使用的是一个repository,所以配置相同。一个repository中的revision是从1累加的,所以区分到单个project中revision将不再是连续的。1)中目录结构可以保证revision数量连续。
2.初始化导入版本的时候千万不要把不需要纳入版本管理的文件和目录导入到repository中,因为svn是不能回退的,这些东西将成为版本垃圾。一般不版本化的东西包括classes,build输出目录,.cvsignore等

3.fisheye
fisheye的功能类似于svn log(subclipse通过team-show history查看,tortoisesvn通过show log查看)。
当然fisheye是web界面查看的,通过功能远远强于svn log,同时fisheye还支持cvs,cvs log并没有svn log完善,所以对于cvs来说是相当有用的版本提交历史查看工具。
fisheye的changelog可以清晰的看到何时、何人做了哪些代码的修改,同时可以方便的看到提交的代码同前一版本或者前N版本有何不同。fisheye还有统计图,线性图、柱状图、饼图等。

4.crucible

fisheye仅仅是一个查看版本历史的工具,如果你是一个技术经理或者team leader,在查看项目成员提交的代码时有什么要评判注释的,crucible可以达到这个功能。crucible等于是一个代码审查工具。对代码的review comments还可以通过邮件发送给developer。crucible完全同fisheye结合在一起,安装了crucible就不用安装fisheye了。

5.jira

jira是众所周知的issue tracker,jira也是可以集成svn和fisheye的,而且实用性很强。
比如tester提交了一个bug,developer解决了这个bug,同时提交了几个java类,如果你想看到针对这个bug项目里面的代码做了哪些修改,jira-subversion plugin就发挥作用了。安装好subversion plugin之后,只需要developer在做svn commit的时候在comments里面写上jira id,在jira的subversion tab里面就会显示这个comments和这次提交的文件。

而jira fisheye plugin则是将fisheye的功能集成到jira中,同时也是随jira id来显示版本的变更记录。


注:
1)目前最新的atlassian-jira-subversion-plugin-0.10.3 不支持svn 1.5,不过通过升级svnkit到1.1.8以上版本就能解决这个问题。
2)fisheye plugin配置时,记得在fisheye管理界面中把Remote API设置成ON,要不然plugin连不上fisheye的!
分享到:
评论

相关推荐

    Fisheye配置文档收集.pdf

    本文将详细介绍如何配置Fisheye,使其与MySQL数据库以及Subversion(SVN)仓库进行连接,以便实现代码的高效管理和追踪。 1. 数据库配置 在配置Fisheye之前,首先需要在MySQL中创建一个专门用于Fisheye的数据库。...

    confluence,Jira,Fisheye,Crubible,Bamboo,SVN部署说明

    FishEye是Atlassian提供的一款代码审查工具,能深度集成到SVN、Git等版本控制系统中,支持代码浏览、搜索及统计分析等功能,助力开发团队提升代码质量与协作效率。 #### Crucible代码协作平台 Crucible则专注于...

    fisheye-3.5.1.zip

    《FishEye 3.5.1:Linux环境下的代码版本管理神器》 FishEye是一款由Atlassian公司开发的代码版本管理工具,它提供了一个强大的、直观的界面来查看和搜索代码仓库。FishEye 3.5.1是该软件的一个重要版本,针对Linux...

    Crucible 中文 使用说明 FishEYE JIRA SVN 代码审查工具 中文使用说明文档

    Crucible是一款强大的代码审查工具,它与FishEye、JIRA和SVN等协同工作,为软件开发团队提供了一个集中式平台,用于审阅、讨论和改进代码质量。本中文使用说明文档旨在帮助用户熟悉Crucible的各项功能,提高代码审查...

    SVN项目管理工具.rar

    12. **协同工具**:除了基本的SVN客户端,还有一些协同工具如Fisheye、Crucible,它们提供代码审查、代码统计等功能,进一步提升团队协作效率。 综上所述,"SVN项目管理工具.rar"可能包含了用于配置、操作SVN,以及...

    fisheye2.3.6 安装笔记

    Fisheye支持多种版本控制系统,如Git、SVN、Mercurial等。 2. 配置仓库的URL、认证信息,以及同步频率等参数。 3. 启动仓库同步,Fisheye会开始抓取代码库的内容并建立索引。 进一步优化: 1. 集成其他Atlassian...

    fisheye使用说明文档

    5. fisheye 能够提供详细的报表资料,可以对源代码的提交时间,以及版本库中各种类型的占有率以图表的形式进行显示,并对源代码提交的行数,版本提交及对版本修改的总次数进行 TOP10 排序。 6. Fisheye 还可以与 ...

    Fisheye的使用说明.rar

    Fisheye的主要目标是为开发团队提供一个集中式的代码仓库视图,支持多种版本控制系统,如Git、SVN、Mercurial等。它的特色在于其独特的“鱼眼”视图,可以展示代码的全貌,让开发者能够快速理解和定位代码结构。 二...

    svn web client svn客户端

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的版本。它允许团队成员协作开发,跟踪文件更改,合并代码,并轻松回溯到任何历史版本。本文将深入探讨 SVN 客户端及其Web...

    fisheye-代码评审-详细培训教程

    - **链接共享:** FishEye允许用户轻松地链接到仓库中的任意内容,如注释、差异比较、目录、文件历史记录、修订版本、源代码行以及查询结果。 **4. 分析(Expand Your Insights)** - **增强分析能力:** FishEye...

    fisheye使用文档

    Fisheye 是一款基于 Web 的代码管理系统,它能够与 SVN、CVS 等版本控制系统结合使用,帮助开发者轻松地浏览和管理源代码库。通过 Fisheye,团队成员可以实时了解代码库中的所有更改,这有助于提升团队协作效率和...

    fisheye使用文档.docx

    1. **实时源代码查看**:Fisheye能与Subversion (SVN)、CVS等版本控制系统集成,实时展示代码的最新状态,使开发人员能够随时了解代码的更新情况。 2. **代码比对**:Fisheye提供了强大的文件对比功能,允许用户...

    fisheye-3.4.3.zip

    1. **全面的源代码浏览**:FishEye支持多种版本控制系统,如Git、SVN、Mercurial等,用户可以方便地查看代码历史,比较不同版本间的差异。 2. **实时更新**:FishEye能够实时监测代码仓库的变化,一旦有新的提交,...

    初体验——FishEye

    FishEye 是一款强大的版本控制系统浏览器,特别适用于Subversion(SVN)用户,它提供了一个直观的界面来查看、搜索和浏览代码库的变更历史。在本文中,我们将深入探讨FishEye的功能及其在软件开发和测试过程中的应用...

    Crucible 是atlassian出口的代码审查工具,集成了fisheye,这里是中文的安装及使用手册

    Crucible 是 Atlassian 开发的一款代码审查工具,用于集成 Fisheye 进行代码审查。安装步骤如下: 1. **下载并安装 Crucible**:下载 `atlassian-crucible-3.5.5-x64.exe`(此版本支持 JDK6),按照向导进行安装。 ...

    FishEye内存溢出解决方法

    使用FishEye同步查看SVN代码,经常会遇到内存溢出的问题,该解决方法在64位操作系统上测试通过

    Crucible_FisheyePJ工具-crucible-4.8.2可用.zip

    它支持多种版本控制系统,如Git、SVN、Mercurial等,能够无缝地与这些系统集成,让代码审查成为持续集成流程的一部分。 Fisheye则是Crucible的配套工具,提供了一个强大的源代码浏览器。它提供了丰富的视图,使...

    JIRA 和 TortoiseSVN 结合跟踪缺陷

    1. 安装SVN客户端TortoiseSVN:这是一个图形用户界面(GUI)工具,用户可以通过图形界面方便地管理SVN版本库中的代码。安装完成后,你可以从TortoiseSVN官网(***)获取安装文件。 2. 安装TortoiseSVN JIRA插件:...

    crucible使用手册

    Crucible是一款代码审查工具,可以与FishEye集成使用,从而帮助开发团队提高代码质量。FishEye主要负责源码库的浏览操作,而Crucible则负责代码审查。使用Crucible可以帮助团队捕获代码中的主要缺陷,改进代码架构,...

Global site tag (gtag.js) - Google Analytics