一.需求.

  本地文件上传到测试环境svn,测试环境同步到生产环境rsync.开发环境与测试环境与生产环境分离.

二.搭建SVN服务器.

  yum -y install subversion && which svn

1 [root@localhost ~]# which svn
2 /usr/bin/svn

 1 [root@localhost ~]# svn help
 2 usage: svn <subcommand> [options] [args]
 3 Subversion command-line client, version 1.6.11.
 4 Type 'svn help <subcommand>' for help on a specific subcommand.
 5 Type 'svn --version' to see the program version and RA modules
 6   or 'svn --version --quiet' to see just the version number.
 7
 8 Most subcommands take file and/or directory arguments, recursing
 9 on the directories.  If no arguments are supplied to such a
10 command, it recurses on the current directory (inclusive) by default.
11
12 Available subcommands:
13    add ##添加文件到记录,下次提交时会使用
14    blame (praise, annotate, ann) ##追溯文件的修改信息
15    cat ##取得特定版本的某文件显示
16    changelist (cl)  ##提交的命名组17    checkout (co)   ##svn减除命令
18    cleanup  ##本地文件加锁无法更新时使用
19    commit (ci)  ##提交
20    copy (cp)  ##赋值文件
21    delete (del, remove, rm)
22    diff (di)  ##显示特定修改的详细信息
23    export  ##导出工作目录的树形结构
24    help (?, h)
25    import ##导入文件到版本库
26    info   ##显示一个目录或文件的详细信息
27    list (ls)  ## 显示某一个版本存在的文件
28    lock  ##锁定文件
29    log   ##展示svn的版本作者,日期,路径
30    merge  ##合并文件
31    mergeinfo
32    mkdir
33    move (mv, rename, ren)
34    propdel (pdel, pd)
35    propedit (pedit, pe)
36    propget (pget, pg)
37    proplist (plist, pl)
38    propset (pset, ps)
39    resolve
40    resolved
41    revert  ##本地撤销,没有commit之前
42    status (stat, st)  ##状态信息查看
43    switch (sw) ##把工作拷贝更新到其他目录
44    unlock ## 解锁文件
45    update (up) ##更新本地库
46
47 Subversion is a tool for version control.
48 For additional information, see http://subversion.tigris.org/

创建版本库

svnadmin create /data/svn/svnrepo  这个命令创建一个新的版本库,如果路径不存在会自动创建出路径

查看这个版本库下的文件结构

1 [root@localhost /]# ll /data/svn/svnrepos/
2 total 24
3 drwxr-xr-x 2 root root 4096 Dec 11 08:12 conf   //配置文件
4 drwxr-sr-x 6 root root 4096 Dec 11 08:11 db
5 -r--r--r-- 1 root root    2 Dec 11 08:11 format
6 drwxr-xr-x 2 root root 4096 Dec 11 08:11 hooks
7 drwxr-xr-x 2 root root 4096 Dec 11 08:11 locks
8 -rw-r--r-- 1 root root  229 Dec 11 08:11 README.txt

我们主要使用的是db库, 新增用户等的控制在conf

[root@localhost /]# ll /data/svn/svnrepos/conf
total 12
-rw-r--r-- 1 root root 1080 Dec 11 08:11 authz  //在这里创建用户
-rw-r--r-- 1 root root  309 Dec 11 08:11 passwd  //修改密码  
-rw-r--r-- 1 root root 2279 Dec 11 08:11 svnserve.conf

增加用户,配置权限,密码

1 vi authz
2 [/]
3 lyx=rw
4 vi passwd
5 lyx=lyx
6 vi service.conf
7 去掉passwd-db 的注释
8 去掉authz-db 的注释
9 配置realm = /data/svn/svnrepos

启动服务器 svnserve -d (as deamon) -r (as root) /data/svn/svnrepos

1 [root@localhost conf]# ps axf | grep svn
2  1669 pts/0    S+     0:00      |   \_ grep svn
3  1643 ?        Ss     0:00 svnserve -d -r /data/svn/svnrepos

windows 上验证过下  

无法访问,显然端口号没有开,svnserve 的端口号是3690 在本地做一个转发.用本地13690 转发到129 的3690 tcp

配置完之还是不行,不过提示变成了一段乱码,显然是有作用的. 在另一台虚拟机中svn checkout svn://192.168.137.129报错主机不可达,显然是防火墙的问题,于是service iptables stop .

win上再次checkout

ok . svn 安装配置部分done !!

三 利用svn 的post-commit 钩子自动部署

cd /data/svn/svnrepos/hooks

mv post-commit.tmpl post-commit

chmod +x post-commit //赋予ex权限

vi post-commit

1 #!/bin/sh
2 REPOS="$1"
3 REV="$2"
4 export LANG=zh_CN.UTF-8
5 echo "Code Deployed at `date "+%Y-%m-%d %H:%M"`" >> /tmp/deploy.log
6 /usr/bin/svn update /data/web --username lyx --password lyx

在 /data/web 目录下,svn co svn://127.0.0.1 .(当前目录)

实验一下,本地创建文件,提交,查看/data/web 目录是否有更新.

1 [root@localhost /]# ls /data/web/
2 tst2.jnt  tst.txt

