11

我需要在生产服务器上替换我的 SVN 存储库中的目录,但不确定在不破坏任何东西的情况下执行此操作的正确方法。被替换的目录是一个已经完全重构的第三方模块版本,所以为了干净地升级我需要删除旧的目录/文件并替换为新的目录和文件。当我这样做(使用 svn delete)时,工作副本被阻塞或处于阻止我向工作副本提交或添加新的未版本控制目录的状态。我已经尝试过 svn update、svn cleanup 以及其他 UI(TortoiseSVN 和 Cornerstone)修复快捷方式,但似乎无法重新同步 - 即无需回滚到以前的修订版或签出新副本。

我认为必须删除本地工作副本和远程仓库上的目标目录,更新工作副本,将新目录添加到工作副本,然后提交到仓库;但我不确定我可能遗漏的细节或任何遗漏的步骤或细微之处。我正在升级的模块对站点应用程序非常重要,所以我需要在第一时间就做好这一点——因为这是在生产服务器上进行的——并且必须快速完成。如果有人能清楚地标出这些步骤,我将不胜感激。

4

3 回答 3

11

为了使这更容易,您可以通过在目录不存在的情况下创建单个“损坏”修订的方式来执行此操作。

  1. svn up更新您的工作副本
  2. svn delete <directory>摆脱当前目录
  3. svn commit -m 'Deleted old module'
  4. 在新目录中复制到工作副本
  5. svn add <directory>添加新的目录结构
  6. svn commit -m 'Added new module'

这个问题有关于如何使用“供应商分支”的详细信息,这可能被证明是适合您情况的更好解决方案。

于 2011-04-14T14:30:31.780 回答
2

使用 TortoiseSVN 的 RepoBrowser 很简单。只需删除旧文件夹,然后将新文件夹拖放到其中。

于 2011-12-05T18:13:53.720 回答
1

如果您确实需要在一次提交中更新目录结构,您可以使用 WinMerge :

  1. 递归比较两棵树,使用 SVN 过滤器避免比较.svn 目录
  2. 从 WC 中删除新结构中不存在的文件和目录
  3. 将仅存在于新结构中的文件和目录添加到您的 WC
  4. 将两种结构中存在的所有文件替换为 WC 中的新文件
  5. 犯罪
于 2011-04-14T14:44:42.640 回答