我需要替换生产服务器上的SVN存储库中的目录,但是我不确定在不破坏任何内容的情况下执行此操作的正确方法。被替换的目录是已经完全重构的第三方模块修订版,因此为了彻底升级,我需要删除旧目录/文件并替换为新目录和文件。当我这样做时(使用svn delete),工作副本变得受阻或处于阻止我将新的,未版本化的目录提交或添加到工作副本的状态。我已经尝试过svn update,svn cleanup,以及其他UI(TortoiseSVN和Cornerstone)修复它的快捷方式,但似乎无法重新同步 - 这不会回滚到以前的版本或查看新副本。
我认为必须删除本地工作副本和远程repo上的目标目录,更新工作副本,将新目录添加到工作副本然后提交到repo;但我不确定我可能遗漏的具体细节或任何缺失的步骤或细微之处。我正在升级的模块对于站点应用程序非常重要,因此我需要在第一次才能正确实现 - 因为这是在生产服务器上进行的 - 并且必须快速完成。如果有人能够清楚地说明这些步骤,我会非常感激。
答案 0 :(得分:10)
为了简化这一过程,您可以创建一个不存在目录的单个“损坏”修订版本。
svn up
让您的工作副本保持最新状态svn delete <directory>
摆脱当前目录svn commit -m 'Deleted old module'
svn add <directory>
添加新目录结构svn commit -m 'Added new module'
This question详细介绍了如何使用“供应商分支机构”,这可能会为您的情况提供更好的解决方案。
答案 1 :(得分:2)
使用TortoiseSVN的RepoBrowser可以直截了当地做到这一点。只需删除旧文件夹,然后将新文件夹拖放到。
答案 2 :(得分:1)
如果您确实需要在一次提交中更新目录结构,可以使用WinMerge: