我从svndumpfilter中得到了奇怪的结果--我需要在我们的repo中删除2个特定文件的24个实例,分散在许多分支中。我按照文档中的说明运行命令,如下所示:
例如:
type dumpfile | svndumpfilter exclude foo1/bar.dat foo2/bar.dat > filtered_dumpfile但是,筛选的转储文件似乎没有像预期的那样删除所有节点,而只是删除了2个。我已经通过对这两个转储文件使用svndumptool diff来确认这一点,并且在重新构建存储库后,排除的文件仍然存在。
我确信我没有错过这些文件的任何实例,因为我已经使用svnlook来定位存储库中的所有路径。此外,我还确认了命令和转储文件中的前导斜杠是一致的。
有谁有什么想法吗?
发布于 2012-12-05 17:44:56
与这个问题相关的Apache Subversion FAQ entry最近更新了一种新方法,允许您过滤存储库历史记录。使用它过滤复杂的存储库历史记录可能比使用svndumpfilter方法更方便。
您可以在配置svnsync后使用path-based authorization rules工具复制存储库,该拒绝对需要从存储库历史记录中过滤掉的任何路径的读取访问。
与svndumpfilter不同,svnsync会自动将源路径不可读的复制操作转换为正常的添加操作,这在涉及复制操作的历史记录需要过滤时非常有用。
发布于 2012-01-19 23:44:15
你可以试着这样做,也许会有帮助:
type dumpfile | svndumpfilter exclude foo1/bar.dat | svndumpfilter exclude foo2/bar.dat > filtered_dumpfile或者这样:
svndumpfilter exclude `cat filterlist.txt` < old.dump > new.dump发布于 2012-12-05 21:29:53
您可以在文件中添加所有前缀,并使用--targets FILE选项代替单独的exclude|include
https://stackoverflow.com/questions/8608640
复制相似问题