Here's an example for determining revisions that actually introduce changes:
Consider Revision 516: 570 trunk/app/controllers/account_controller.rb
Here we should display the versions that introduced the actual differences...
Maby like this: Revision 514(516): 567(570) trunk/app/controllers/account_controller.rb
How do we determine 514 and 567?
When was trunk/app/controllers/account_controller.rb@ 516 last changed?
svn info http://svn.redmine.org/redmine/trunk/app/controllers/account_controller.rb@516 | grep -e "^Last Changed Rev: " | cut -c19-
...this gives us
514.
When was trunk/app/controllers/account_controller.rb@ 570 last changed?
svn info http://svn.redmine.org/redmine/trunk/app/controllers/account_controller.rb@570 | grep -e "^Last Changed Rev: " | cut -c19-
...this gives us
567.
Redmine should show which version introduced the changes.
To determine versions prior to 514 (that introduced changes) use:
svn log -q http://svn.redmine.org/redmine/trunk/app/controllers/account_controller.rb@514 -l 5 -r 513:1 | grep -E -e "^r[[:digit:]]+" -o | cut -c2-
...this gives us
333, 236, 200, 175, 167(Note that -l 5 limits the output to 5 versions)
To determine versions after to 567 (that introduced changes) use:
svn log -q http://svn.redmine.org/redmine/trunk/app/controllers/account_controller.rb@567 -l 5 -r 568:HEAD | grep -E -e "^r[[:digit:]]+" -o | cut -c2-
...this gives us
600, 601, 622, 674, 760(Note that -l 5 limits the output to 5 versions)
To determine versions between 514 and 567 (that introduced changes) use:
svn log -q http://svn.redmine.org/redmine/trunk/app/controllers/account_controller.rb@514 -l 5 -r 515:566 | grep -E -e "^r[[:digit:]]+" -o | cut -c2-
...this gives us "" (Empty output: thus there are no versions between 514 and 567 [that introduce changes]).
Thus any navigation should show us the versions that actually introduced changes. If we happen to land on a version that does not introduce changes, the put it in brackets and show that "Last Changed Rev".