删除不必要的svn:mergeinfo属性

Leo*_*man 136 svn tortoisesvn merge svn-mergeinfo

当我在我的存储库中合并东西时,Subversion想要将大量svn:mergeinfo属性添加/更改为与我想要合并的内容完全无关的文件.

有关此行为的问题之前已在Stack Overflow上提出过:

根据我从上面提到的主题中理解,看起来我的存储库中的很多文件都有明确的svn:mergeinfo属性,当它们不应该时.建议是减少金额,只将这些属性放在相关的文件/文件夹上.

所以现在我的问题是:如何轻松删除那些不需要的属性?我正在使用TortoiseSVN,但我不愿意手动检查/修复数百个文件.有没有更简单的方法来删除这些不必要的svn:mergeinfo属性?

PS我不是在寻找C++ SVN API代码.

Vin*_*ent 140

这是删除所有子树svn:mergeinfo属性但不在根文件夹中的另一种方法(这是分支正常工作所必需的).

从项目的根目录做:

svn propdel svn:mergeinfo -R
svn revert .
svn ci -m "Removed mergeinfo"
Run Code Online (Sandbox Code Playgroud)

  • 或者,只是不要在根目录"svn propdel -R svn:mergeinfo ./*"上执行此操作. (56认同)
  • "svn propdel -R svn:mergeinfo ./*./.[^.]*"如果你还有"dot"/*ix隐藏文件,对于每个问题的Windows用户来说可能不是问题. (3认同)
  • 抑制输出加速它:"svn propdel svn:mergeinfo -R> nul"(或使用Linux的>/dev/null) (3认同)
  • @TT.我认为这个想法只是去那个包含所有乱搞合并信息的目录并从那里开始,所以你不必恢复根目录.你不想搞乱root的mergeinfo. (3认同)
  • @JeremyWeir你是什么意思"只是不要在根目录上做"?从那时起呢?你对这个评论有很多赞成,但我没有看到替代方案. (2认同)

Kel*_*vin 15

这是一种删除所有子树svn:mergeinfo属性的方法.在存储库的根目录中运行它:

svn propget svn:mergeinfo --depth=infinity 
    | grep -v "^/"
    | grep -v "^\."   
    | cut -d- -f1 
    | xargs svn propdel svn:mergeinfo
Run Code Online (Sandbox Code Playgroud)

一行代码,便于复制/粘贴:

svn propget svn:mergeinfo --depth=infinity | grep -v "^/" | grep -v "^\." | cut -d- -f1 | xargs svn propdel svn:mergeinfo
Run Code Online (Sandbox Code Playgroud)

要在运行之前预览这将影响哪些文件,请将最后一个"propdel"更改为"propget"或完全删除最后一个xargs管道.

  • 在文件中使用连字符:svn propget -R svn:mergeinfo | grep -v"^ /"| grep -v"^ \." | 剪"-d"-f1 | xargs svn propdel svn:mergeinfo (2认同)

Von*_*onC 12

正如这个帖子中提到的:

  • 大多数空的mergeinfo("空白")可能是由工作副本到工作副本副本/移动引起的,其中源项目没有显式的mergeinfo.除非您使用1.6 SVN,否则使用propdel可能是解决方案:从1.5.5开始,这些WC到WC副本不再在目标上创建空的mergeinfo
  • 早期的svn move(rename)重组操作也可以传播mergeinfo,而不是将它们留在根目录下
  • 有一个潜在的内存问题,由案例3393跟踪,将在即将发布的1.6.2版本中修复并在1.5中后端移植


Yve*_*tin 6

由于我对盲目svn:merge-info删除属性没有信心,我已经实现了一个工具来分析工作副本的当前情况,并从非root合并信息属性中删除尽可能多的合并修订.在进行其他人工检查和控制后,可以提交工作副本上的更改.

这是:svn-clean-mergeinfo

不要犹豫,报告任何有关其使用的问题,以改善它.

Subversion 1.10引入了一个专门用于该任务的新工具: svn-mergeinfo-normalizer

  • 此工具非常适合合并合并信息属性,例如使用部分子目录合并创建的类型,这些大型团队的开发人员可能会创建许多不完美协调的开发人员.该工具似乎存在每个分支中不存在的文件的问题,我在文件上获得剩余的merge-info属性,指示文件从不存在的分支上的修订. (2认同)