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

1、配置svn的hooks

2、实例演示



1、配置svn的hooks

 1.1)配置情况

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

  上篇文章的地址:http://www.cnblogs.com/fengbohello/p/4548580.html

  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
[email protected]: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
[email protected]: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账户操作的时候失败。



2、实例演示

  好累,就先不写了吧。。。  

时间: 2024-08-11 15:55:35

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

SVN提交后自动同步到web服务器【hooks的使用】

SVN项目的创建: 详细步骤:http://www.cnblogs.com/Mr-Wenyan/p/8972054.html hooks配置: 1.建立web服务器的目录 本人服务器目录在/usr/local/apache/htdocs ,所以,建立目录: mkdir TP 2.在svn仓库的hooks目录下,复制post-commit.tmpl为post-commit,并写入配置文件 #!/bin/sh REPOS="$1" REV="$2" TXN_NAME=&

SVN 提交后自动同步到 web 的根目录

在SVN 项目版本库的存储目录下的hooks 目录,新建立一个post-commit.bat 文件: @echo off SET REPOS=%1 SET REV=%2 SET DIR=%REPOS%/hooks SET PATH=%PATH%; SET WORKING=E:/www/要同步的目录 svn update %WORKING% --username 用户名 --password 密码 注意:以上方法必须把SVN服务器安装目录下的bin加入到path路径(环境变量[路径用';'分开])

SVN与TFS自动同步脚本(很实用)

一直都在园子里看文章,因为各种原因懒得写文章.最近稍得空闲,把这几天的工作成果分享一下. 因为工作需要,开发人员使用Qt进行系统移动端的开发,Qt的版本控制却不提供连接TFS的设置,只有使用svn.没有办法,只有安装svn,现学现了解,最后发现可以通过svn的hooks实现提交后,svn服务端自动同步到tfs服务端.post-commit脚本如下: ET WORKDIR=D:\xxxx SET SVNDIR= C:\Program Files\VisualSVN Server\bin SET S

Xcode: Run Script 的运用使build打包后自动+1

背景: 每次打包都要build+1处理,比较麻烦,使用 Run Script 的运用使build打包后自动+1 0. 使用xcode 添加run Script 然后就可以添加Run Script了 1.每次构建的时候build号自增 if [ $CONFIGURATION == Release ]; then echo "当前为 Release Configuration,开始自增 Build" plist=${INFOPLIST_FILE} buildnum=$(/usr/libex

inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效

inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效 inno setup 安装卸载时检测程序是佛正在运行卸载完成后自动打开网页-代码无效 --------------------------代码如下--------------------------- [Code]varErrorCode: Integer;IsRunning: Integer; // 安装时判断客户端是否正在运行function InitializeSetup(): Boolean;beginResult

如何在一台机器上配置多个git的rsa

如何在一台机器上配置多个git的rsa 问题的提出 很多时候,我们一台机器上要使用多个git库,比如 github, csdn 以及 自己公司的.那么 rsa就要有多份.那么该如何让这些共同存在呢? 原理就是:建立多个不同的rsa 然后 在ssh config中分别不同的配置. 具体步骤 1 建立rsa ssh-keygen -t rsa -C "你的邮箱地址" 执行完这条命令之后, 会弹出如下提示: Enter file in which to save the key (/User

Linux下svn提交文件后自动同步更新到网站目录

有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动同步代码文件到远程服务器的网站目录下,而不必手动上传了. 首先,在网站目录下checkout代码,例如我的目录是/data/www/test svn co https://127.0.0.1/test/trunk//data/www/test/ 注意,这是因为有时我会在服务器上直接修改代码,所以用checkout,如果不需要,可以用export,此指令不带.svn版本文件. 迁出代码后,

更新svn版本后,在更新代码报错

Eclipse 导入项目与 svn 插件关联全过程记录 今天想整理一下相关项目的前端代码以及目录结构,故利用svn客户端(TortoiseSVN 1.7.2)从trunk上新建了一个branches,然后checkout到本地. 打开Eclipse,点击 File -> Import -> General -> Existing Projects Workspace -> Next -> 选中 select root directory,点击 Browse 浏览,确认项目本地

svn提交后利用hooks自动更新web服务器

#!/bin/shREPOS="$1″#版本库REV="$2″#版本号#export LC_ALL=C#export LANG=zh_CN.UTF-8export LANG=en_US.UTF-8#字符集WEB=/data/www/default/test#web站点物理地址SVN=/usr/bin/svn#svn命令地址LOG_PATH=/home/svn/svn.log#日志文件地址echo `date "+%Y-%m-%d %H:%M:%S"` >>