我将列出几个简单的事实,以便更好地理解我的目标。
我正在开发一个项目,我们称之为 AAA :
我在家开发的每个新版本提交对网络服务器的更改,然后更新实时区域。
现在我想介绍缩小的 JS和CSS版本。
经过一番谷歌搜索之后,SVN挂钩即可。 预提交和提交后挂钩。
这就是我现在想到的:
这适用于第一次提交。在第二次提交时,实时SVN更新失败,因为.css ans .js已经从第一次提交修改(缩小)。冲突。
解决方案:
1#对实时版本使用SVN导出而不是SVN更新。这需要很长时间并且在删除文件等方面存在问题。解决方案已排除。
2#强制SVN更新实时AAA版本并忽略更改(上一版本中的缩小文件)。这个解决方案对我有意义,但我没有找到一种方法来使SVN更新忽略当前的更改(缩小文件)。 这可能与SVN有关吗?
我尝试了SVN updade tf
而没有工作。
3#愿意听取您的解决方案:)
感谢您的帮助。
答案 0 :(得分:2)
我不知道您的环境是什么,但您可以采用Capistrano部署实用程序使用的方法。
如果您的实时/生产环境支持软/符号链接(例如Linux),您所做的是:
在部署路径中创建2个目录
~/path_to_site/current
~/path_to_site/releases
将〜/ path_to_site / current设置为正在投放的目录
执行SVN导出到版本目录,例如
~/path_to_site/releases/mysite_1234567 (timestamp)
导出完成后,将当前/的软链接路径更改为指向最新版本,例如
~/path_to_site/current -> ~/path_to_site/releases/mysite_1234567
这种方法的好处是:
像Capistrano这样的工具可以帮助自动化这样的流程,但不是必需的。无论哪种方式,这样的事情都可以使用post-commit钩子完成,具体取决于你的环境。
还应注意,并非所有服务器配置都允许您在所服务的文件夹的路径中使用符号/软链接。
答案 1 :(得分:0)
检查Hudson或Cruisecontrol等持续集成工具。这些工具能够以指定的频率监视存储库,并在结账后执行所需的任务。这可能满足您的需求。
答案 2 :(得分:0)
这是一个很好的。导出为版本,即。例如附加时间戳。然后使用符号链接控制实时版本。我使用linux,所以没关系。
与此同时,我找到了完成第一篇文章中描述的2#的工作:
首先 - CheckOut
- 使用svn checkout作为实时版本
- 然后压缩.js和.css文件
第二到N - 更新
- svn reverve
到所有.css和.js文件
- svn update
- 然后压缩.js和.css文件
svn reverse将消除压缩文件,以便允许svn更新而不会发生冲突。
这种方式更快但我想我会按照你的方法。