如何把svn服务器a,第1张

svn服务器是提供svn服务的机器

下面由海腾曾超为您解答一下

svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。

工作流程

集中式管理的工作流程如下图:

集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明:

开始新一天的工作:

1、从服务器下载项目组最新代码。

2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。

3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。

这就是经典的svn工作流程,从流程上看,有不少缺点,但也有优点。

缺点

1、服务器压力太大,数据库容量暴增。

2、如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。

3、不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。

优点

1、管理方便,逻辑明确,符合一般人思维习惯。

2、易于管理,集中式服务器更能保证安全性。

3、代码一致性非常高。

4、适合开发人数不多的项目开发。

5、大部分软件配置管理的大学教材都是使用svn和vss。[3]

编辑本段安全性

SVN站在更高层次上对安全产品,从系统和控制的角度进行了"有机"和"无隙"的整合。

SVN是一个安全虚拟网络系统,它将系统整体的信息安全功能均衡合理地分布在不同的子系统中,使各子系统的功能得到最大限度的发挥,子系统之间互相补充,系统整体性能大于各子系统功能之和,用均衡互补的原则解决了"木桶原理"的问题。

SVN能在跨接Internet,Intranet,Extranet间的网络所有端点实现全面的安全,而且还能提供基于企业策略的信息管理机制以充分有效地利用有限的带宽。SVN可以满足各种企业***的要求,通过为公司内部网络、远程和移动用户、分支机构和合作伙伴提供基于Internet的安全连接。所以,我们可以将SVN看成是***、防火墙、基于企业策略的信息管理软件集成在一起的Internet安全的综合解决方案。在这样一个网络系统中,所有互联网服务器端和客户端都是安全的,并有一个信息管理机制以不断地通过这个外部网络环境动态地分析及满足客户的特定带宽需求。SVN提供了基于网络实现的eBusiness 应用的安全服务,它包含:

对多种应用进行全面的安全认证;

支持多种认证及PKI;

功能强大并对用户透明的通讯加密;

面向用户的集中安全策略管理;

统一跨接Internet、Intranet、Extranet的通讯。

编辑本段体系结构

带有防火墙的***网关,它是一个将防火墙和***技术紧密结合的网关产品;

SVN安全远程客户端软件包,一个功能强大的***客户端软件,支持台式机用户、远程用户和移动用户,具有集中化管理的个人防火墙功能和***用户的安全认证功能;

SVN证书管理模块,一个用于SVN的完整PKI解决方案,它将完善的CA和LDAP目录服务器技术集成在一起;

SVN硬件加密卡,可以通过硬件技术实现功能强大的各种算法以提高***的速度和性能;

SVN智能带宽管理模块,一个基于企业策略的带宽管理解决方案,可以智能地管理有限的带宽资源,以确保用于企业重要应用的***性能可靠;

SVN冗余管理模块,通过冗余网关集群和防火墙***内的SVN冗余模块,对执行重要任务的***和防火墙应用在出现故障时实现无缝切换。

自动地址转换模块,一个自动管理IP地址和命名的解决方案,通过提供IP地址服务的跟踪和集中化管理,确保可靠地控制地址分配和提高TCP/IP管理效率;

SVN安全服务器软件包,专门保护单个应用服务器安全的***网关软件,它可以保护进行敏感操作的服务器免受攻击和未授权的访问,使客户端建立与服务器间的安全认证和支持交换加密数据的连接;

SVN安全客户端软件包,它将基于状态检测的防火墙和基于IPSec的***客户端软件集成在客户端机器上,通过提供集中管理的个人防火墙和对所有企业***用户的安全认证,增强客户端机器的安全性。它与 SVN安全远程客户端软件功能相比,增强了客户端的安全功能,如访问控制和安全初始化控制等。

编辑本段发展历史

在2000年初,开发人员要写一个CVS的自由软件代替品,它保留CVS的基本思想,但没有它的错误和局限,保留CVS的基本特性但去除CVS的bug和不好的特性。

在2000年2月,他们联系《使用CVS开发开源项目》(Open Source Development

with CVS)(Coriolis, 1999)的作者Karl

Fogel,并征求了他是否愿意在这个新的项目中担任一个角色。巧合的是,当时Karl已经和他的朋友Jim Blandy讨论了一个关于新的版本控制系

统的设计。在1995年,这两人就成立了Cyclic

