1.Centos6.8下搭建SVN服务器
Subversion是一个自由,开源的版本控制系统。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,
不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。
Subversion是Apache基金会下的一个项目,官网 https://subversion.apache.org/ 。
2.安装
yum -y install subversion
3.创建SVN版本库
mkdir -p /svn ##创建目录
svnadmin create /svn/ice ##创建ice版本库
svnadmin create /svn/ios ##创建ios版本库
rm -rf ios/ 用来删除删除版本库
4、如果单个svn 库或者各自库配置自己的文件 跳过这一步 如果实现一套配置文件管理多个svn库请继续往下看
1>将其中ice 内部的conf 文件夹 移出来 然后将ios 内部的conf文件夹删除(因为2个库共用一套配置所以 只保留一个就够了) 效果图如下
5.配置文件
conf文件夹里边有三个文件
1>passwd 里边存的是账号密码
admin是账号 admin123是密码(有多少账号添加多少)
2>authz 内部存的是 账号权限
gg是分组用来处理多账户权限管理
[ice:/] 表示 ice的那个svn 库
@gg = rw 表示gg 分组的所有用户都有读写权限
admin3 = rw 表示admin3 有读写权限
* = 表示 其他所有匿名账户不允许访问
* = r 表示允许匿名账户读
* = rw 表示允许匿名账户读写
同理不同的库svn 库可以在在这里给不同用户分配权限
3>svnserve.conf是配置文件
auth-access 是给svn 库开启读写
realm svn库的根目录
以下 如果不是多个库访问一套配置文件 则默认路径即可不用修改
password -db 是用户名密码文件的路径 因为要多个库 访问同一个配置所以这里需要改为文件绝对路径,
authz -db 账户权限文件 同需要绝对路径
5、重启svn服务
1> killall svnserve关闭服务
2>svnserve -d -r /svn 启动服务 (正常启动服务)
svnserve -d -r /svn --config-file=/svn/conf/svnserve.conf (多个库访问一套配置文件 需要制定 配置文件的位置 所以使用这个代码启动服务)
3>ps aux | grep svnserve #查看服务是否启动
6、确认有没有开启3690 端口
netstat -an | grep 3306 查询端口有没有打开 如果打开显示
否则
/etc/sysconfig/iptables 回车
要打开那个端口就添加那个端口(以下是80 端口和3690 端口)
-A INPUT -m state -–state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –-state NEW -m tcp -p tcp –dport 3690 -j ACCEPT
然后 “:wq” 退出
然后保存:etc/rc.d/init.d/iptables save
在看看是否已经有了3690端口的开放权限:netstat -an | grep 3690
7、连接svn
8、设置svn 开机自启动
1.>创建执行脚本svn.sh(/root路径下,随便哪个路径),其内容很简单,如下:
#!/bin/bash
svnserve -d -r /svn --config-file=/svn/conf/svnserve.conf(svn资源库路径)
2.>添加可执行权限
# chmod ug+x /root/svn.sh
3.>添加自动运行
vim /etc/rc.d/rc.local
在最后添加一行内容如下:
/root/svn.sh
svn使用
1、checkout
#svn co svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码 #svn checkout svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码
2、往版本库中添加新的文件
svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)
例如:svn commit -m "add test file for my test" test.php
简写:svn ci
4、加锁/解锁
svn lock -m "LockMessage" [--force] PATH 例如:svn lock -m "lock test file" test.php svn unlock PATH
5、更新到某个版本
svn update -r m path 例如: svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。 svn update -r 200 test.php(将版本库中的文件test.php还原到版本200) svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit) 简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示) 【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 2)svn status -v path(显示文件和子目录状态) 第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。 注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。 简写:svn st
7、删除文件
svn delete path -m "delete test fle" 例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file" 或者直接svn delete test.php 然后再svn ci -m 'delete test file‘,推荐使用这种 简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info test.php
10、比较差异
svn diff path(将修改的文件与基础版本比较) 例如:svn diff test.php svn diff -r m:n path(对版本m和版本n比较差异) 例如:svn diff -r 200:201 test.php 简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path 例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help
svn help ci