有效果,还不错了.

四  总结, hooks 目录下有多种钩子可以用了,如果你shell基础比较好,可以编个更优秀的同步脚本啊. $1 和 $2 的变量我没有用上,应该是有用的.

本站文章皆为原创,转载请标明出处~ 任城小三爷.

转载于:https://www.cnblogs.com/liuyuxing/p/5070218.html

SVN+post-commit 搭建自动同步版本库相关推荐

  1. CentOS 创建SVN 服务器,并且自动同步到WEB 目录

    CentOS 创建SVN 服务器,并且自动同步到WEB 目录 标签: centossvnsubversion服务器 2013-12-06 10:09 5492人阅读 评论(0) 收藏 举报  分类: ...

  2. svn同步文件到web服务器,Centos7上搭建SVN服务器并实现自动同步至web目录

    前言: 由于最近跟学长一起合作完成一个小项目,然后我俩比较熟悉的版本控制是SVN,就考虑着在服务器上搭建一个SVN服务器.现在在这里给出简单的搭建过程. (其实吧,能用Git就尽量用git吧,好处自己 ...

  3. VS2008+AnkhSVN搭建源代码管理版本库

    由于常使用VS2008维护项目代码,但是每次更新代码均需要进行备份,随着长时间(3年以上)维护项目代码,代码副本日益增多,导致项目维护繁琐以及项目的可比较性太难,找回想要的版本比较困难.因此,寻找结合 ...

  4. SVN版本库的异地备份

     现在开发通常都会用SVN来进行版本控制,并且SVN服务端也都会统一的建立到某个服务器上来保存项目源码,这没什么问题.但是如果有一天服务器发生了不可恢复的故障,这将造成不可弥补的巨大损失.所以我们 ...

  5. 利用SVN的post-commit钩子实现多项目自动同步

    svn的post-commit钩子脚本在每次提交(commit)之后运行,我们可以在这个脚本里实现一些比较实用的功能,比如发送邮件提醒.自动备份版本库,自动同步代码到web服务器等. 这里用post- ...

  6. TortoiseSVN搭建本地版本库及简单操作使用

    TortoiseSVN是windows上一款著名的版本控制软件,对于我们管理自己的代码,特别是对一个团队来说,非常重要. 本文探讨的是如何搭建本地的版本库. (1)安装TortoiseSVN之后需要创 ...

  7. svn服务器现存的库文件导入,svn导入版本库及相关知识

    SVN作为新一代代码版本管理工具,有很多优点,管理方便,逻辑明确,安全性高,代码一致性高.SVN数据存储有两种方式,BDB(事务安全表类型)和FSFS(一种不需要数据库的存储系统),为了避免在服务器连 ...

  8. linuxSVN版本库及同步文件到WEB目录

    一 安装与配置SVN 1.安装subversion centos: yum install subversion ubuntu: apt-get install subversion 2.建立版本库, ...

  9. VisualSVN Server版本库搭建

    VisualSVN Server版本库搭建 VisualsvnServer用途: 软件开发公司的代码是公司的核心,是公司最需要保护的文件资源,为了防止公司代码的泄露,放到公网的免费版本控制服务器商虽然 ...

最新文章

  1. 检查超时-Ajax之四
  2. c多线程并发处理方式_ElasticSearch 并发的处理方式:锁和版本控制
  3. python培训比较好的机构-上海有哪些可以系统学习python的培训机构?
  4. 程序员只拿到5千工资吐槽无法生活,网友:别在意薪资
  5. ab url 带参数 测试
  6. outlook从服务器中恢复已删除项目,Exchange 恢复已删除项目
  7. STM32 电机教程 25 - ST MCLIB实战之开环svpwm控制
  8. php中调行高代码_单元格行高怎么设置
  9. 动态字段插入及查询redis小结
  10. 数据包如何正确的发到目的地_江苏工业交换机厂家浅谈交换机如何应用
  11. “约见”面试官系列之常见面试题第三十四篇之事件冒泡、事件捕获、事件代理(建议收藏)
  12. java调用cmd_Java调用CMD命令
  13. OpenShift 4 - Service Mesh使用入门
  14. python中、函数定义可以不包括以下_python函数定义精讲
  15. VB读写远程Mysql数据库
  16. 网络云存储技术Windows server 2012 (项目十七 配置iSCSI传输的安全性)
  17. WPF调色盘(1):绘制三色轮
  18. URL Schemer
  19. 电脑不用下软件开wifi
  20. Excel VBA 之 UBound

热门文章

  1. 带你玩转关键字Synchronized
  2. mysql中文时好时坏_mysql索引的问题,时好时坏
  3. mysql+5.5.18+linux+下载,mysql5.7.18+linux安装二进制包与运行
  4. 【分享】20道Oracle运维常见面试题
  5. SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)
  6. 从零开始入门 K8s | 有状态应用编排 - StatefulSet
  7. oracle 如何显示 比例,Oracle中如何兼得比例和时间
  8. python 函数的定义与调用_Python函数定义和函数调用
  9. java怎么给类中的私有变量赋值_Java学习笔记分享 如何理解接口抽象类和关键字...
  10. mysql分页的高效算法_mysql_海量数据库的查询优化及分页算法方案