我正在使用 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-changed
和 svn 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/