SVN使用总结

北城以北 提交于 2020-03-24 13:26:06

3 月,跳不动了?>>>

SVN存储数据的方式

       BDB,Berkeley DB,一种事务安全型表类型

       FSFS,"FSFS" 采用文件系统的方式, 替代原来的基于Berkeley DB的实现.

因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

SVN的运行方式及端口

 独立服务器         3690端口           访问方式SVN://    C/S模式

借助apache运行             80端口        访问方式 http://

工作流程

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

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

2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码

(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。

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

这就是经典的svn工作流程.

SVN+Apache运行原理

       SVN搭配Apache的时候,Apache需要使用mod_dav_svn这个模块,他的运行机制如下:

       在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。有源代码库管理员统一管理这些源程序。

每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后开发人员可以在本地修改,然后用svn命令进行提交,由源代码库统一管理修改。

       mod_dav_svn    可以让版本库通过http协议实现网站展现

服务SVN启动及创建测试代码

 [root@rrr ~]# svnserve -d -r /webdept/         

 #启动了所有版本库, 再 –r。如果只需要某一个版本库,

后面添加/webdept/www.xuegod.cn/的版本库即可   -d=daemon -r=root of directory of save指定根目录

导入测试代码格式:   svn [选项] 源码  svn://server ip/项目名

常见的选项:

import:将未版本化的文件纳入版本控制并提交                    

checkout:从版本库中检出一个修订版            

update:更新工作拷贝                                

add,delete,copy,move:增、删、复制、移动文件或目录

status:检查状态差异                                     

diff:检查文件行级详细差异

revert:恢复                                                           

resolve:解决冲突

switch:切换工作拷贝对应的版本库分支             

log:查看历史记录

list:显示文件目录                                                    

cat:查看某个文件内容

svnadmin create :创建项目

需要修改每个项目下的配置文件conf目录下的三个:authz、passwd、svnserver.conf

svnserver.conf:将下列注释行取消注释

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = ceshi

passwd和authz安装配置文件中的格式修改即可。

拓展:commit,SVN的提交是将在工作空间做的修改进行提交,包括文件内容的修改,文件或目录的添加,删除,命名,移动等操作。开发项目时,你会在工作拷贝中修改项目的代码,你总要把修改之后做过的改动又存回到项目仓库中去。这个过程称为“提交”。提交是将你对工作拷贝所作的所有改动发送并存储到中央项目仓库中。

       add 功能:向文件拷贝所在的文件夹中添加新的文件,并作出标识,是新添加的,下一步提交时将一并提交到Subversion版本库中去。简单的说就是将一新文件加入svn,你添加再提交后该文件就进入subversion版本中去了;

       checkout:check out导出获得文件后,导出的文件仍处于SVN版本控制中,与版本库保持关联,比如你可以进行Svn Update或者Svn Commit操作,checkout是第一次用,后面的用法就是更新

SVN+Apache

SVN+Apache的需要subversion的两个动态库支持,同时我们需要密码的验证支持!

查看apache对svn模块的支持

/etc/httpd/modules/mod_authz_svn.so  

/etc/httpd/modules/mod_dav_svn.so

#两个模块对应的物理路径  ;若没有该模块,则yum install + 模块名即可

配置apache支持svn

 [root@rrr ~]# vim /etc/httpd/conf.d/subversion.conf               //末尾添加这些行

创建用户passwd文件

# mkdir /webdept/svn

# htpasswd -c /webdept/svn/passwd user1

 #第一次用c,创建,第二次就不用

# htpasswd /webdept/svn/passwd user2              

#第二次不能用-c,否则会覆盖webuser

# htpasswd  /webdept/svn/passwd user3

 # vim /webdept/svn/authz     #创建权限控制文件 

[groups]

all = user1,user2

[/]                                      #“/”表示所有仓库的跟目录下

#user1 = rw

[www.xuegod.cn:/]                 #第一个仓库,user1和user2可以读写

@all = rw

[www.godxue.cn:/]                #第二个仓库目录,user2和user3可以读写

User2 = rw

User3 = rw

启动服务测试

 [root@xuegod67 ~]# systemctl restart httpd

访问http://10.10.10.67/webdept/www.xuegod.cn            user1和user2可以读取,user3不可以

Windows客户端下操作

       Windows下使用TortoiseSVN工具来配置,官方网站:http://tortoisesvn.net/downloads.html

 

需要修改目录权限才可以提交代码。

# chown -R apache.apache /webdept/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!