常见的源代码管理工具

  • CVS

    • 历史悠久,现在几乎没人使用
  • SVN
    • 集中式版本控制的代表
    • CVS的接班人,速度比CVS快,功能比CVS强大
    • 在国内使用率非常高(70%~90%)
  • GIT
    • 分布式源代码管理工具
    • 目前被大多数开源项目使用
    • 不过在国内企业尚未大规模普及

源代码管理工具出现的意义

  • 目的

    • 为了解决在软件开发过程中,由源代码引发的各种繁琐的问题
  • 常见问题
    • 无法后悔:做错了一个操作后,没有后悔药可以吃
    • 版本备份:费空间、费时间
    • 版本混乱:因版本备份过多造成混乱,难于找回正确的想要的版本
    • 代码冲突:多人操作同一个文件(团队开发中的常见问题)
    • 权限控制:无法对源代码进行精确的权限控制
    • 追究责任:出现了严重的BUG,无法得知是谁干的,容易耍赖
  • 作用
    • 能追踪一个项目从诞生一直到定案的过程
    • 记录一个项目的所有内容变化
    • 方便地查阅特定版本的修订情况

SVN

  • 原理
 
 
  • 使用环境

    • 要想利用SVN管理源代码,必须得有2套环境

      • 服务器

        • 用于存储客户端上传的源代码
        • 可以在Windows上安装Visual SVN Server
        • 大部分情况下,公司的开发人员不必亲自搭建SVN服务器
      • 客户端
        • 上传本地的源代码到服务器,或者更新服务器的代码到本地,保持同步
        • 可以在Mac上使用命令行、Versions、Cornerstone、Xcode
        • 开发人员就属于客户端这个角色
  • SVN下载地址

