简单的SVN post commit钩子将更改的文件导出到测试服务器

简单的SVN post commit钩子将更改的文件导出到测试服务器,svn,shell,post-commit,post-commit-hook,Svn,Shell,Post Commit,Post Commit Hook,使用SVN,我当前正在使用测试服务器上的以下命令(通过SSH/Shell登录后)手动将存储库的内容导出到测试服务器: 但是,我想在hooks目录下创建一个post commit脚本,该脚本使用相同的svn export命令,但只导出已更改的文件(包括任何删除/重命名/移动),否则每次提交时更新测试服务器将花费太长时间 关于堆栈溢出的其他答案涉及使用与我无关的svn up命令,因为测试服务器副本不是而是工作副本,而只是一个导出,或者涉及使用外部脚本(Python或Perl),这也不是我想要的。只要

使用SVN,我当前正在使用测试服务器上的以下命令(通过SSH/Shell登录后)手动将存储库的内容导出到测试服务器:

但是,我想在
hooks
目录下创建一个
post commit
脚本,该脚本使用相同的
svn export
命令,但只导出已更改的文件(包括任何删除/重命名/移动),否则每次提交时更新测试服务器将花费太长时间

关于堆栈溢出的其他答案涉及使用与我无关的
svn up
命令,因为测试服务器副本不是而是
工作副本,而只是一个导出,或者涉及使用外部脚本(Python或Perl),这也不是我想要的。只要一个简单的bash脚本就可以了;)

您可以:

  • 使用链接问题答案的第三个URL中的答案(或参见)(两者都是Bash)
  • 捕获第一个主机thomasfischer.biz,当它将联机时(更简单的代码,只导出一个版本,而不是范围,就像electrictoolbox中的bash一样)
  • 使用electrictoolbox的代码作为基础,但将
    svn diff
    替换为
    svnlook changed
    (也在输出的后处理中),以更清晰的形式获取单个修订中的更改

当您说更新测试服务器需要很长时间时,可能会出现重复。您的意思是完全导出的时间太长,无法显示更改吗?或者你不愿意让测试系统在导出过程中出现问题?是的,第一次更新的时间太长了。或者我猜,这是浪费了很多时间,因为为什么要在只需要替换少数文件的情况下替换所有文件?我会接受这个答案,而不是其他答案。谢谢懒惰的獾-你让我有了一个好的开始
svn export http://svn.domain.co.uk/project /home/user/public --force