svn提交后添加注释,svn修改备注
昨天,我和我的同事在讨论如何将测试服务器上的数据同步到生产环境中。前提是给SVN做手术。SVN更新到测试计算机上的代码并经过测试后,如果没有问题,请将其同步到生产环境。SVN有没有可以分别完成这两个步骤的手术?
在我之前搭建的SVN服务器上,提交后会自动更新为测试机,可以通过“挂钩”来完成。只需处理提交后,并在钩子中添加SVN,包括更新,检查输出,导出等。当然也可以写脚本。
我的想法也是想通过脚本同步到生产环境。SVN是如何导致这种不同的行为的?
第一个:
能在SVN发的各种操作(比如评论)中实现吗?参考相关资料。虽然SVN没有这样的功能,但SVN客户端可以通过配置选项来实现。比如当前动作触发不同的“钩子”,“钩子”写不出触发脚本。因为太复杂,操作难度大,所以完全过关。
第二:
在不更改SVN客户端配置文件的情况下,确保默认提交操作使用相同的“挂钩”,并将粗略的挂钩写入测试服务器,并将脚本更新到生产环境。测试服务器SVN必须在每次更新时运行。与生产环境的同步必须通过读取代码中的文件值来确定。例如,如果文件内容为1,脚本将中断并同步两个脚本。现在,如果您想要同步到生产环境,您可以更改文件的值。
这个方法是可以实现的,但是我觉得用这个方法的人很少。它不能与生产环境同步,以避免出现问题。
最后,补充了有关SVN更新操作的信息。
事实上,到处都有通过SVN实时同步到WEB服务器而实时发布的文章。但是我做的时候还是有很多小问题,很多文章没有投稿。另外,同步也是如此。我记录了我所做的特别的细节。时间久了就忘了。
程序思路:用户向SVN提交程序,SVN启动钩子,由不同的钩子处理。这里,post-commit用于检测SVN服务器本地硬盘目录中的代码,并通过rsync与远程WEB服务器同步。
知识点:
1.SVN的霍克斯
#在开始提交之前启动事务。
#在预提交完成之前启动事务
#提交完成后触发事务。
#在pre-rev prop-change版本属性更改之前启动事务。
# post-revprop-change版本属性更改并触发事务。
用这些名字写的脚本可以实现各种功能,非常强大。
2.同步命令rsync特定参数的使用
3.可以实现具有基本语言编程能力的bash python perl。
提交后续实施的详细信息。
提交后脚本
#!轻柔的高跟鞋/sh
-请参考
# filename:提交后
#修订版:1.0
#日期:2009年3月20日
#作者:阿健
#邮箱:阿健521
#gmail.com
#网站:www.ohlinux.com
#描述:web server withsynchronizationcodebysvn
-请参考
#版权所有:2009 (c)阿健
#许可证:GPL
#
#这个程序是自由软件;您可以重新分发它和/或
# modifyittenthetermsofthegnuegeneralpublicense
# asppublishedbythfreesoftware foundation;任一版本2
许可证得#或(由您选择)任何更高版本.
#
# thiprogramisdisdistributedinthehopethatitwillbused,
#但没有任何保证;甚至没有隐含的保证
# of merchantality or fitness for a special purpose .请参阅
# gnugeneralpubliclicenseformoredails。
#
# -
# 1.0版
#当用户提交完成的代码时,将代码更新检测并同步到WEB服务器,注意不要包括删除操作。
#设置变量SVN=/usr/亲切的高跟鞋/svn WEB=/home/test_nokia/
RSYNC=/usr/kind heels /rsync
LOG=/tmp/rsync_test_nokia.log
WEBIP=192.168.0.23
出口LANG=en_US。UTF-8
#从SVN更新代码
$SVN更新$WEB -用户名用户-密码密码
#如果前面的命令成功完成,继续下面的
如果[ $?==0 ]
然后
回显 $LOG
回显“日期”$日志
echo # # # # # # # # # # # # # # # # # # # # # # $ LOG
chown-R nobody:nobody/home/test _ Nokia/
#从SVN服务器到WEB服务器的同步代码,注意:由键
$ RSYNC-vaz TPH-time out=90-exclude-from=/home/SVN/exclude . list $ WEB root @ $ WEBIP:/www/$ LOG
船方不负担装货费用
以上是具体的提交后流程。
注意事项:
1.一定要定义变量,主要是所用命令的路径。出于SVN的安全考虑,没有调用系统变量。如果是手动执行,没有问题,但是SVN不会自动执行。
2.在更新SVN之前,您必须手动签出副本。此外,您必须在这里添加用户名和密码。如果只是手动,会更新,但不会自动工作。
3.添加前一个命令的判断。如果更新的时候出了问题,程序不退出就会继续把代码同步到WEB服务器,这样就会造成代码问题。
4.记得设置自己所属的用户,因为rsync可以同步文件属性,而我们的WEB服务器一般不是root用户,不正确的用户会导致WEB程序无法正常运行。
5.建议最好做个日志,出了问题可以快速纠正。
6.最后,最关键的数据同步,rsync的相关参数一定要清楚,这个我就不说了。请注意几种情况:
这里的环境是SVN服务器和WEB服务器都是开放的。
将SVN服务器定义为源服务器,将WEB服务器定义为目标服务器。
1.如果目标WEB服务器是综合的、混合的,比如只有一个静态WEB资源,所有用户提交的和自动生成的都在WEB的一个目录下,建议不要使用参数- delete。
上面的程序是这样的。它实现了从源服务器到目的服务器的更新和添加,而不需要删除。WEB服务器的内容将多于源SVN服务器的内容。
第二,实现镜像,即目标WEB服务器的数据与源SVN服务器的数据相同,SVN上的任何更改,WEB上的相同更改,都需要- delete参数。
第三,不需要同步某些子目录。有些目录可能是缓存的临时垃圾目录,或者特殊的图片目录(而不是样式或排版)应该使用exclude参数。
注意:使用这个参数不需要写绝对路径,只需要目录名。aa代表文件aa/代表目录。缺点是,如果有多个子目录同名,那么这些名称将不会同步。
建议-exclude-from=/home/SVN/exclude . list可以以文件的形式方便地添加和删除。
排除.列表。svn/。DS _商店
图片/
使用SVN的钩子,还可以编写很多程序来控制SVN,比如在提交代码前检查是否有日志,是否有tab,是否有空格,是否有不允许上传的文件,是否有超过限制大小的文件等等。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。