SVN与GIT

SVN服务器是版本控制管理工具,其核心是集中式代码管理。
开发者在开始新一天工作之前必须现在本地update一下代码,然后开发、解决冲突、合并。所有的版本信息都放在SVN上面。

一、运行方式
svn服务器有两种运行方式:独立服务器、借助apache运行。
1、独立服务器访问
如:svn://svn.test.com/test

2、借助Apache等http服务
如:http://svn.test.com/test
(1)单独安装Apache+svn
(2)CSVN(Apache+SVN)是一个单独的整合的软件,带web界面管理的SVN软件

3、本地直接访问
访问地址如:file:///application/svndata/test

SVN客户端访问方式
svn客户端可以通过多种方式访问服务器端,例如:本地磁盘访问,或各种各样的网络协议访问,但是一个版本库地址永远都是只有一个URL,

URL反映了访问方法:
(1)file:/// 直接通过本地磁盘或者网络磁盘访问版本库
(2)http:// 通过WebDAV协议访问支持Subversion的Apache服务器
(3)https:// 与http://相似,但是用SSL加密访问
(4)svn:// 通过TCP/IP自定义协议访问是SVN服务器
(5)svn+ssh:// 通过认证并加密的TCP/IP自定义协议访问svn服务器

二、数据存储
svn存储版本数据有两种方式:BDB(一种事务安全型表类型)、FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

(1)BDB
伯克利DB(Berkeley DB),版本库可以使用的一种经过充分测试的后台数据库实现,不能再通过网络共享的文件系统上使用,伯克利DB是Subversion1.2版本以前的缺省版本库格式。
(2)FSFS
一个专用于Subversion版本库的文件系统后端,可以使用网络文件系统(例如:NFS或SMBFS)。是1.2版本及以后的缺省版本库格式。

svn是基于关系型数据库的BDB或一系列二进制文件的FSFS。这解决了许多问题(如:并行读写共享文件)以及添加了许多新功能(如:运行时的事物特性)。然而另一方面,数据存储由此变得不透明,不能像ftp,samba,nfs等能看到实体的文件。

三、工作原理
SVN是一个增量式的版本控制,它不会讲各个版本的副本都完整的保存下来,而只会记录下版本之间的差异,然后按照顺序更新或者恢复特定版本的数据。这使得服务端的存储量会非常低。

 

SVN:一个自由开源的版本控制系统,将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节。

复制-修改-合并方案(默认模式):

在这种模型里,每一个客户读取项目配置库,建立一个私有的工作副本,版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。

锁定-修改-解锁方案:

在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改,此模式不适合软件开发。

SVNd的一些概念:

repository(源代码库),源代码统一存放的地方

checkout(提取),当你的手上没有源代码的时候,你需要从repository checkout一份

commit(提交),当你已经修改了代码,你就需要commit到repository

update(更新),当你已经checkout了一份源代码,update一下你就可以和repository上的源代码同步,你手上的代码就会有最新的变更。

日常开发的过程:update获得最新代码--做出自己的修改并调试成功--commit

SVN服务器有2种运行方式:独立服务器和借助apache运行,两种方式各有利弊,用户可以自行选择

SVN存储版本数据也有2种方式,BDB一种事务安全型表类型和FSFS一种不需要数据库的存储系统,因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

SVN服务器:VisualSVN

SVN客户端工具:TortoiseSVN

git和SVN的区别

     SVN:Apache Subversion通常被缩写为SVN,是一个开放源代码的版本控制系统。svn管理着随时间改变的数据,这些数据放置在一个中央资料档案库,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以恢复之前的版本和浏览文件的变动情况。

      git:git不仅是一个开源的版本控制系统,更是一个内容管理系统,工作管理系统。

     区别:

            1、git是分布式的,svn不是;这是git和其他非分布式版本控制系统(例svn、cvs等)最大的区别。

            2、git把内容是按元数据方式存储,而svn是按文件处理的:所有的资源控制都是把文件的元信息隐藏在一个类似.svn、.cvs等的文件夹中。

            3、git分支和svn分支的不同:分支在svn中一点都不特别,它其实就是版本库中的一个目录。

            4、git没有一个全局的版本号,而svn有:目前为止这是跟svn相比git缺少的最大的一个特征。

            5、git的内容完整性优于svn:git的内容存储使用的是SHA-1哈希算法,这能确保代码内容的完整性,确保在遇得到磁盘故障和网络问题时降低对版本库的破坏。

 

 SVN的部分:
1、svn的一些概念:

repository(源代码库):源代码统一存放的位置。
checkout(提取操作):当本地没有代码时,你需要从repository中checkout一份。
Commit(提交操作):当在本地创建了新的文件或者对之前的文件内容进行了修改,你就需要commit到repository。
Update(更新操作):当你checkout了一份repository中的代码之后,update操作就会将本地的代码变更为最新的版本。
日常的操作流程简单介绍:
当你checkout已经很长时间了--->update操作(首先将自己本地获取到最新的变更版本)--->做出一版变更(自己的修改操作并已经进行调试成功)---> commit操作(之后,大家就可以看到你自己的修改部分了)
conflict(冲突):svn管理代码是以行为单位的,也就是说两个程序员同时更改同一份文件,只要不是在同一行,svn都可以合并这两个程序员的修改操作;but,如果不是同一行,svn会提示conflict(冲突),需要手动解决。
git部分:
本文不将介绍git的安装部分的一些操作,直接从内容入手:

首先,git的工作流程:

克隆git资源作为工作目录。
在克隆的资源目录上进行修改、添加文件操作。
如果在此过程中,有人对资源进行了改动,首先对本地资源进行更新;如果确定未进行更改,可直接进行提交操作。
在提交之前查看修改部分。
确认无误之后进行提交操作。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HappyGirl快乐女孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值