SVN学习--高级应用

来源:互联网 发布:阿里云搭建wordpress 编辑:程序博客网 时间:2024/05/16 08:34

SVN高级应用,主要用于svn版本库管理员级别的操作,这些操作需要暂停重启svn的操作 主人博客

hooks钩子应用

hooks:当执行默写特定操作时触发执行预先设定的任务

不是很理解,所以用大白话说吧,后期继续学习的过程中,完善…

位置:服务器版本库/hooks/hook-scripts

post-commit在提交完成,成功创建版本之后执行该钩子,提交已经完成,不可更改,因此本脚本的返回值被忽略。post-lock对文件进行加锁操作之后执行该脚本post-revprop-change在修改 revision 属性之后,执行该脚本。因为修改稿已经完成,不可更改,因此本脚本的返回值被忽略(不过实际上的实现似乎是该脚本的正确执行与否影响属性修改)post-unlock对文件进行解锁操作之后执行该脚本pre-commit在 Subversion transaction 完毕之后,在提交之前,执行该脚本pre-lock对文件进行加锁操作之前执行该脚本pre-revprop-change在修改 revision 属性之前,执行该脚本pre-unlock对文件进行解锁操作之前执行该脚本start-commit在客户端还没有向服务器提交数据之前,即还没有建立 Subversion transaction(缩写为 txn) 之前,执行执行该脚本

如图所示:以上都以.tmpl后缀结尾的。代表模板文件,使用的时候去掉后缀名,就是可执行shell脚本。
比如图一,post-commit文件,当用户使用commit后出发执行脚本。

因为在学习阶段,并不清楚实际上的应用,大概明白了hooks具体是用来干什么的,实际上怎么用,以后遇到了在总结,网上找了相关的博客,看了一些,推荐一个感觉靠谱的网站
利用SVN的post-commit钩子实现多项目自动同步

版本库精简与丢弃

在后期开发中,版本库的版本号会越来越的多,通过版本库的精简,丢弃靠前的版本,来达到版本库瘦身的目的

  1. 停止版本库服务(防止有新的版本提交 killall svnserve)
  2. 把需要保留的版本库备份(svnadmin dump 版本库文件系统路径 -r 2:4 > 备份文件)
  3. 创建新的版本库存放精简过后的版本库(svnadmin create 路径/版本库名称)
  4. 导入备份(svnadmin load 版本库文件系统路径/ < 备份文件)
  5. 复制原来的版本库权限配置文件 conf/*
  6. 删除旧的版本库(rm -rvf 路径)
  7. 运行svn服务
  8. 完成

注意:精简前checkout的工作副本不能使用了,原因是在精简和的版本号重新编号,与之前的不匹配,所以精简后重新checkout版本库

版本库迁移与switch重定向

迁移在上个知识点就用到了版本库操作

迁移方式2 :
1. killall svnserve(windows 下直接关闭)
2. 把 版本库 压缩成 xxx.zip
3. 复制xxx.zip 到新服务 器并解压
4. 在新服务器上运行版本库

一行方法有点简单粗暴!!

因为更换了服务器,所以我们需要把工作副本重新定向到新的URL上去,这个过程称为重定向,使用第二种迁移方式重定向方便简单。

svn switch --relocate svn://原来版本库url svn://新版本库url

常见坑与总结

原创粉丝点击