如何将subversion树从v1.7降级到v1.6?

ccp*_*zza 24 svn

有没有办法将subversion工作副本从1.7版降级到1.6x版?

版本1.7使用单个.svn根文件夹和sqlite用于元数据,因此来自tigris.org的转换python脚本不起作用.

您是否知道一个解决方案不涉及在v1.6下进行干净的结账并复制修改过的文件?

Wim*_*nen 18

有一个脚本可以进行工作副本降级.

但是,这不支持从1.7格式降级到1.6格式,也不会支持将来支持这种格式.脚本中的注释告诉我们为什么这是不可能的:

  # Downgrading from format 11 (1.7-dev) to format 10 is not possible,
  # because 11 does not use has-props and cachable-props (but 10 does).
  # Naively downgrading in that situation causes properties to disappear
  # from the wc.
Run Code Online (Sandbox Code Playgroud)

  • @fishbone:我认为你的意思是其中一个答案应该高于这一个.请注意,这些答案实际上不会保留工作副本的状态.举一个例子,如果你做了一个"svn mv foo bar",那么在降级之后,你会看到foo"缺失"而bar是"unversioned".未提交的SVN属性修改将完全丢失.所以IMO"无法做到"仍然是一个有效的答案. (2认同)

bml*_*lkc 14

我找到了从1.7工作副本中删除.svn文件夹的最佳方法,然后检查它上面的1.6.它对我有用,它也可能适合你.(使用tortoiseSvn 1.6.x客户端)


ccp*_*zza 5

我的脏解决方案是使用v1.6创建一个干净的签出,然后.svn使用一个小的bash脚本将文件夹复制到现有的工作副本:

  #!/usr/bin/env bash
  target=/projects/working-copy-dir

  svn_dirs=`find . -type d -iname .svn`

  for svn_dir in $svn_dirs; do
      tosvn_dir=$target${svn_dir/\.\//}  # strip the extra './' path component
      cp -r $svn_dir $tosvn_dir
  done
Run Code Online (Sandbox Code Playgroud)

这假定脚本是从干净的结帐目录运行的.Target是修改后的工作副本..svn在运行脚本之前,应删除/重命名顶级v1.7 目录.

PS.我暂时不会将此标记为答案,因为上面的解决方案是一种解决方法,实际上并没有将项目从1.7转换为1.6.所以问题仍然存在.