0

首先,我将描述我们网站的 SVN 设置。我们的开发服务器托管我称之为 dev.mysite.com 的主干。我们检查了几个工作副本:我的本地环境、外部开发人员本地环境和我们名为 www.mysite.com 的生产环境。文件在本地进行编辑和测试,并在它们看起来不错时提交到主干,并且提交后挂钩会在那里自动更新它们。功能在 dev.mysite.com 上进行了测试,如果一切正常,我会通过 SSH 访问 www.mysite.com 并更新必要的文件,将其推送给我们的客户。

我们的问题是我们的外部开发人员将进行重大更新,并希望通过在生产前推送到另一个暂存服务器来绝对确保在启动时不会出现问题。标准方法是创建一个新的子域 (stage.mysite.com) 并签出一个工作副本。然而,主要的发布文件已经被提交了,这样就达不到目的了。

所以我的问题是:是否可以完全复制驻留在我们的生产服务器 www.mysite.com 上的工作副本并将其放在 stage.mysite.com 上?因此,如果我要在 stage.mysite.com 上运行 svn status -u,它会显示与生产工作副本上相同的过期文件吗?

任何帮助表示赞赏!

4

1 回答 1

2

这个问题的答案取决于您所说的“过期文件”是什么意思。如果您指的是尚未提交的文件,那么将工作副本复制到另一台机器上的唯一方法是使用您环境中可用的任何机制(cp、scp、xcopy 等)手动复制文件。好消息是,这没有什么棘手的。您可以将整个工作目录复制到新的机器上并开始您的业务。SVN 不在乎您是否有多个工作目录副本;除了 .svn 文件夹中的文件之外,没有什么特别或独特的地方。但是,如果您使用的是 SVN > 1.7,则需要确保获取工作副本的整个层次结构,因为根目录中只有一个 .svn 文件夹,而子目录没有特殊的元数据。

如果“过期文件”是指所有文件都处于颠覆状态,但在其中一个工作副本中您没有运行“svn update”,那么您可以通过在检查时指定修订来复制该工作目录将项目放入新的工作目录。

svn checkout -r {revision number before changes} svn://{repo path} {name of new working directory}  
于 2013-07-10T17:12:02.727 回答