svn提交后添加注释,svn修改备注

  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,是否有空格,是否有不允许上传的文件,是否有超过限制大小的文件等等。

svn提交后添加注释,svn修改备注