我们正在使用svn开发大型Web应用程序,并定期更新生产。生产服务器无权访问svn(出于安全原因)。
自上次发布新版本以来推动更改的最佳方法是什么?我们希望每次都避免重新创建整个网站,因为它非常大。
答案 0 :(得分:1)
好吧,让我试一试。您可以解析SVN更新命令输出并生成仅复制已更改文件的复制指令吗?
http://svnbook.red-bean.com/en/1.1/ch03s05.html
让我们检查一下svn update的输出 多一点。当服务器发送时 更改您的工作副本,一封信 代码显示在每个项目旁边 让你知道Subversion的动作 执行以带来您的工作副本 先进的日期:
U foo
文件foo已更新(已收到 从服务器更改。)
A foo
添加了文件或目录foo 到你的工作副本。
D foo
文件或目录foo是 从您的工作副本中删除。
R foo
文件或目录foo是 替换为您的工作副本;那 是,foo被删除了,还有一个新项目 添加了相同的名称。而 他们可能有相同的名字, 存储库认为它们是 不同的对象 历史。
G foo
File foo收到了新的更改 从存储库,但你的本地 该文件的副本有你的 修改。要么改变了 没有相交,或者变化了 与您当地人完全一样 修改,所以Subversion有 成功地合并了存储库 更改为文件没有 问题
C foo
File foo收到了冲突 来自服务器的更改。变化 从服务器直接重叠你的 自己对文件的更改。没有必要 但是恐慌。这种重叠需要 由人(你)解决;我们 在此后面讨论这种情况 章。
或者,如果您更喜欢半手动解决方案,可以使用WinMerge或Araxis Merge之类的差异工具来同步两个目录。
修改强>
我不认为“svn update”会完全正常工作,但我确定的是:
我写了一个脚本来捕获“开关”的输出。它将U和A操作转换为“添加”到zip存档。它将D操作转换为删除要在生产服务器上执行的命令。在生产服务器上,我们只需要解压缩存档并运行删除命令。
答案 1 :(得分:0)
结帐到玻璃墙一侧的目录,使其可以从生产服务器访问。使用某种差异/同步实用程序来同步这两个,减去_svn文件夹或任何其他会污染生产环境的文件。
或者使用带有“自mm / dd / yyyy以来的更改”的文件的zip(或其他存档),并将其应用于prodution目录。