SVN是Subversion的简称,是一个自由开源的版本控制系统。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节早期版本控制使用的是CVS,后来SVN替代了CVS,随着android兴起,出现Git版本控制工具。
SVN架构
Subversion支持Linux和Windows,更多是安装在Linux下。
svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。
svn存储版本数据也有2种方式:BDB一种事务安全型表类型和FSFS一种不需要数据库的存储系统。
因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
首先要确保linux安装了yum,如果没有安装,首先先安装yum
yum install subversion2. 配置
我们这里在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下面,创建成功后在svn下面多了几个文件夹。
[root@localhost home]# mkdir svn [root@localhost home]# svnadmin create /home/svn [root@localhost home]# ll svn
我们这里特别关注一下conf文件夹,这个是存放配置文件的
[root@localhost home]# cd svn/conf [root@localhost conf]# ll
其中:
authz 是权限控制文件
passwd 是帐号密码文件
svnserve.conf 是SVN服务配置文件
接下来我们依次修改这3个文件。
配置passwd
[root@localhost conf]# vi passwd [users] kejizhentan=123456 test=123456
上面的例子中我们创建了2个用户,一个test1,一个test2
配置authz
[root@localhost conf]# vi authz [/] kejizhentan=rw test=r *=
上面配置的含义是,kejizhentan对/home/svn/下所有文件具有可读可写权限,test只有只读权限,除此之外,其它用户均无任何权限,最后一行*=很重要不能少。
使用用户分组(一般不用)
[root@localhost conf]# vi authz [groups] group1 = kejizhentan group2 = test1,test2 [/] @group1 = rw @group2 = r * =
上面配置中创建了2个分组,分组1的用户可读可写,分组2的用户只读。
格式说明:
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
配置svnserve.conf
[root@localhost conf]# vi svnserve.conf 打开下面的5个注释 anon-access = read #匿名用户可读 auth-access = write #授权用户可写 password-db = passwd #使用哪个文件作为账号文件 authz-db = authz #使用哪个文件作为权限文件 realm = /home/svn # 认证空间名,版本库所在目录
3. 启动与停止注意:
[root@localhost conf]# svnserve -d -r /home/svn(启动) [root@localhost conf]#killall svnserve(停止)
测试是否搭建成功:
随便找个文件夹,点击SVN checkout
访问的url是: svn://192.168.193.225
至此,说明svn搭建成功了。
4. 如何删除掉svn文件夹我们经常无法删除掉svn文件夹,效果如下:
我们只要建立一个文本文件,取名为kill-svn-folders.reg(扩展名由txt改为reg),内容如下:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellDeleteSVN] @="Delete SVN Folders" [HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellDeleteSVNcommand] @="cmd.exe /c "TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r "%1" %%f IN (.svn) DO RD /s /q "%%f" ""
保存之后,双击这个reg文件。成功后,在每一个文件夹上点击右键都会有一个“Delete SVN Folders”的选项,点击之后,既可以删除这个文件下下面所有的.svn文件了:
然后再删除文件夹就可以成功了
TortoiseSVN是一个基于windows系统的svn客户端图形化界面.
安装太简单了,就不演示了。
浏览仓库
正常情况下,在浏览仓库时会要求录入username与password 我们可以清空svn客户端的缓存
注意:检出后会有一个.svn隐藏目录
2. add将文件交由svn管理 3. commit 提交到svn服务器SVN文件夹图标显示不正常的解决办法:
右击任意文件夹,选择TortoiseSVN ——>Settings
从弹出的对话框左侧选择Icon Overlays(图标覆盖),右侧的Status cache中选择Shell
找到软件的安装包,双击选择下一步,选择repair(修复)。完成就好了,有些时候可能需要重启系统。
我的完成了之后遇到了一点小问题,不过重启了资源管理器之后,就可以了。
标记删除操作,本地文件会删除,我们需要进行提交,才能真正从服务器删除
import将本地资源导入到svn服务器
Export导出项目,和checkout的区别,它不存在.svn隐藏文件
手动Merge之后就剩HelloWorld.java文件,说明冲突已解决
我们采用手动Merge,解决冲突后,重新commit.
前提是我们的电脑上已经安装了TortoiseSVN
注意:
TortoiseSVN安装如目录下没有svn.exe的解决方法:
打开我们TortoiseSVN的安装包,双击打开,选中Modify(点那个电脑小图标),然后按我的截图操作即可。
idea配置的具体步骤如下:
打开svn管理的项目,结果显示这样说明svn配置成功了
2. IDEA 下SVN使用1.Update Project 更新项目
2.Commit changes 提交项目上所有变化文件
3.Compare with the Same Repository Version 当前文件与服务器上该文件通版本的内容进行比较。如果当前编辑 的文件没有修改,则是灰色不可点击。
4.Show history 显示当前文件的历史记录
5.Revert 还原当前被修改的文件到违背修改的版本状态下
1.Local Changes 本地修改过的文件都会出现在这里
2.Repository svn仓库所有提交记录
3.Incoming 本地还没有更新的别人提交的代码
跟小乌龟使用一样,不过多解释了



