【问题标题】:How to apply changes without access to svn server如何在不访问 svn 服务器的情况下应用更改
【发布时间】:2011-02-24 09:04:27
【问题描述】:

我们正在使用 svn 开发大型 Web 应用程序,并且我们会定期更新生产环境。生产服务器无权访问 svn(出于安全原因)。

自上次生产版本以来将更改推送到新版本的最佳方式是什么?我们希望避免每次都重新创建整个网站,因为它非常大。

【问题讨论】:

  • 我不明白发布到生产服务器的问题与版本控制的问题有什么关系。你能详细说明一下吗?
  • 看看我是否理解。您在机器 A 上执行 SVN 更新,然后将整个站点目录复制到生产机器。您只想复制随此 SVN 更新而更改的内容,从而避免复制整个目录。是这样吗?
  • 如果生产服务器连接到 svn 服务器,我们将继续在生产服务器上进行 svn 更新。但它没有连接。

标签: svn deployment production


【解决方案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

文件 foo 收到了新的更改 来自存储库,但您的本地 该文件的副本有你的 修改。要么所做的更改 不相交,或者变化是 和你当地的完全一样 修改,所以 Subversion 有 成功合并存储库的 更改到文件中没有 问题。

C foo

收到的文件 foo 冲突 从服务器更改。变化 从服务器直接重叠你的 自己对文件的更改。无需 恐慌,虽然。这种重叠需要 由人(你)解决;我们 稍后讨论这种情况 章节。

或者,如果您更喜欢半手动解决方案,您可以使用 WinMergeAraxis Merge 之类的差异工具来同步两个目录。

编辑:

我不认为“svn update”会完全起作用,但我决定的是:

  • 当前(旧)产品版本的 svn checkout
  • svn switch 到准备好生产的版本(新)

我编写了一个脚本来捕获“开关”的输出。它将 U 和 A 操作转换为“添加”到 zip 存档。它将 D 操作转换为要在生产服务器上执行的删除命令。在生产服务器上,我们只需要解压缩存档并运行删除命令即可。

【讨论】:

  • 更新前如何设置工作目录?
  • 就在cd 那里做svn update。 $ svn update A newdir/toggle.c A newdir/disclose.c A newdir/launch.c D newdir/README 更新到修订版 32。
  • 不会有更新,因为是开发目录!
  • 创建一个仅用于此目的的新文件夹。
  • 我想我想通了...不是 svn update... svn checkout 当前的 prod 版本,然后 svn 切换到准备好用于 prod 的版本
【解决方案2】:

对玻璃墙一侧的目录进行结帐,使其可从生产服务器访问。使用某种 diff/sync 实用程序来同步两者,减去 _svn 文件夹或任何其他会污染生产环境的文件。

或者使用带有“自 mm/dd/yyyy 以来的更改”的文件的 zip(或其他存档),并将其应用于生产目录。

【讨论】:

  • 你能提供更多关于使用什么实用程序的详细信息吗?
  • @Joel 在 unixoids 上尝试 rsync 或在 Windows 上尝试 robocopy。两者都可以将一个目录同步到另一个目录,同时只传输更改的文件。
  • unison 在 unix 上很受欢迎,我试过让它工作一次......我认为它也适用于 Windows。我认为,您可以在 CYGWin 中使用 Unison 或 rsync。 Windows 的 SecondCopy。您可以在 Windows 上使用 BeyondCompare 手动操作(如果您不确定自己在做什么,这很有用)。 Windows 上的 FileBoss。有很多这样的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 2012-10-18
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 2013-05-04
  • 2012-07-27
相关资源
最近更新 更多