我从svndumpfilter得到奇怪的结果-我需要消除我们仓库中2个特定文件的24个实例,这些实例分散在许多分支中。我正在像这样记录运行命令:
例如
type dumpfile | svndumpfilter exclude foo1/bar.dat foo2/bar.dat > filtered_dumpfile
但是,似乎经过筛选的转储文件并未按预期方式删除所有节点,而是仅删除了2个节点。我已通过在两个转储文件上使用svndumptool diff进行了确认,并在重建存储库后仍存在被排除的文件。
我确定我没有错过这些文件的任何实例,因为我已经使用svnlook树定位了仓库中的所有路径。另外,我已经确认命令和转储文件中的斜杠是一致的。
有人有主意吗?
最佳答案
与问题相关的Apache Subversion FAQ entry最近已通过一种新方法进行了更新,该方法可以过滤存储库历史记录。复杂的存储库历史记录筛选可能比svndumpfilter
方法更方便。
配置path-based authorization rules后,您可以使用svnsync
工具复制存储库,以拒绝对需要从存储库历史记录中过滤掉的任何路径的读取访问。
与svndumpfilter
不同,svnsync
会将具有不可读源路径的复制操作自动转换为常规添加,这在需要过滤涉及复制操作的历史记录时非常有用。