CentOS7下搭建SVN服务器及SVN与WEB同步

一, SVN服务器安装步骤
1、yum install subversion
2、查看安装版本 svnserve –version
3、创建SVN版本库目录 mkdir -p /opt/lampp/htdocs/project
4、创建版本库 svnadmin create /opt/lampp/htdocs/project
5、进入conf目录(该svn版本库配置文件)cd conf/
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
6、设置帐号密码 vi passwd
在[users]块中添加用户和密码,如:
xzg=xzg007
rsync=rsync123
7、设置权限 vi authz
在末尾添加如下代码:
[/]
xzg=rw
rsync=rw
8、修改svnserve.conf文件 vi svnserve.conf
打开下面的几个注释:
anon-access = read #匿名用户可读, 且改为anon-access = none, 然后再清楚SVN缓存, 可以解决SVN中LOG message日期为1970的问题
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /opt/lamp/htdocs # 认证空间名,版本库所在目录
9、启动svn版本库 svnserve -d -r /opt/lampp/htdocs(注意不是/opt/lampp/htdocs/project)
10、svn关闭,重启,状态, 删除版本库
关闭 killall svnserve
重启 svnserve -d -r /opt/lamp/htdocs
查看 ps -ef|grep svnserve
删除版本库  如果要删除整个库,你在服务器上找到放库文件的目录,直接删就行了。不过不建议你这样做,你如果需要一个干净的库,可以用svnadmin重建一个,启动svn服务器的时候把库目录指向新建的这个库就行了。
11、Windows下不显示svn状态图标解决办法:
Windows Explorer Shell 支持 Overlay Icon 最多15个,Windows 自身已经使用了4个,所以就只剩下了11个 供我们使用。如果你之前安装了例如Groove这样的软件,那么可能我们可利用的就更少了,轮不到Tortoise了。像这样的情况,我们可以调整 Tortoise图标名称的字母顺序,来提高Tortoise的优先位置,因为Windows 内部就是安装名称的字母顺序来优先显示的。 解决的步骤 在 运行里 输入 regedit 进入 注册表 界面,HKEY_LOCAL_MACHINE->SOFTWARE->Microsoft->Windows->CurrentVersion->Explorer->ShellIconOverlayIdentifiers打开后发现Tortoise 系列(1TortoiseNormal,2TortoiseAdded等)前面有好多项,Tortoise 系列排到了15名之后,难怪不显示。现在的任务就是把它们提到前面了,修改一下它们的名字就好(我是看第一项的前缀是空格,说明空格的字符排序在前面,我就加了几个空格),我改后的名字如( TortoiseNormal, TortoiseAdded等),然后关闭再打开注册表,发现Tortoise 系列系列图标已经排到前面了,这时SVN的图标并没有显示,靠,重启Explorer(在任务管理器中结束explorer.exe,在文件 -> 新建任务 -> 输入explorer),这样就ok了,可爱的SVN图标又出现了。
12、SVN连接不上, 可能由于防火墙未开启3690端口, 解决办法:
开启3690端口 firewall-cmd –zone=public –add-port=3690/tcp –permanent
重启防火墙 systemctl restart firewalld.service
13、切换用户
临时切换 在命令下强制加上 –username 和–password选项,例如:svn up –username zhangsan –password 123456
永久切换 删除目录 ~/.subversion/auth/ 下的所有文件。下一次操作svn时会提示你重新输入用户名和密码的。换成你想用的就可以了。然后系统默认会记录下来的。

二, SVN与WEB同步
1设置WEB服务器根目录为/opt/lampp/htdocs
2checkout一份SVN
svn co svn://localhost/project /opt/lampp/htdocs/project
修改权限为WEB用户
chown -R daemon /opt/lampp/htdocs/project
chgrp -R daemon /opt/lampp/htdocs/project

3建立同步脚本
cd /home/www/svndata/project/hooks/
cp post-commit.tmpl post-commit
编辑post-commit,在文件最后添加以下内容
export LANG=en_US.UTF-8
SVN=/usr/bin/svn
WEB= /opt/lampp/htdocs/project/
$SVN update $WEB –username rsync –password rsync123
chown -R daemon :daemon $WEB
增加脚本执行权限
chmod +x post-commit

其他一些常用操作

注意:大部分操作需要在svn版本控制的文件夹下进行

checkout(别名:co)命令

