配置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,如需转载请自行联系原作者


相关文章
|
7月前
|
存储 网络协议 Ubuntu
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
217 0
5-20|本文目标为svn合并代码
5-20|本文目标为svn合并代码
|
4月前
|
Linux 数据安全/隐私保护
Linux下svn服务端的安装与配置
Linux下svn服务端的安装与配置
66 0
|
7月前
|
Apache 项目管理 数据安全/隐私保护
Windows如何安装使用TortoiseSVN客户端并实现公网访问本地SVN Server
Windows如何安装使用TortoiseSVN客户端并实现公网访问本地SVN Server
118 0
|
7月前
|
开发工具 git
将本地项目上传到svn服务端和git
将本地项目上传到svn服务端和git
216 0
|
运维 Linux 数据安全/隐私保护
linux配置SVN,添加用户,配置用户组的各个权限教程
linux配置SVN,添加用户,配置用户组的各个权限教程
|
7月前
SVN 如何将分支代码合并回主干
SVN 如何将分支代码合并回主干
56 0
|
7月前
|
自然语言处理 Shell 网络安全
Liunx服务器搭建SVN服务,并通过钩子实现代码自动部署
Liunx服务器搭建SVN服务,并通过钩子实现代码自动部署
86 3
|
7月前
idea右击项目却不显示svn提交按钮菜单Subversion选项,无法提交代码
idea右击项目却不显示svn提交按钮菜单Subversion选项,无法提交代码
1485 0
idea右击项目却不显示svn提交按钮菜单Subversion选项,无法提交代码
|
7月前
|
算法 程序员 Apache
Windows下搭建SVN服务器并配置eclipse和idea
Windows下搭建SVN服务器并配置eclipse和idea
165 1