安装

  • 第一步

    • 双击打开VisualSVN-Server-2.7.7.msi
 
 
  • 第二步

    • 同意遵守协议
 
 
  • 第三步

    • 选择Visual VSN 服务器和管理控制台, 和添加SVN命令行工具到系统Path路径, 然后下一步
 
 
  • 第四步

    • 选择版本
 
 
  • 第五步

    • 由于SVN都是在公司内网里使用,不存在数据被截取的安全问题
    • 所以为了速度更快,不要使用https
    • 取消勾选 Use secure connection(https://)
 
 
  • 第六步

    • 开始安装
 
 
  • 第七步

    • 安装完成后会询问你是否需要运行
 
 
  • 第八步

    • 安装成功打开软件
 
 

创建代码仓库

  • 第一步
 
 
  • 第二步

    • 填写代码仓库的名称
 
 
  • 第三步
 
 
  • 仓库目录说明

    • db目录:就是所有版本控制的数据存放文件。
    • hooks目录:脚本文件的目录。
    • locks目录:用放置hook来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端。
    • format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
    • conf目录:是这个仓库的配置文件(仓库的用户访问帐号、权限等)
  • 第四步

 
 

添加用户

 
 
 
 

访问SVN服务器

  • 本机直接访问
 
 
 
 
  • 如果其他电脑想要访问仓库

    • 要把仓库地址的前缀换成电脑的IP

对比Git

  • 适用对象不同。 Git 适用于参与开源项目的开发者。 他们由于水平高,更在乎的是效率而不是易用性。Svn 则不同, 它适合普通的公司开发团队。使用起来更加容易。

  • 使用的场合不同。 Git 适用于通过Internet,有多个开发角色的单个项目开发, Svn 适合企业内部由项目经理统一协调的多个并行项目的开发。

  • 权限管理策略不同。 Git 没有严格的权限管理控制,只要有帐号,就可以导出、导入代码,甚至执行回退操作。 Svn 则有严格的权限管理, 可以按组、按个人进行针对某个子目录的权限控制。区分读、写权限。更严格的,不支持回退操作。保证代码永远可以追踪。

  • 分支( branch )的使用范围不一样。 Git 中, 你只能针对整个仓库作 branch, 而且一旦删除,便无法恢复。而 svn 中, branch 可以针对任何子目录,它本质上是一个拷贝操作。 所以,可以建立非常多、层次性的 branch, 并且,在不需要时将其删除,而以后需要时只要 checkout 老的 svn 版本就可以了。

  • 基于第三点, Git 适用于单纯的软件项目,典型的就是一些开源项目,比如 Linux 内核、 busybox 等。相反, Svn 擅长多项目管理。 比如,你可以在一个 svn 仓库中存放一个手机项目的 bsp/ 设计文档 / 文件系统/ 应用程序 / 自动化编译脚本, 或者在一个 svn 中存放 5 款手机项目的文件系统。 git 中必须建立 n ( 项目数 )* m (组件数) 个仓库。 Svn 中只需要最多 n 或者 m 个就可以了。

  • Git 使用 128 位 ID 作为版本号, 而且 checkout 时要注明是哪个 branch, 而 svn 使用一个递增的序列号作为全局唯一的版本号, 更加简明易懂。虽然可以使用 git tag 来建立一些文字化的别名,但是毕竟那只是针对特殊版本。

  • 可跟踪性,git 的典型开发过程为: 建立分支,进行开发,提交到本地 master,删除分支。这样做的后果是以前 的修改 细节会丢失。 而在 svn 下做同样的事情,不会丢失任何细节。 这里是一个有趣的链接,表明了 git 下典型的工作方式:(以master为核心,不断创建新branch, 删除旧branch):

  • 局部更新,局部还原。SVN由于是在每个文件夹建立一个.svn文件夹来实现管理,所以可以很简单实现局部更新或者还原。假如你只希望更新某些部分,则svn可以很好实现。同时代码写错了,同时可以很好实现局部还原,当然git也可以通过历史版本还原,但是无法简单地实现局部还原。

SVN服务器搭建教程的更多相关文章

  1. 搭建SVN服务器详细教程

    搭建SVN服务器详细教程 本教程会从最基本的下载安装到上传代码,下载代码这条线来详细讲述如何完成SVN服务器的搭建 下载并安装VisualSVN server 下载并安装TortoiseSVN 导入项 ...

  2. Linux搭建SVN服务器详细教程

    前言 本文讲解Linux系统下如何搭建SVN服务器,详细说明各配置项的功能,最终实现可管控多个项目的复杂配置. SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统 ...

  3. ​Linux下的SVN服务器搭建

    ​Linux下的SVN服务器搭建 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总 ...

  4. Linux下的SVN服务器搭建

    鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始****** ...

  5. SVN服务器搭建--Subversio与TortoiseSVN的配置安装

    SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上 ...

  6. linux 中 svn 服务器搭建 重启

    鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始****** ...

  7. Linux centos7 下 svn 服务器搭建

    摘自:https://www.cnblogs.com/mymelon/p/5483215.html 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在 ...

  8. Linux下的SVN服务器搭建(转)

    Linux下的SVN服务器搭建   鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此 ...

  9. linux svn 服务器搭建问题

    我的svn版本 svn, version 1.7.14 (r1542130) compiled Nov 20 2015, 19:25:09 Copyright (C) 2013 The Apache ...

随机推荐

  1. SSH 使用密钥登录并禁止口令登录

    小结:修改下sshd配置文件,把公钥传上去就好了 先生成公钥和私钥,默认在/root/.ssh/目录,可以先看一下有没有这个目录. 生成公钥后,以后其它服务器也都可以复用这个公钥 最好生成时输入密码! ...

  2. HTTP POST请求数据提交格式(转)

    FROM: http://bbs.125.la/thread-13743350-1-1.html HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT ...

  3. javascript的defer和async(转载)

    http://ued.ctrip.com/blog/?p=3121 我们常用的javascript标签,有两个和性能.js文件下载执行相关的属性:defer和async defer的含义[摘自http ...

  4. 资源:Localization – 本地化

    Resource Dictionary –资源字典 所有的资源项在最终都会被整合到Resource Dictionary中的,也就是说无论是FrameworkElement的Resources,还是W ...

  5. 用Delphi实现网络视频编程

    在MSN.QQ等聊天类的应用程序中,都应用到了网络视频技术.Delphi使用Object Pascal语言是一种完全面向对象语言,可以开发出灵活强大的程序,开发网络视频程序也不在话下.一个完整的网络视 ...

  6. SAM4E单片机之旅——13、LCD之ASF初步

    在Atmel Studio 6中,集成了Atmel Software Framework(ASF框架).通过它提供的库,可以很快速地完成新的项目. 这次的最终目标使用ASF在LCD上显示出文字“Hel ...

  7. MVC教程--MiniProfiler.EF监控调试MVC和EF的性能

    上一篇谈到mvc中ef输出执行sql日志:来谈用mvc开发项目的调试和性能监控.EF框架自动给我生成sql语句,当我们的程序遇到性能问题的时候我们可以用MiniProfiler.EF来监控调试MVC和 ...

  8. css position 几种定位

    绝对定位:position:absolute 绝对定位使元素的位置与文档流无关,因此不占据空间. 绝对定位的元素的位置相对于最近的已定位祖先元素(absoulte.relative),如果元素没有已定 ...

  9. protobuf json xml比较

    1 protobuf/xml/json对比 从数据的存储格式的角度进行对比 假如要存储一个键值对: {price:150} 1.1 protobuf的表示方式 message  Test { opti ...

  10. Locality-sensitive hashing Pr[m(Si) = m(Sj )] = E[JSˆ (Si, Sj )] = JS(Si, Sj )

    A hash function that maps names to integers from 0 to 15. There is a collision between keys "Jo ...