系统版本 Centos 6.4 64位

升级原因:

网站在360网站检测里面有提示发现SVN版本控制信息文件,修复方案是升级到1.7即可。用yum install subversion 升级后的版本是1.6.6,还是不行,就手动升级了

wKiom1OcHZqz2Bc5AADg7SfkNLg195.jpg

安装svn:

https://subversion.apache.org/download/

http://tortoisesvn.net/downloads.html 

http://www.subversion.org.cn/svnbook/1.4/ 

http://pan.baidu.com/s/1GSxHW 里面有客户端包和中文说明手册 官网地址http://tortoisesvn.net/support.html

svn 1.8.9在编译的时候./configure 需要apr,apr-util,sqlite三个软件包,所以先安装

yum remove subversion
tar -xzf apr-1.4.6.tar.gz
cd apr-1.4.6
./configure
./configure --prefix=/usr/local/apr
make
make install
cd ..
 
tar -xzf apr-util-1.4.1.tar.gz
cd apr-util-1.4.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
make
make install
cd ..
 
tar -xzf subversion-1.8.9.tar.gz
wget http://www.sqlite.org/sqlite-amalgamation-3071300.zip
unzip sqlite-amalgamation-3071300.zip
mv sqlite-amalgamation-3071300 ./subversion-1.8.9/sqlite-amalgamation
cd subversion-1.8.9
./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
make
make install


安装后验证版本:

/usr/local/svn/bin/svnserve --version

wKiom1OcHqOQsmbyAAHIy0gSuKA151.jpg


创建一个svn的工作文件夹 /data/svn

mkdir -p /data/svn
/usr/local/svn/bin/svnadmin create /data/svn

编辑配置文件

cd /data/svn/conf
vim passwd
[users]
# harry = harryssecret
# sally = sallyssecret
bbotte = 123456
 
vim authz
[aliases]
[groups]
bbottegroup = bbotte
[/]
@bbottegroup = rw
* =
 
grep -v ^\# svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /data/svn
[sasl]
 
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
service iptables restart
 
/usr/local/svn/bin/svnserve -d -r /data/svn
ps aux|grep svn|grep -v grep
root      3412  0.0  0.0 139816   852 ?        Ss   14:27   0:00 /usr/local/svn/bin/svnserve -d -r /home/svndir/

配置说明

conf下面 password文件夹是放注册用户的,前两个#注释的是示例,下面写 用户名=密码 


authz 是用以控制权限,用来建立用户组,对组进行权限设置,一个组内权限一样,一般有 rw、r。group下面可以建多个组,每组一行,如果一组多人,后面用“,”隔开。

下面[/] 一行是项目名称

为了阻止其他用户组对这个文件有读的权力,我们可以再添加一句:* =


svnserve.conf是主配置文件,去掉password-db = passwd和authz-db = authz前面的注释符“#“,当然也可以自己定义。将anon-access= read前面的“#”去掉,并将read参数修改为none,表明禁止匿名用户对版本控制库的访问


客户端登陆

在windows 64位电脑安装 TortoiseSVN-1.8.5.25224-x64-svn-1.8.8.msi

安装后运行TortoiseSVN Repository Browser

在URL 输入框输入:svn://IP/svn/  在弹出的登录框输入用户名bbotte,密码 123456

wKioL1PbStmi2ZZSAAFyn22_i2U219.jpg


客户端常用操作:

1,在电脑桌面新建文件夹svndir,选择“SVN检出”

wKioL1PbRbfyjKGTAACzY-V25Pg579.jpg

wKiom1PbROrwZidVAAEsO4Nl3GM510.jpg


2,修改文件内容后,选择“SVN提交”

wKiom1Pe9H7DCJXhAADXY_L0cbY490.jpg

3,如果其他人正好已经修改了这个文件,自己电脑上的文件没有和服务器同步,那么先选择“SVN更新”,再“SVN提交”,以免出现下面错误


wKiom1PbS1XASC8TAADYjWl3L68434.jpg

4,冲突

文件冲突

假设A、B两个用户都在版本号为1的时候,更新了test.txt这个文件,A用户在修改完成之后提交test.txt到服务器,这个时候提交成功,这个时候test.txt文件的版本号已经变成2了。同时B用户在版本号为1的test.txt文件上作修改,修改完成之后提交到服务器时,由于不是在当前最新的2版本上作的修改,所以导致提交失败

属性冲突 

当两名或更多的开发人员修改了某个文件的属性时就会发生属性冲突。属性作为文件的一部分,解决属性冲突只能由开发人员来完成。 如果一个更改必须被另一个覆盖,那么就在 使用本地属性解决 和 使用远程属性解决 中选择一个。如果更改想要被合并,那就选择 手工编辑属性,选出所要的属性值然后标记为已解决。 

树冲突 

当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。有很多种不同的情形可以导致树冲突,而且不同的情形需要不同的步骤来解决冲突。 当一个文件通过 Subversion 在本机删除后,文件也从本机文件系统中删除。因此即使它是树冲突的一部分,却既不能显示冲突的叠加图标也不能通过右键单击来解决冲突。使用检查修改对话框来获得编辑冲突选项。 TortoiseSVN 能够协助找到合并更改的正确位置,但是需要作一些额外的工作来整理冲突。请牢记: 当进行一次更新操作后,工作副本的基础文件将会包括每一个项目在执行更新操作时版本库中的版本。如果你在进行更新后再撤销更改,工作副本将返回到版本库的状态,而不是你开始进行更改前的状态。


如果有冲突,双机变更列表下红色的一行,在两个版本比较中,选择使用哪个板块,然后标记冲突已解决,再提交,即可成功

wKiom1Pe9L-S_iStAAIe7G3P1qI361.jpg

wKiom1Pe9NnSgNqiAAN6-zu3jK4561.jpgwKioL1Pe9fyCw36nAADyhb5rp5E128.jpg


5,在此目录下新建一个文件,需选择“加入”

wKiom1PbTC-AE0NJAAFB2Hete1Q647.jpg



在服务器端,需要查看svn提交的文件,那么新建一个文件夹,到此文件夹下 执行

/usr/local/svn/bin/svn co svn://192.168.22.240


或者这样:如果添加的目录为html文件夹,那么应该如下操作:

cd /var/www/html

svn import /var/www/html svn://192.168.22.240/html -m "html test1"

svn info

这样做,配置文件还是在/data/svn目录下,客户端更新提交后,在此目录 svn update即可


svn备份

svnadmin hotcopy path/to/repository path/to/backup --clean-logs


svn重启脚本

#!/bin/bash
# build thisfile in /etc/init.d/svn
# chmod 755/etc/init.d/svn
SVN_HOME=/data/svn
if [ ! -f "/usr/local/svn/bin/svnserve" ]
then
echo "svnserver startup: cannot start"
exit
fi
case "$1" in
start)
echo "Starting svnserve..."
/usr/local/svn/bin/svnserve -d --listen-port 3690 -r $SVN_HOME
echo "Finished!"
;;
stop)
echo "Stoping svnserve..."
killall svnserve
echo "Finished!"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: svn { start | stop | restart } "
exit 1
esac

附软件包地址,http://pan.baidu.com/s/1sXpGj  http://pan.baidu.com/s/1GSxHW