Software,一个提供CVS的商业支持的软件公司。虽然他们经营商业服务,但是仍然在每天都在工作中使用CVS。使用CVS的挫折感使得Jim认真

思考更好的方法来管理数据,不但确定名字为“Subversion”,而且完成了Subversion档案库的基础设计。

当CollabNet的电话到来时,Karl立即答应了加入项目中,而且Jim让他的雇主RedHat Software同意让他在这个项目中不定期工作。CollabNet雇用了Karl和Ben Collins-Sussman,并在5月开始了详细设计工作。在得到了来自CollabNet的Brian Behlendorf、Jason Robbins和Greg Stein(当时是一名活跃在WebDAV/DeltaV规范过程的自由程序员)很多创意的帮助下,Subversion很快地引起了一个活跃开发者社区的注意。它找出并欢迎很多同样在CVS上受到挫折的社员能来为这个项目做点什么。

Subversion 最初的设计Team定下了几个简单的目标。 它必须在功能上可取代 CVS,也就是说,

所有 CVS 可做到的事, 它都要能够作到。 在修正最明显的瑕疵的同时, 还要保留相同的开发模式。 还有, Subversion 应该要和

CVS 很相像, 任何 CVS 使用者只要花费少许的力气, 就可以很快地上手。

经过十四个月的编码后, Subversion 于2001年8月31日开始实现 “自行管理”。 也就是说, 开发人员不再使用 CVS 来管理 Subversion 的代码, 而以 Subversion 自己来管理。

2009年11月,Subversion被Apache Incubator专案所接收。

2010年1月,正式成为Apache软件基金会的一个顶级专案,所以为Apache Subversion[4]

目前Apache Subversion的主席为Greg Stein, 项目领导者Release manager为Wandisco公司。[4]

编辑本段优缺点

所有的文档都显示SVN可以取代CVS,同时SVN的问题和缺点都被隐藏了。不幸的是,我们并不认为SVN是CVS的替代品,尽管很多缺陷都被修改了。更有甚者,它甚至让人重回CVS。

CVS和SVN的比较类似于比较C++和Java。很明显CVS和SVN都远比SourceSafe强大的多,如同C++和Java比Basic强大的

多。CVS代表了几乎代码控制系统的所有功能项,尽管有时他的实现并不很方便。SVN修正并添加了一些CVS并不拥有功能。例如,创建标志和分支

dubious,你在编辑文件时其他人不会有任何通知。SVN并不是CVS的替代品,只是个不同的系统,类似于CVS。它有些特有的功能,足以作为采用它

的理由。这些功能使他更适合于开发环境,例如对PowerBuilder。下面你可以找到两者的相对优势、劣势。

1 存储类型格式

CVS是个基于RCS文件的版本控制系统。每个CVS文件都不过是普通的文件,加上一些额外信息。这些文件会简单的重复本地文件的树结构。因此,不必担心有什么数据损失,如果必要的话可以手工修改RCS文件。

SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明。

2 速度

CVS比较慢。

整体而言,由于架构实现的不同, SVN的确比CVS快很多。在网络上它只传输很少的信息并支持更多的离线模式的功能。但这也是有代价的。速度的代价就是巨大的存储(完全备份所有的工作文件)。

3 标志&分支

SVN把采用标志和分支而抛弃了其他三件东西,实际上这意味着他们把这个概念替换为在档案库内部复制文件或目录以便

保存日志。这样一来,无论标志创建还是分支创建都只是仓库内部的文件复制了。对分支而言:分支不过是在仓库内部的一个单独的目录而已了,不像早期还有些什

么交错。对标志而言:已经不能对代码加标志了。在某种程度上说,SVN全文件编号补足了这个缺陷,SVN里整个仓库都有版本号,但不是针对单个文件。

4 元数据

CVS只允许存储文件。

SVN允许一个文件有任意多的可命名属性,功能十分完全。

5 文件类型

CVS最初是为文本文件存储而设计的。因此其他文件类型(二进制,统一码)文件的支持几乎没有,如需要的话则要有其他信息,并且客户端服务器端都要调整。

SVN会关心所有的文件类型,不需要你来手工操作。

6回滚

CVS允许任意的回滚,在任意一个已递交的版本上,尽管这要花些时间(所有的文件都要分别处理)。

SVN不允许递交后回滚。建议把版本库里好的状态版本加到末尾,覆盖掉损坏的版本。而损坏的版本无论如何也是会存在数据库里的。(SVN的滚回操作实际上是merge操作)