命令说明:剪出版本库中的可用的工作目录;
使用方法:checkout URL[@REV]… [PATH];
使用实例:[root@samba /]# svn co svn://192.168.31.131/svntest/trunk
这个过程是把代码从服务器中下载下来,保持版本一致。

add命令

命令说明:Put files and directories under version control, scheduling them for addition to repository. They will be added in next commit.
使用方法:add PATH…;
使用实例:[root@xxx]# svn add *.Java(可以使用通配符)

这个过程是把新建的文件和文件夹添加进版本控制,在下一次commit时,会导入到版本库里进行同步。

commit(别名:ci)命令

命令说明:将你的变更从你的SVN工作目录提交到版本库;
使用方法:commit PATH…; ci是简写
使用实例:[root@xxx]# svn ci -m “commit dir and file” test(可以使用通配符,可同时提交目录和文件)

lock命令

命令说明:将锁住SVN工作目录或者版本库的URL,以使没有人可以提交目录或者文件的变更信息;
使用方法:lock TARGET…;
使用实例:[root@xxx]# svn lock -m “lock dir and file”
Test.java(可使用通配符,比如:T*.*)

unlock命令

命令说明:解除SVN工作目录或者版本库URL的锁; 使用方法:unlock TARGET…;
使用实例:[root@xxx]# svn
unlock -m “lock dir and file” Test.java(可使用通配符,比如:T*.*)

注:在本地加锁或者解锁,记得提交到服务器。

delete(别名:del, remove, rm)命令

命令说明:从SVN版本控制中删除文件或者目录;
使用方法:delete PATH…;
使用实例:[root@samba test]# svn delete Test.java(可使用通配符,比如:T*.*) –删除文件
[root@samba test]# svn delete test(可使用通配符,比如:t*) –删除目录

注:执行上面的命令,只能删除SVN版本控制下的文件,不能删除目录,故删除目录时,应该采用Linux(Unix)系统的rm命令,同时删除后记得提交。

move(别名:mv, rename, ren)命令

命令说明:移动或者重命名SVN工作目录或者版本库;
使用方法:move SRC… DST
使用实例:[root@samba test]# svn move Test.java Test2.java [root@sambatest]# svn move -m “ss” svn://192.168.31.131/svntest/trunk/src/com/ant/test/Test2.java svn://192.168.31.131/svntest/trunk/src/com/ant/test/Test3.java

注:执行上面的第一种实例命令记得提交。第二种命令是直接修改服务器的文件名,不用提交。

log命令

命令说明:显示版本库文件的日志信息
使用方法:log [PATH] log URL[@REV] [PATH…]
使用实例:[root@samba test]# svn log T*(一般不要使用通配符,除非该文件目录下只有一个文件)
[root@samba test]# svn log svn://192.168.31.131/svntest/trunk/src/com/ant/test/Test3.java

info命令

命令说明:显示本地或者远程服务器文件的详细信息
使用方法:info [TARGET[@REV]…]
使用实例:[root@xxx test]# svn info Test.java(可以使用通配符)

list(别名:ls)命令:

命令说明:显示版本库目录的实体,包括目录下的子目录和文件。
使用方法:list [TARGET[@REV]…];
使用实例:[root@samba ant]# svn list [test] (不建议使用通配符,除非你的目录开头字母是不重复的,否则分不清目录下文件的归属)

help(别名:?, h)命令

命令说明:对svn命令或者使用程序的一种描述。
使用方法:help [SUBCOMMAND…];
使用实例:[root@samba ~]# svn ci –help(不可以使用通配符)

mkdir命令:

命令说明:在SVN版本控制下创建目录。
使用方法:mkdir PATH…;mkdir URL…
使用实例:[root@xxx]# svn mkdir test3(不可以使用通配符)
[root@samba ant]# svn mkdir -m “create dir” svn://192.168.31.131/svntest/trunk/src/com/ant/test4

注:第一种方式创建完目录之后,需要提交,第二种直接将目录创建在版本库的URL下,不需要提交尽。提交目录或文件时加上 -m 参数,否则会提示如下错误:

status(别名:stat, st)命令

命令说明:打印SVN工作目录和文件状态。
使用方法:status [PATH…];
使用实例:[root@samba ant]# svn status -v *(可以使用通配符)

