重新创buildsvn仓库

在一个主要的服务器故障之后,svn仓库被销毁,我的工作版本是最新的版本,

什么是从我的工作版本重新创buildsvn仓库的方式?

在一个新的服务器上安装svn并尝试在我的工作副本

svn switch NEW_SVN_PATH . 

我得到一个错误

  Repository UUID '1c604742-6b16-462b-86e4-cc8bce959242' doesn't match expected UUID '6df69aeb-a72c-450d-8102-24036a3855f7' 

在初始化新的svn reporsitry之后

  1. 在客户端上执行当前工作目录的svn导出到不同的位置
  2. 从导出的位置做一个svn导入到新的svn url
  3. 现在做一个svn迁移到新创build的存储。

虽然这可能工作,我认为,而不是一个搬迁,一个新的结账可能是好的

必须处理这个。 我使用托pipe的颠覆,并做了转储,然后导入。 他们的导入过程没有将UUID从旧的repo转移到新的,所以我得到了和OP一样的错误。 Stack Exchange站点上的所有答案只会告诉你如何使用“svnadmin setuuid”来处理这个问题,但是由于我使用的是托pipe服务,所以对我来说这不是一个选项(因此svnadmin将无法访问存储库)。 我本来可以进入一个票,但不想处理等待,所以这里是如何解决它,通过手动更新我的工作副本的UUID

警告:如果您确定工作副本和您重新指向的存储库完全同步,请尝试此操作。 不知道如果不是,会发生什么。

这个过程基本上是用工作副本隐藏的svn文件夹(名为.svn或_svn的文件夹)中名为“entries”的文件中的新UUIDreplace旧的UUID。 完成之后,您可以使用TortoiseSVN的“重定位”将工作目录指向新的存储库URL。

  1. 在控制台窗口中,cd到您的工作文件夹的根目录。
  2. 运行命令以recursion方式从“条目”文件中删除“只读”属性: attrib -R entries /S
  3. 使用文本编辑器的“replace文件”function来replace旧的UUID与新的UUID。 我使用Visual Studio以下设置:查找:PATH_TO_WORKING_FOLDER_ROOT /包含子文件夹:选中/查看这些文件types:条目
  4. 撤消步骤#2: attrib +R entries /S
  5. 将工作副本“重新定位到新的URL。 我用TortoiseSVN:右键单击工作文件夹,TortoiseSVN-> Relocate。

第5步所做的就是replace我认为的“entries”文件中的URL,所以如果需要,您可以手动完成。 也可以使用“svn”命令行工具,但不知道命令closures了我的脑袋。

您可以在一个空的存储库上设置UUID。 然后导入你有的文件。 你会失去你的历史(这不是保存在工作副本)。 但是,通过设置UUID以匹配您的旧版本库,您可以避免在svn开关上出现错误消息。

 $ svnlook uuid /var/svn/repos cf1b8d31-acb6-02dc-bc7c-16e92ce6dbec $ svnadmin setuuid /var/svn/repos # generate a new UUID $ svnlook uuid /var/svn/repos 4c2c49fe-acc1-23dc-acbc-2b28ff0c9e6c $ svnadmin setuuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242 # restore the old UUID $ svnlook uuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242 

我有同样的问题,但由于我们使用托pipe选项,我也无法svnadmin

这是我在另一个项目中使用的外部,我这样做来解决它:

  1. 备份我所有的本地更改。
  2. rm -rf目录(外部被检入)
  3. 删除svn:external (并提交)
  4. svn up
  5. 再次添加svn:external