7事务

CVS中的“零或一”事务原则根本没有实现。如果检入几个文件的话(加到服务器上),很有可能部分文件完成了,而另几个没有。作为一个潜规则,手工纠正这些并且对余下的文件 (而不是所有文件)一一重复检入。这样这些文件将在两阶段中被检入。SVN的确支持“零或一”事务原则,这是SVN的一大优势。

svn是什么?回答如下:

SVN全名Subversion,即版本控制系统。SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。

这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。Subversion 是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程序源码。

SVN = 版本控制 + 备份服务器简单的说,您可以把SVN当成您的备份服务器,更好的是,他可以帮您记住每次上传到这个服务器的档案内容。并且自动的赋予每次的变更一个版本。

通常,我们称用来存放上传档案的地方就做Repository。

用中文来说,有点像是档案仓库的意思。不过,通常我们还是使用Repository这个名词。基本上,第一次我们需要有一个新增(add)档案的动作,将想要备份的档案放到Repository上面。日后,当您有任何修改时,都可以上传到 Repository上面,上传已经存在且修改过的档案就叫做commit,也就是提交修改给SVN server的意思。

针对每次的commit,SVN server都会赋予他一个新的版本。同时,也会把每次上传的时间记录下来。日后,因为某些因素,如果您需要从Repository下载曾经提交的档案。您可以直接选择取得最新的版本,也可以取得任何一个之前的版本。如果忘记了版本,还是可以靠记忆尝试取得某个日期的版本。

svn自带了备份机制,至少有两种方式:

1、使用svnsync指令,将源SVN服务器上的版本库同步到备份SVN服务器去(增量同步),一般和post-commit钩子结合使用,在post-commit这个钩子中设定每次commit时自动执行一次同步操作。

2、使用svnadmin hotcopy指令,将SVN服务器上的版本库备份到某个文件夹(可以是整库备份,也可以是增量备份),可以与post-commit钩子结合使用,也可以用操作系统的定时任务来调用。

其它还有比如开源软件freefilesync,也可以实现源文件夹和目标文件夹之间的同步,可以设定同步操作的间隔时间,也可以实现备份,用起来也比较简单。

当然,最省事的方法莫过于安装Collabnet SVN Edge版SVN服务器,这个SVN服务器安装包的安装配置都很省心,基本一个安装包装完就能用,自带了SVN服务器控制台,通过控制台就可以配置进行SVN库的备份。

