2009-10-30 14 views
0

如何测试一个文件在所有存在的分支中是否相同?
即使构建脚本的伪代码也会有所帮助。SVN,测试它存在的所有分支中的文件是否相同

谢谢。

编辑: 我不得不对5个分支的约900个文件执行此操作。很长的故事。
事实证明,最简单的做法是只检查一切,并使用标准的命令行工具来完成这项工作。

谢谢大家的建议。

+0

下面是一篇关于分支之间的版本比较http://www.murrayc.com/blog/permalink/2007/01/25/subversion-diff-between-branches/ – 2009-10-30 14:49:32

回答

1

最简单(最快)的方法是比较文件的版本号,因为分支和标记不会改变它们。

如果你按照这个路径,你不检查身份,但如果文件是在分支中更改,这通常更重要。

因此,如果有人将文件更改为文件,然后反向合并回旧版本,则会报告虚警。为避免这种情况,您可以区分具有不匹配版本的文件。

您可以通过

svn ls -vR REPO_URL/path/to/file 

或漂亮的XML获得最新修订版中的所有文件的版本号:

svn ls --xml -R REPO_URL/path/to/file 

如果你知道,该文件路径(相对距离trunk)在整个存储库中都是唯一的,您可以使用grep获取所有分支文件:

svn ls -vR REPO_URL/ | grep /path/to/file/without/trunk 

然后,你必须有所有相关信息,只是需要解析。(但SVN LS -vr REPO_URL /是真的慢)

+0

我想这应该工作,如果相同的文件分别添加到2个分支,对吧?谢谢。 – z5h 2009-10-30 20:32:40

+0

不然,这将报告diofference(因为修订不一样),这通常不是正确的方式,并与svn合并将是困难的 – 2009-10-31 08:29:55

+0

是的,我知道。这是/是一团糟。我不得不使用svn开发者的差异补丁来让svn合并各个分支而不会崩溃。 – z5h 2009-11-02 15:23:04

2

像下面这样的东西?

 
foreach(branch in project/branches/*) 
    svn diff project/trunk/relative_path_to_file branch/relative_path_to_file 
相关问题