注:在执行status命令时,建议强制加上“-v”命令参数,第一列保持相同,第二列工作版本号,第三列最后一次修改的修改人,第四列最后一次修改的版本号。

copy(别名:cp)命令

命令说明:备份历史。
使用方法:copy SRC[@REV]… DST;
使用实例:[root@samba test]# svn cp Test3.java Test4.java(不可以使用通配符)
[root@samba test]# svn cp -m “ss” Test3.java svn://192.168.31.131/svntest/trunk/src/com/ant/test2/Test4.java

注:第一种方式需要手动提交,第二种方式可以自动提交。

update(别名:up)命令

命令说明:将服务器的变更引入本地项目。
使用方法:update [PATH…]; up是简写
使用实例:[root@samba test]# svn up t*(可以使用通配符)

diff(别名:di)命令:

命令说明:比较两个版本的差异。
使用方法:diff [-c M | -r N[:M]] [TARGET[@REV]…];
diff [-r N[:M]] –old=OLD-TGT[@OLDREV] [–new=NEW-TGT[@NEWREV]] [PATH…]
diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]
使用实例:[root@samba test]# svn di T*(可以使用通配符) [root@samba test]# svn di -r 20:18 T*(可以使用通配符)

注:第一种情况是与本地版本比较,第二种情况是显示指定版本的比较。

merge命令

命令说明:将两个指定的版本差异合并到当前的工作目录文件。
使用方法:merge sourceURL1[@N] sourceURL2[@M] [WCPATH]; merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH];
merge [-c M[,N…] | -r N:M …] SOURCE[@REV] [WCPATH]
使用实例:[root@samba test]# svn merge -r 20:18 Test3.java(不建议使用通配符)

注:当两个文件产生冲突的时候,需要先处理冲突,再执行合并命令。

revert命令

命令说明:恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
使用方法:revert PATH…
使用实例:[root@samba test]# svn revert Test3.java(不建议使用通配符) [root@samba test]# echo “dd” Test3.java(数据准备)

blame(别名:praise, annotate, ann)命令

命令说明: 输出指定文件带有版本号的内容和作者在线信息。
使用方法:blame TARGET[@REV]…
使用实例:[root@samba test]# svn blame Test.*(可以使用通配符)

注:只能执行文件,不能执行目录。

export命令:

命令说明:采用复制的方式创建一个不在SVN版本控制下的树。
使用方法:export [-r REV] URL[@PEGREV] [PATH]
export [-r REV] PATH1[@PEGREV] [PATH2]
使用实例:[root@samba ant]# svn export . test5(不可以使用通配符)

注:创建之后需要提交。

import命令:

命令说明:提交一个不在版本控制下的树或者文件到版本库。
使用方法:import [PATH] URL, PATH为空, 表示当前文件下所有文件, URL示例:file:///home/www/svndata/gt-store-v1
使用实例1:[root@samba ant]# svn import file:///home/www/svndata/gt-store-v1 -m “导入当前文件夹下所有文件到gt-store-v1项目”
使用实例2:[root@samba ant]# svn import /tmp/project file:///home/www/svndata/gt-store-v1 -m “导入tmp/project下所有文件到gt-store-v1项目”
导入完后需要回到你的工作目录/opt/lampp/htdocs/gt-store-v1的上级执行 : [root@samba ant]# svn checkout svn://localhost/gt-store-v1

cat命令:

命令说明:输出指定文件的内容(URLs也必须指定到文件类型)。
使用方法:cat TARGET[@REV]…
使用实例:[root@samba ant]# svn cat svn://192.168.31.131/svntest/trunk/src/com/ant/test Test3.java(可以使用通配符)

注:必须指定到文件或者文件类型。

changelist(别名:cl)命令:

命令说明:带有名称的文件关联列表。
使用方法:changelist CLNAME TARGET… changelist –remove TARGET…
使用实例:[root@samba test]# svn changelist T*(可以使用通配符)

switch(别名:sw)命令:

命令说明:带有名称的文件关联列表。
使用方法:switch URL[@PEGREV] [PATH] switch –relocate
FROM TO [PATH…]
使用实例:[root@samba trunk2]# svn switch svn://192.168.31.131/svntest/trunk/.(不建议使用通配符)
[root@samba /]# svn mkdir trunk2(目录准备)
[root@samba /]# cd trunk2(目录准备)

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

1条评论

发表评论