SVN branch compare
SvnBranchDiffBranching and-MergingSvn Problem Overview
How do I compare one branch with another? I want to compare a branch with the latest revision in trunk.
Svn Solutions
Solution 1 - Svn
You could start with:
svn diff http://REPOS/trunk http://REPOS/branches/B
(Where http://REPOS
is your repository path including the parents of trunk
and branches
.)
This will print a large quantity of text, including all the textual changes but not the binary changes except to say where and when they occurred.
Solution 2 - Svn
If you are just looking for high level of what files are different and do not want to see all the contents, use:
svn diff ^/trunk ^/branches/dev --summarize
(This compares trunk and dev branch)
Solution 3 - Svn
I usually check out the two branches (or the branch and the trunk) into directories. Then I use a graphical tool like Kompare or similar (depending on your preferences, operating system,...). This is really helpful for me when I need to perform complex merges.
Solution 4 - Svn
As lack of reputation won't let me add this as a comment against an existing answer, I'm having to add it as a separate one.
A useful option to svn diff
for me was --ignore-properties
. My two branches had ended up identical code wise, but with different merge histories.
Using --ignore-properties
allowed me to prove to myself that this was the case, without wading through the large quantity of "svn:mergeinfo" property changes.
Solution 5 - Svn
Thanks for the info guys, I would add something to improve the readability of the diff results.If you used: svn diff svn://url:9090/branches/PRD_0002 svn://url:9090/branches/TST_0003 >svn_diff_filename.txt
You can use: findstr "Index:" C:\path\svn_diff_filename.txt >svn_diff_file_list.txt
That will bring you a readable list of files that have any differences.
Solution 6 - Svn
Here's a post from Murray Cumming which describes the non-obvious process:
- Discover the revision numbers: You need to know the revision numbers of the latest versions in each of the branches. It looks like svn log is the only way to do that.
- cd into one of the branch directories, such as trunk.
- Supply the revision numbers to the svn diff command:
svn diff -r123:145
Solution 7 - Svn
To diff between two revisions of a branch:
svn diff -r rLATEST:rOLD
Use svn log
to get the different revisions. Use can limit the number of revisions in the log using svn log -l 5
. only the last 5 revisions will be shown.