svn - 使用 SVN post-commit hook 仅更新已提​​交的文件

标签 svn hook post-commit

我正在使用 SVN 存储库来进行 Web 开发工作。我设置了一个开发站点,其中包含存储库的 checkout 。

我已经设置了一个 SVN 提交后 Hook ,以便每当对存储库进行提交时,开发站点都会更新:

cd /home/www/dev_ssl
/usr/bin/svn up

这工作正常,但由于存储库的大小,更新需要很长时间(大约 3 分钟),这在定期提交时相当令人沮丧。我想要的是更改提交后 Hook 以仅更新那些已提交的文件/目录,但我不知道如何执行此操作。更新“最低公共(public)目录”可能是最好的解决方案,例如

如果提交以下文件:

  • /branches/feature_x/images/logo.jpg
  • /branches/feature_x/css/screen.css

它将更新目录:/branches/feature_x/

任何人都可以帮助我创建一个实现此目标的解决方案吗?

更新:

  • 存储库和开发站点位于同一服务器上,因此不应涉及网络问题。
  • CPU 使用率非常低,I/O 应该没问题(它在高规范专用服务器上运行)
  • 开发地点约。大小为 7.5GB,包含约。 600,000 个项目,这主要是因为有多个分支/标签

最佳答案

您可以使用 svnlook dirs-changedsvn up -N 仅更新每个目录的内容文件夹已更改:

cd /home/www/dev_ssl
svnlook dirs-changed [REPOS] -r [REV] | xargs /usr/bin/svn up -N

或者,如果每个文件可能更适合您(使用 sed 去除操作字符):

svnlook changed [REPOS] -r [REV] | sed "s/^....//" | xargs /usr/bin/svn up

关于svn - 使用 SVN post-commit hook 仅更新已提​​交的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/446518/

相关文章:

svn - 在 SVN 提交后 Hook 中节省时间?

wordpress - 在 wordpress 中构建页面后的 do_action

winapi - 如何在进程读取我的进程内存时调用函数 - Win32 API

git - 如何在提交后的钩子(Hook)脚本中获取项目路径?(git)

powershell - VisualSVN Server PowerShell配置

c++ IPC - d3d 钩子(Hook)和 directshow 捕获源

SVN 提交后 Hook 未执行文件

c# - SVN 即时 ZIP

java - Eclipse subversion svn不上传目录

java - 无法从 NetBeans 提交到 Subversion