配置hooks使svn提交后自动同步客户端代码(客户端与服务端在同一台机器上)

简介:

1、配置svn的hooks

 1.1)配置情况

  承接上篇svn搭建的文章,今次继续使用上篇文章的配置

  上篇文章的地址:linux下搭建svn代码库 

  svn仓库所在的目录为/opt/svn/firsttest

 1.2)修改hooks文件post-commit

  我们的任务需求是:当firsttest代码仓库有任何人提交了代码之后,本机器上的某个位置的副本就需要立刻进行svn up操作,这样达到副本的内容和代码仓库的内容相同,可以实时看到情况的目的。

  根据上述的要求,分析下来就是,当有人在 firsttest 提交了代码之后,我们的副本也需要进行更新。所以,我们需要修改的hooks文件就是firsttest/hooks/post-commit。

  查看firsttest/hooks/目录下面的文件:

复制代码
# ls
post-commit.tmpl          post-unlock.tmpl  pre-revprop-change.tmpl
post-lock.tmpl            pre-commit.tmpl   pre-unlock.tmpl
post-revprop-change.tmpl  pre-lock.tmpl     start-commit.tmpl
复制代码

  并没有发现 post-commit 文件,但是可以发现有个 post-commit.tmpl 文件,我们需要做的就是把这个文件重命名成post-commit,或者拷贝一份副本,起个名字叫post-commit。

复制代码
# cp post-commit.tmpl post-commit
root@OutRoot:hooks# ls
post-commit       post-revprop-change.tmpl  pre-lock.tmpl            start-commit.tmpl
post-commit.tmpl  post-unlock.tmpl          pre-revprop-change.tmpl
post-lock.tmpl    pre-commit.tmpl           pre-unlock.tmpl
复制代码

  现在有 post-commit 文件了,但是还差点儿,把它的权限改为775:

复制代码
# chmod 775 post-commit
root@OutRoot:hooks# ls
post-commit       post-revprop-change.tmpl  pre-lock.tmpl            start-commit.tmpl
post-commit.tmpl  post-unlock.tmpl          pre-revprop-change.tmpl
post-lock.tmpl    pre-commit.tmpl           pre-unlock.tmpl

  # ls -al post-commit
  -rwxrwxr-x 1 root root 1977 06-05 13:47 post-commit

复制代码

 1.3)编辑 hooks 文件 post-commit

  从 post-commit 的文件名我们就可以看出,是在 commit(合入代码)之后(post)所进行的操作。

  以下是 post-commit 文件的前几行:

复制代码
#!/bin/sh

# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit.  Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-commit' (for which this file is a template) with the 
# following ordered arguments:
复制代码

  看英文的大概意思是:post-commit 钩子文件是在执行完一次commit之后执行的。这个hook会执行一个脚本或者可执行文件、二进制文件等。

  那么我们就在这里写上我们需要svn执行的脚本。

  把 post-commit 文件的最后几行改成如下内容:

复制代码
REPOS="$1"
REV="$2"

#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
su -c 'svn up /home/test/workspace/firsttest' test
复制代码

  其中“su -c 'svn up /home/test/workspace/firsttest' test”这句话的意思是:

  切换到test账户,就是你的svn副本是哪个账户就切换到哪个账户,要是root就直接运行“svn up /home/test/workspace/firsttest”就可以了。

  之所以要切换账户,是因为在svn进行update操作的时候会对副本里面的.svn目录下的内容进行修改,有可能会添加新的文件或目录,这样会导致之后的副本里面使用非root账户操作的时候失败。


 


本文转自郝峰波博客园博客,原文链接:http://www.cnblogs.com/fengbohello/p/4554287.html,如需转载请自行联系原作者


相关文章
|
3月前
|
存储 网络协议 Ubuntu
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
61 0
|
7月前
|
运维 Linux 数据安全/隐私保护
linux配置SVN,添加用户,配置用户组的各个权限教程
linux配置SVN,添加用户,配置用户组的各个权限教程
|
4月前
|
算法 程序员 Apache
Windows下搭建SVN服务器并配置eclipse和idea
Windows下搭建SVN服务器并配置eclipse和idea
53 1
|
4月前
|
小程序 Linux Shell
SVN配置服务器自动更新
使用svn做版本控制服务器,其实还是比较方便的,不管是从搭建还是配置上,相对于git,都要简单很多。 Linux如何搭建SVN服务器,请移步《Centos7安装SVN》
49 0
|
5月前
SVN服务器地址变更,本地如何更新同步
SVN服务器地址变更,本地如何更新同步
77 0
|
8月前
|
Android开发
Android 中使用SVN恢复原来的代码
Android 中使用SVN恢复原来的代码
52 0
|
8月前
|
Android开发
Android中使用Tortoise SVN遇到代码被锁定的解决办法
Android中使用Tortoise SVN遇到代码被锁定的解决办法
74 0
|
9月前
IDEA中SVN的使用(提交,同步)
IDEA中SVN的使用(提交,同步)
153 0
|
10月前
|
Java 开发工具 Android开发
Android studio配置svn及使用方法
Android studio配置svn及使用方法
|
1月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接