重新创建SVN存储库


8

在发生重大服务器故障后,svn存储库被破坏,并且我的工作版本为最新版本,

从我的工作版本重新创建svn存储库的方法是什么?

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

 svn switch NEW_SVN_PATH .

我得到一个错误

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

Answers:


2

初始化新的svn备案后

  1. 在客户端上将当前工作目录的svn导出到其他位置
  2. 从导出的位置将svn导入到新的svn url
  3. 现在将svn移至创建的新存储库。

虽然这可能有效,但我认为与其重新安置,不如重新结帐可能会很好


2

不得不处理这个。我使用托管的Subversion,先转储然后导入。他们的导入过程没有将UUID从旧的仓库转移到新的仓库,所以我得到了与OP相同的错误。Stack Exchange网站上的所有答案仅告诉您如何使用“ svnadmin setuuid”来解决此问题,但是由于我使用托管服务,因此这不是我的选择(因此svnadmin将无权访问存储库)。我本可以输入票证,但不想处理等待,所以这是我通过手动更新工作副本的UUID来解决的方法

警告:只有在确定工作副本和要重新指向的存储库完全同步时,才尝试此操作。不知道如果没有会发生什么。

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

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

第5步所做的只是替换我认为的“条目”文件中的URL,因此您可以根据需要手动进行操作。也可以使用“ svn”命令行工具,但不知道该命令是否有效。


这很激烈。那真的有必要吗?我只是想弄清楚,因为我的提供者显然移动了我们的存储库,并且出现了相同的错误。
直到

0

您可以在空的存储库上设置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

我的服务器版本的svnadmin没有setuuid子命令,请猜这是较新的命令之一。然后我在存储库中找到了一个文件db / uuid,但是在修改其中的编号后,svn仍然抱怨它不是同一存储库
Pavel K.

0

我遇到了同样的问题,但是由于我们使用了托管选项,所以我也不能svnadmin

这是我在另一个项目中使用的外部对象,我这样做是为了解决此问题:

  1. 备份我所有的本地更改。
  2. rm -rf 目录(外部签入)
  3. 删除svn:external(并提交)
  4. svn up
  5. svn:external再次添加
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.