SVN合并失败E160013找不到文件



我们有一个SVN存储库,我们已经使用了多年,它具有存储多个项目的复杂文件夹结构。我们正试图将一个子文件夹拉入一个新的存储库,以便单独管理。

此外,我们的原始SVN存储库在修订历史记录中间的某个修订号处似乎已损坏,因此转储和加载整个存储库失败。

我们正在尝试的过程如下:

  1. 在损坏点之后,尝试创建存储库的转储,其中仅包含与子文件夹相关的更改
  2. 尝试使用我们认为在损坏点之前存在的文件夹结构创建一个空存储库
  3. 将存储库转储(步骤1(合并为新的空存储库的转储(步骤2(,以创建合并的转储文件
  4. 将合并后的存储库转储文件加载到我们新创建的新存储库中

我们在尝试执行步骤4时遇到错误。bash终端接收到以下输出:

------- Committed revision 4308 >>>
<<< Started new transaction, based on original revision 4309
------- Committed revision 4309 >>>
<<< Started new transaction, based on original revision 4310
* editing path : Our/Really/Large/Complex/Filepath/Subfolder ...svnadmin: E160013: File not found: transaction '4309-3c9', path '/Our/Really/Large/Complex/Filepath/Subfolder'

首先,我们在一个新的存储库中创建了预期的文件夹结构;EmptyFolderStructure";。这意味着我们添加了所有文件夹以创建路径"/我们的/真的/大/复杂/文件路径/子文件夹";一个接一个,然后使用TortoiseSVN添加文件夹,然后使用TotoiseSVn将其提交到存储库。

我们(在bash中(输入的完整命令如下:

步骤1:

svnadmin dump repository --revision 4308:8000 > Release4308.8000.dump
svndumpfilter include "Our/Really/Large/Complex/Filepath/Subfolder" < Release4308.8000.dump > Filtered4308.8000.dump

步骤2:

svnadmin dump EmptyFolderStructure > ResultRepository.dump

步骤3:

tail -n +4 Release4308.8000.dump >> ResultRepository.dump

第4步:

svnadmin create ResultRepository
svnadmin load --ignore-uuid ResultRepository < ResultRepository.dump

有没有人遇到过类似的问题,对我们成功创建新存储库的方法有什么想法?

我们已经设法让它工作起来。存储库未损坏,但尝试加载转储文件失败,因为它取决于预先存在的文件夹结构。此外,我们还需要将子文件夹移到根文件夹中,以使其正常工作。

以下是我们最终使用的命令:

svnadmin dump repository --revision 0:8000 > Release0.8000.dump
svndumpfilter include "OurReallyLargeComplexFilepathSubfolder" < Release0.8000.dump > Filtered0.8000.dump
perl -pi -e 's/Node-path: Our/Really/Large/Complex/Filepath//Node-path: /g' Filtered0.8000.dump
perl -pi -e 's/Node-copyfrom-path: Our/Really/Large/Complex/Filepath//Node-copyfrom-path: /g' Filtered0.8000.dump
svnadmin create NewRepository
svnadmin load --ignore-uuid NewRepository < Filtered0.8000.dump

我们最初使用sed进行替换,但这导致了二进制文件的问题。

最新更新