使用svn的钩子post-commit做更新时,传参只有REPOS和REV,一个是库名,一个版本号。通常的情况是使用svn update代码,这种情况会产生很多的.svn版本控制文件。
看了下svn的帮助,发现2个命令可以解决以上的问题
1.svnlook changed -r $REV $REPOS
这个命令是检查本次版本中发生改变的文件,返回文件的在库中的相对路径
2.svn export file:///$REPOS/文件 目标地
导出干净的文件到目标地,不带.svn版本控制文件
于是又查了下shell脚本语法,得出以下脚本post-commit:
#!/bin/bash
REPOS="$1"
REV="$2"
LOG=/var/svnroot/logs/post-commit.log
APP_ROOT=/opt/webApp
CHANGE=$(svnlook changed -r $REV $REPOS |awk {'print $2'})
DST=${CHANGE/\/src/} #替换掉路径中src/字符串,部署路径没有这个的
svn export file://$REPOS/$CHANGE $APP_ROOT/$DST --force >>$LOG 2>&1
if [ $? == 0 ]; then
echo [`date +"%Y-%m-%d %H:%M:%S"`] $CHANGE" ==> "$APP_ROOT/$DST ---OK >>$LOG
else
echo [`date +"%Y-%m-%d %H:%M:%S"`] $CHANGE" ==> "$APP_ROOT/$DST ---fail >>$LOG
fi
分享到:
相关推荐
在服务器通过设置svn服务端钩子可以强制开发人员提交注释和限制指定类型的文件提交。
Windows下,svn提交时限制单个文件大小
- 在SVN钩子中集成JRebel,可以在每次更新或提交后自动重新加载修改过的类,从而实现“热部署”。 #### 常见问题及解决方案 **1. WEB-INF、META-INF 文件未生效** - 如果发现某些文件夹如`WEB-INF`或`META-INF`中...
在windows环境下,提交代码到svn中,使用钩子脚本,获取项目名称,提交人,提交时间,提交的日志信息,版本号,纯bat脚本。ps:不是pre-commit.bat文件,因为在该文件中获取不到真正的版本号。
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件。它允许团队成员协同工作,跟踪每个更改,并确保代码库的一致性和稳定性。在SVN中,"钩子"(hooks)是服务器端的脚本,它们在...
通过上述方法,我们不仅能够有效地管理SVN中的文件删除操作,还能确保每次提交都有足够的注释信息。这对于保持版本历史的清晰性和完整性至关重要。同时,这也展示了SVN Hook的强大功能以及如何利用这些功能来满足...
"svn 自动 lock 自动锁"的主题涉及到如何在svn操作中实现文件的自动锁定,以优化多用户同时编辑同一文件时的效率。在多人共享代码库的环境中,文件锁定机制可以避免冲突,确保只有一个用户能够修改特定文件,其他...
在实际应用中,SVN自动更新和提交脚本可以极大地提高团队的效率,尤其是在大型项目中。然而,它也需要谨慎处理,因为错误的自动化可能导致数据丢失或版本混乱。正确理解和使用这些脚本,结合合适的版本控制策略,...
本文将详细讲解如何实现"svn提交文件自动邮件提醒",主要涉及`commit-email.pl`钩子程序的设置与使用。 `commit-email.pl` 是一个Perl脚本,通常作为SVN服务器的post-commit钩子,当用户提交代码到SVN仓库后,该...
但最近由于需求变更,每次发布新版本要更新几十个,一个个太麻烦,所以就想用一个批处理文件,即BAT文件自动更新SVN文件,附件是从网上找到的,找了好久才找到,不是本人原他创,共大家分分享。
SVN钩子.wps
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件。自动发送邮件功能在团队协作中非常实用,它可以帮助团队成员实时了解项目中的更新和变更。以下是如何配置SVN以实现自动发送...
使用SVN进行版本控制的情况下,可以通过该文件(服务器钩子)让用户提交(Commit)数据时实现以下功能: 1、强制写日志,并且字符不少于十个字。 2、过滤bin目录、obj目录、suo文件、user文件的提交。 以上过滤文件...
②【ws.run "D:\SVN自动更新脚本\svnUpdate.bat",0】,地址更改为svnUpdate.bat存放地址即可 svnUpdate.bat 中【::】后为注释 主要进行以下修改 ①D:\svn为待更新的SVN目录,就是执行update的目录,改成你需要执行...
- 钩子脚本必须放置在SVN服务器的仓库目录下的`hooks`子目录内,命名为`pre-commit.bat`,因为SVN服务器在用户尝试提交时会自动执行该脚本。 - 脚本需要有执行权限,通常在Unix/Linux系统上是可执行权限,在Windows...
这将将 SVN 服务中的最新文件更新到 web 目录中。 八、总结 本文介绍了如何在 Linux 服务器上安装 SVN,并添加 SVN 项目,自动更新项目文件到 web 目录。使用 SVN 可以帮助开发者跟踪文件的变化,实现多人协作开发...
### Linux下SVN安装与配置含钩子详解 #### 一、SVN简介与作用 Subversion(简称SVN)是一种分布式版本控制系统,主要用于代码管理。它可以追踪每一项对文件或目录所做的更改,并且能够查看任何时刻的版本状态。这...
SVN自动提交脚本,通过执行SVN Status命令来获取当前目录的Svn diff,通过替换SVN diff来将文件列表转换成Svn提交命令,最后对执行所有SVN命令来完成自动提交,可以用于SVN仓库的代码自动导入
本文将对第一次提交时需要忽略的文件进行总结,并且分享个人经验和方法,帮助开发者更好地使用 SVN。 首先,在 Android Studio 中使用 SVN 需要添加忽略文件,这是因为 SVN 会将所有文件都提交到版本库中,而有些...
在使用版本控制系统Subversion(简称svn)时,可能会遇到一些操作上的困扰,比如在尝试删除文件后,通过`svn update`命令更新代码时,已经删除的文件却又重新出现了。这通常是由svn的工作方式引起的,我们需要理解其...