SVN在下载时多个小文件时会比较慢,这可能和SVN的自检有关。这是一部分,是出现网络很卡???这有多方面的原因导致的,主要的有外线稳定与否、设备性能、带宽是否足够,当然最主要的是你的内网要稳定,不出现什么内网病毒攻击,底层正常协议不出现什么异常攻击行为。像arp攻击之类的问题,必须要解决,这样才能保障你的网络正常稳定啊,换高端设备能解决吗???没找到问题根源,没从网卡上直接去做监控、做管理、做带宽管理规划,你的网络能不卡吗??推荐楼主可以去升级免疫网络,基因式的终端网卡绑定,对身份严格控制审计,对发出的任何数据做到严格的验证封包,保障你的网络安全与稳定

 1、下载绿色版svn(即zip压缩包文件,如我下的是svn-win32-156zip,当然下安装版的也可以):

  2、解压下载下来的绿色版svn和安装svn的windows客户端TortoiseSVN,按照提示安装就可以,为了能立马看到效果,最好重启下机器,呵呵

  3、创建版本库,打开命令窗口(开始->运行,键入cmd,回车),我的svn服务器解压目录为F:\svn;在命令窗口输入:

  pushd F:\svn\bin

  进入到svn解压目录下的bin目录,建立版本库,如我把版本库安装在:F:\svnrep,首先确认F盘下是否存在svnrep文件夹,没有我们可以在命令窗口键入:

  mkdir F:\svnrep

  就会创建一个snvrep文件夹,接下来,运行如下命令:

  svnadmin create F:\svnrep

  这样我们的版本库就创建了,在F:\svnrep下你可以看到自动生成了一些文件及文件夹;同时,你也可以用TortoiseSVN的图形界面来创建,在F:\svnrep文件夹中“右击->TortoiseSVN->Create Repository here”, 同样得到我们需要的结果,如果这文件夹已经创建有了,你再创建,会自动报错。

  4、配置用户和权限,打开F:\svnrep\conf目录中的svnserveconf文件,将[general](保证[general]这一行的前面不带#号,有#号就将#号去掉)下面的

  # password-db = passwd(大概在20行)及# authz-db = authz(大概在27行)

  前的#号去掉。保存文件;

  然后打开同目录中的passwd文件(可以用记事本打开),在[users](保证[users]这一行的前面不带#号,有#号就将#号去掉)下面添加用户及此用户对应的密码,格式为:

  admin = password

  表示用户为admin 密码为password 保存文件。

  同时也可以修改同目录下的authz文件,主要是用来控制用户对svn版本库里哪些目录的文件是否有读或写权限,读为r写为w,如果要赋给admin对版本库下的目录都有读和写权限,格式为:

  [/]

  admin = rw

  /代表了svn版本库下的起始位置,对于修改此文件的一些注意事项,可以到网上搜索下呵呵。

  5、运行svn服务器,在命令窗口输入:

  svnserve -d -r F:\svnrep

  这样,svn服务器程序就启动了。但不要关闭这个命令窗口,关闭就意味着svn服务器停止。

  6、导入项目到svn版本库可以用TortoiseSVN客户端进行导入,在要导入的项目文件夹上“右击->TortoiseSVN->Import…”在URL of repository输入

  svn://localhost/项目名

  在Import Message中可以输入你的信息,点击ok按钮,就开始导入了,完成导入后,项目目录没有任何变化,导入过程中没报错的话,项目中的所有文件就导入到svn的版本库里了;这个导入过程可以到任何一台能访问你svn服务器并安装好TortoiseSVN客户端的电脑上进行,在要导入的文件或文件夹上“右击右击->TortoiseSVN->Import…”,在URL of repository 输入:

  svn://svn服务器IP/项目名

  就OK

  7、从版本库中检出,即复制出一份版本库中的项目,在一个空的文件夹中“右击->SVN Checkout”,在URL of repository中输入:

  svn://localhost/项目名

  这样我们就复制出了这个项目中的文件。

  8、修改文件后更新到版本库,当项目中的某一文件作了修改,可以通过在这个文件上“右击->SVN Commit…”,这样我们就将我们对这一文件的修改提交到了版本库。

  当然还有很多功能,查看文件修改,比较文件各版本中的修改及不同处,== 不一一介绍了。注意的是TortoiseSVN客户端版本最好是和svn服务器的版本一致,有时不一致的时候会发生错误。

——第一次真正地写博客。

1 需要的安装包

其中SVN服务器、客户端的软件可默认安装。

2 SVN服务器常用操作

21 新建仓库

211 右键“Repositories”->新建->repositories,起一个仓库的名字,下一步

212 选择“空白的仓库”

213 SVN使用权限设置

一般使用“所有SVN使用者”即可,点击“create”完成仓库创建

214 创建成功后弹出“仓库信息提示”

其中有仓库的名字,重要的是仓库的链接——Repository URL: https://PC-201708232158/svn/FirstVersion。

22 新建用户

221 右键“Repositories”->新建->User

222 输入用户名,重复设置两次密码,点击“OK”即可完成创建。当客户端要连接SVN服务器的时候,需要用户名、密码的验证。

3 SVN客户端常用操作

31 设置客户端汉化版

311 开始菜单中选择“TortoiseSVN”->选择“Settings”

312 在“语言”选项中,选择“中文”,点击“确定”即可。

32 客户端连接服务器

321 开始菜单中选择“TortoiseSVN”->选择“Settings”,在弹出框中输入想要连接的仓库的url,点击“确定”

322 输入用户名、密码,点击“确定”

323 进入SVN客户端界面

324 右键FirstVersion,创建仓库文件夹

325 选中新建的文件夹,将需要放入SVN服务器的文件拖入右侧区域

4 将SVN服务器文件存到本地

41 客户端直接拖拽文件到本地

42 在本地创建一个文件夹

421 在空白处,右键选择“SVN检出”

选择版本库URL,选中要从服务器中获取的文件或文件夹

检出至目录自动选中新建的文件夹

422 点击“确定”

SVN服务器、客户端的常见操作先介绍到这里,后续将会分享其他常用的IT知识,精彩即将呈现,晚安,小伙伴们。

SVN是C/S架构,数据存放分成服务器端和客户端。创建代码库一般指的是SVN服务器端的操作,这个库随便建在什么地方都可以;你要发布的线上代码,这是存放在SVN的客户端的。

SVN的服务器端和客户端存放文件的格式是不同的,所以不能直接访问SVN服务器端的存储路径,只能通过SVN客户端将服务器端的存储内容checkout或者export出来。

理解上述这些基础知识后,你应该就明白了,你要做的事情就是:

1、先建立一个SVN服务器(可以专门安装SVN服务器端安装包,建立用http/https或svn协议访问的SVN服务器;也可以简单用TortoiseSVN创建本地的用files:///方式访问的SVN服务器);

2、在服务器端建立一个空的版本库,将你原有的www-web-项目 文件夹 上传到SVN服务器新建的版本库中;

3、在你线上存放代码的地方新建一个文件夹,并将版本库中的内容checkout到这个新文件夹,设置这个文件夹是以后线上发布代码的文件夹。

4、在你开发用的工作电脑上checkout一个文件夹出来,平时在这个文件夹修改代码,修改完成后上传到SVN服务器,然后在线上代码对应的文件夹那里更新得到上传的新代码。

这样的话,你的整个工作就分成了3个存储位置:1、服务器端,2、开发端,3、线上发布端,这就井井有条、互不干扰了。

当然,SVN要用的好,还有很多技巧,比如分支/标记的使用,比如钩子的使用(可以实现实时自动发布,每次从开发端提交后就自动更新线上发布端),那需要你继续学习了。

一、安装 SVN服务器程序

11运行 VisualSVN-Server-172msi

12选择程序安装目录 和 SVN仓库目录

我程序装在 C:\Program Files\VisualSVN Server , SVN仓库目录在 D:\SVN

13 安装完成,立即运行

二、服务器配置

21服务器维护界面

22仓库目录默认的内容

23创建新项目wapzucom

23创建用户ve

24设置项目的用户权限

Properties Security Add 选择刚创建的用户 ve ok 应用 确认

三、创建测试服务器目录 D:\WWWROOT ,本地开发目录 D:\WORKDIR

四、将代码(D:\Code )导入到项目仓库

输入用户名 密码 并 勾选 保存认证

导入成功,并返回版本号1

五、导出项目代码到工作副本、测试服务器目录

同理,另外导出一份到测试服务器目录D:\WWWROOT (测试服务器的Apache目录指向该位置)

六、使用Hooks自动更新测试服务器代码D:\WWWROOT

61 进入 D:\SVN\wapzucom\hooks 建立 post-commitbat 文件

编辑其内容 为"C:\Program Files\VisualSVN Server\bin\svnexe" update "D:\www\test" --quiet --username name --password pwd

或者可参考下面这段话:

接下来最关键的一步是,我们需要找到服务器上安装的版本库的路径下面,以版本库名称命名的文件夹下,有一个名字为hooks的文件夹,在这个文件夹下建立post-commitbat这样一个批处理文件,里面的内容如下:

@echo off

“D:\VisualSVN Server\bin\svnexe” update “D:\Apache Software Foundation\Apache22\htdocs\soupei360″ –username XXXXX –password XXXXX

update前面的路径,是SVN服务器端程序的执行文件路径, 后面的是在服务器上同步到的目录的路径,username和password后面是刚才建立用户的用户名和密码,这段批处理的意思是,当我们在本地编写代码,然后通过svn的commit提交时候,首先提交到版本库中,然后版本库自动用这个批处理,把内容同步到服务器上之前指定的文件夹中,从而实现本地和远程同步操作。

两款SVN配置软件的具体配置教程可以通过搜索引擎得到具体设置方法,在此需要特意强调的是,一定要将本地和服务器上的目录都check out后,批处理才能够自动同步,服务器上的目标文件夹没有check out的话,即使设置的路径正确,也是不能同步的。

62 设置访问权限

我的电脑 右键 管理 服务和应用程序 服务 VisualSVN Server 右键 属性 登陆 添加访问权限 用系统管理员账号(我这里是user)

重启服务器

63测试Hooks工作是否正常

修改 indexphp 状态

提交修改

最后打开D:\WWWROOT\indexphp 可以发现代码已经被成功update

PS : 目录说明

C:\Program Files\VisualSVN Server 服务器安装目录

D:\SVN 仓库更目录

D:\WORKDIR 本地开发用的工作目录

D:\WWWROOT 服务器测试目录(Apache 指向该目录,即可实现工作目录内容修改后提交到SVN自动发布到测试目录)

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何把svn服务器a

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情