svn - 使用 SVN 合并文件夹删除会导致 "invalid status for updating properties"错误

标签 svn merge

我正在 SVN 中进行稀疏 checkout ,对一个小更改进行合并,其中包括删除文件夹,这让我头疼。

这是一个例子:

svn co https://bigrepo.company.com/ .
mkdir source_branch
mkdir source_branch/proc
mkdir source_branch/proc/new_folder
touch source_branch/proc/new_folder/new_thing
svn add . --force
svn ci
svn cp source_branch/ target_branch/
svn ci

然后在我想要合并的源分支中创建一个修订版

svn del source_branch/proc/new_folder
svn ci

然后将其合并到另一个分支时(使用稀疏结帐):

svn co https://bigrepo.company.com/target_branch --depth empty .
svn up --depth empty proc
svn up --depth empty proc/new_folder
svn up --depth empty proc/new_folder/new_thing
svn merge https://bigrepo.company.com/source_branch -c 1635 .

svn 给我这个错误

svn: E155023: Can't set properties on 'proc/new_folder/new_thing': invalid status for updating properties.

但是如果我像这样进行完整结帐:

svn co https://bigrepo.company.com/target_branch --depth infinity .
svn merge https://bigrepo.company.com/source_branch -c 1635 .

合并工作正常。为什么这不适用于稀疏结账?


我尝试过不同级别的更新,但我不太确定为什么有些有效而有些无效。

这不起作用:

svn co https://bigrepo.company.com/target_branch --depth empty .
svn up --depth empty proc/
svn up --depth infinity proc/new_folder
svn merge https://bigrepo.company.com/source_branch -c 1635 .

这有效:

svn co https://bigrepo.company.com/target_branch --depth empty .
svn up --depth infinity proc/
svn merge https://bigrepo.company.com/source_branch -c 1635 .

稍微好一点,但仍然不理想

最佳答案

http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html

Avoid merges to targets with sparse directories. Likewise, don't merge to depths other than --depth=infinity

这可能就是 SVN 的工作原理;也就是说,在稀疏 check out 的工作副本上进行合并时效果不佳。

据我所知,在进行合并时,SVN 会将合并信息添加到文件和文件夹中。它在哪个级别添加合并信息取决于工作副本的构建方式。也就是说,SVN 足够“聪明”,知道如果您使用 --深度 空 checkout 一个文件夹,它只能将该修订版本的部分合并添加到该文件夹​​。如果您 checkout 该文件夹下的文件/文件夹,它也会在这些级别添加合并信息,稍后当 SVN 执行所谓的“删除”步骤时,它可能会合并该合并信息。

与 --深度无穷大的 checkout 相比,SVN 不需要跟踪较低级别的合并信息,并且可以有效地完全跳过该文件夹树的删除步骤。


因此,选项是,进行完整的 --深度无限检查,或者停止使用 SVN 的合并跟踪并与 --ignore-ancestry 合并,这将正确执行合并,但不会发布合并信息。

关于svn - 使用 SVN 合并文件夹删除会导致 "invalid status for updating properties"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37423739/

相关文章:

android - com.android.builder.dexing.DexArchiveMergerException : Unable to merge dex - Android Studio 3. 0 稳定

arrays - 合并两个 numpy 数组

android - 在 Android Studio 中添加构建 SVN 修订号

svn - 重新整合分支与合并修订版本

python - "You need version 1.5.0 or better of the Subversion Python bindings"使用 mailer.py

version-control - 在命令行上执行 cvs 更新时,如何获得 cvs 冲突的摘要?

mercurial - 在进行 merge 之前要定位到哪个头?

visual-studio - 需要时合并对话框在哪里?

perl - 有没有自动从文件中提取常用子程序的工具?

svn - 可以 svn 导出并包含未版本控制的文件吗?