subversion是一款SVN服务器软件,subversion软件能够记录您每一次的修改情况,帮助您可以更好的来去使用。此外软件内还提供
数据恢复功能,便于您可以把自己的系统文件恢复到之前修改的状态。
【软件介绍】
Subversion是一个自由,开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。
【软件特色】
1 存储类型格式
CVS是个基于RCS文件的版本控制系统。每个CVS文件都不过是普通的文件,加上一些额外信息。这些文件会简单的重复本地文件的树结构。因此,不必担心有什么数据损失,如果必要的话可以手工修改RCS文件。
SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明。
2 速度
CVS比较慢。
整体而言,由于架构实现的不同, SVN的确比CVS快很多。在网络上它只传输很少的信息并支持更多的离线模式的功能。但这也是有代价的。速度的代价就是巨大的存储(完全备份所有的工作文件)。
3 标志&分支
SVN采用标志和分支而抛弃了其他三件东西,实际上这意味着他们把这个概念替换为在档案库内部复制文件或目录以便保存日志。这样一来,无论标志创建还是分支创建都只是仓库内部的文件复制了。对分支而言:分支不过是在仓库内部的一个单独的目录而已了,不像早期还有些什么交错。对标志而言:已经不能对代码加标志了。在某种程度上说,SVN全文件编号补足了这个缺陷,SVN里整个仓库都有版本号,但不是针对单个文件。
4 元数据
CVS只允许存储文件。
SVN允许一个文件有任意多的可命名属性,功能十分完全。
5、文件类型
CVS最初是为文本文件存储而设计的。因此其他文件类型(二进制,统一码)文件的支持几乎没有,如需要的话则要有其他信息,并且客户端服务器端都要调整
【软件功能】
包含绝大部分CVS的功能
CVS是最基本的版本控制系统。Subversion包含了CVS的大部分功能,并且针对有些功能还稍加改进。
目录的版本化
Subversion将目录名以版本号的形式体现。
基于版本的复制,删除和重命名
无论复制、删除还是重命名,都会被打上版本号,尽管这听上去有些奇怪。
自由的版本化元数据操作
Subversion允许任何元数据附加在文件或目录中。这些属性是键/值对,并且被版本化。Subversion也提供对修订版附加任何键/值属性的方法,这些属性不会被版本化,因为他们会自动将元数据附加到版本空间中,但他们可以随时被更改。
混合追踪
Subversion 1.5开始加入了混合追踪功能。
文件锁
支持文件锁定,当多个用户试图编辑同一个文件时会收到警告。
Apache网络服务的支持,基于WebDAV/DeltaV协议
使用基于HTTP的WebDAV/DeltaV协议进行网络通信,而Apache网络服务器提供网络存储的站点服务。
可执行的标签
当一个文件是可执行的时候,Subversion会提示,并且当这个可执行的文件被放在版本控制中时,Subversion会防止该程序检查其他目录。
独立进程模式
Subversion可以运行在独立模式下
一个只读的存储镜像
Subversion提供一个工具,SVNsync, 用于同步主服务器上的 文件到一个子存储服务器上,并且标为只读的属性
【使用教程】
安装
安装过程其实很简单,哪个先装都可以,设置好安装路径后一路Next到底。
我的安装路径为是 服务端:C:\Program Files\Subversion 客户端:C:\Program Files\TortoiseSVN
服务端安装好后软件会自动在系统的环境变量中增加相应的值,测试是安装完成可以在cmd命令行中输入“svn”或者“svnadmin”来测试能否运行。
部署存储库并运行服务端
建立SVN的存储库,路径以D:\SVNRepo为例,创建完该文件后,就进行Windows的服务绑定,以便以后每次重启机器后都能自动运行,这里用到的是Windows自带的创建服务的命令sc,在命令行模式下执行:
sc create SVNService binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service -r D:\SVNRepo" displayname= "SVNService" depend= Tcpip start= auto
注意这里的格式,“=”后面是必须空一格的,否则会出现错误。其中的几个路径分别是服务端安装路径和存储库的路径。
在提示建立成功后,可以直接输入“net start SVNService”来启动服务,或者可以直接在“管理工具”的“服务”中直接启动。
创建项目以及配置访问权限
进到E:\SVNRepo目录下,新建一个仓库文件夹repository,然后新建一个initproject文件夹来放最初工程,最后新建wc1文件夹,如果多个人使用,可以建多个.进到E:\SVNRepo\repository目录下,鼠标右键选择[TotoiseSVN]->[Create Repository href...]进行创建,创建之前保证该目录下没有任何的文件夹和文件。
创建成功后会在里面自动生成几个文件夹:dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号;conf存放的是配置文件;
使用
本地建库
用命令提示符进入到Subversion的安装目录下的share目录下,创建svnrepo库,输入以下的命令:
svnadmin create svnrepo
修改配置文件,开启密码访问
然后可以见到share目录下有个svnrepo目录,打开svnrepo目录下的conf目录,
用记事本或者notepad++这样的软件打开svnserve.conf文件,
如图把password-db = passwd 前的#去掉
PS.anon-access = read表示匿名访问为只读
添加账户
用记事本或者notepad++这样的软件打开passwd文件,在
[users]
# harry = harryssecret
# sally = sallyssecret
后面添加一行
zn=123456
表示添加了一个用户,前面的是用户名zn,后面的是密码123456。
启动Subversion服务器
在命令提示符中运行以下命令。其中-d是后台运行,-r是root用户,超级管理员。
svnserve -d -r svnrepo
客户端TortoiseSVN查看代码
启动服务以后,我们可以在任何空白处右键,选择TortoiseSVN- > Repo-browser,
输入svn://localhost回车后,会显示你需要输入账号密码,就是刚才设置的用户名zn,密码123456,进去后就可以看到本地的svn库中的项目代码。这里4个项目,是我自己已经创建的。
如果想查看远程机器上的svn代码,比如输入SAE上一个应用的svn地址,就可以看到代码了。当然,你没有我的账号密码,是看不了我的这个。
客户端TortoiseSVN下载代码
比如我想把本地的上面那个abc项目的代码都下载下来,就可以在想放代码的路径下,比如我这里放在D盘,空白处右键,选择SVN Checkout…,然后填写相应的URL svn://loaclhost/abc,下载完后可以看到abc目录上带绿色的箭头。
我们可以在abc目录上右键,可以看到其SVN信息,有Subversion中有对应的URL地址等。
客户端TortoiseSVN提交代码
1).添加新文件
2).上传修改的代码
这个可以看到,新添加的1.php文件上面没有小颜色的图标,修改过的文件index.php会变成红色。同样的,你也可以删除文件。对于修改过的文件,你还可以用TortoiseSVN -> Diff,对比修改前面的代码。
提交的时候,可以回到abc目录上右键,也可以直接在目录里面空白处右键,选择SVN Commit,写上提交的原因。这个也是为了以后方便自己查看,你改这些代码是做什么用的。点击OK就提交完成了。
TortoiseSVN中也可以查看log,查看各版本修改的地方。可以在下载代码(checkout)的时候,也可以选择下载哪想版本的代码。默认是HEAD的。这几个是最基础的功能,会这些,平常就可以用了。