Update get_link() to add a rev parameter for diff links on subversion

repositories (sets rev to the same value as r2).

Update run_viewcvs() so that if no view is selected, handle requests
that specify r1,r2,rev as diffs rather than checkouts, and requests
that specify r1,rev as logs.

Update log.ezt and log_table.ezt to set the rev parameter in the diff
links when browsing subversion repositories.


git-svn-id: http://viewvc.tigris.org/svn/viewvc/trunk@888 8cb11bc2-c004-0410-86c3-e597b4017df7
remotes/tags/1.0.0-rc1
jhenstridge 2004-07-21 15:46:47 +00:00
parent 69d586a5d8
commit f2d02f282b
3 changed files with 21 additions and 13 deletions

View File

@ -316,7 +316,11 @@ class Request:
if self.pathtype == vclib.DIR:
self.view_func = view_directory
elif self.pathtype == vclib.FILE:
if self.query_dict.has_key('rev'):
if self.query_dict.has_key('r1') and self.query_dict.has_key('r2'):
self.view_func = view_diff
elif self.query_dict.has_key('r1') and self.query_dict.has_key('rev'):
self.view_func = view_log
elif self.query_dict.has_key('rev'):
if self.query_dict.get('content-type', None) in (viewcvs_mime_type,
alt_mime_type):
self.view_func = view_markup
@ -324,8 +328,6 @@ class Request:
self.view_func = view_checkout
elif self.query_dict.has_key('annotate'):
self.view_func = view_annotate
elif self.query_dict.has_key('r1') and self.query_dict.has_key('r2'):
self.view_func = view_diff
elif self.query_dict.has_key('tarball'):
self.view_func = download_tarball
elif self.query_dict.has_key('graph'):
@ -437,6 +439,12 @@ class Request:
if view_func is view_annotate and params.has_key('annotate'):
view_func = None
# For diffs on Subversion repositories, set rev to the value of r2
# otherwise, we get 404's on movied files
if view_func is view_diff and self.roottype == 'svn' \
and not params.has_key('rev'):
params['rev'] = params.get('r2')
# no need to explicitly specify diff view when
# there's r1 and r2 parameters
if view_func is view_diff and params.has_key('r1') \

View File

@ -42,7 +42,7 @@
[is entries.rev rev_selected]
- <b>[[]selected]</b>
[else]
- <a href="[diff_url]?r1=[entries.rev][is roottype "svn"]&amp;p1=[entries.filename][end][diff_params]">[[]select for diffs]</a>
- <a href="[diff_url]?r1=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev]&amp;p1=[entries.filename][end][diff_params]">[[]select for diffs]</a>
[end]
[end]
[end]
@ -103,10 +103,10 @@
[else]
[is pathtype "file"]
[if-any entries.prev]
<br>Diff to <a href="[diff_url]?r1=[entries.prev]&amp;r2=[entries.rev][is roottype "svn"][if-any entries.prev_path]&amp;p1=[entries.prev_path][end]&amp;p2=[entries.filename][end][diff_params]">previous [entries.prev]</a>
<br>Diff to <a href="[diff_url]?r1=[entries.prev]&amp;r2=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev][if-any entries.prev_path]&amp;p1=[entries.prev_path][end]&amp;p2=[entries.filename][end][diff_params]">previous [entries.prev]</a>
[if-any human_readable]
[else]
(<a href="[diff_url]?r1=[entries.prev]&amp;r2=[entries.rev][is roottype "svn"][if-any entries.prev_path]&amp;p1=[entries.prev_path][end]&amp;p2=[entries.filename][end]&amp;diff_format=h[diff_params]">colored</a>)
(<a href="[diff_url]?r1=[entries.prev]&amp;r2=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev][if-any entries.prev_path]&amp;p1=[entries.prev_path][end]&amp;p2=[entries.filename][end]&amp;diff_format=h[diff_params]">colored</a>)
[end]
[end]
@ -130,10 +130,10 @@
[if-any entries.to_selected]
[if-any entries.prev], [else]<br>Diff[end]
to <a href="[diff_url]?r1=[rev_selected]&amp;r2=[entries.rev][is roottype "svn"][if-any entries.prev_path]&amp;p1=[path_selected][end]&amp;p2=[entries.filename][end][diff_params]">selected [rev_selected]</a>
to <a href="[diff_url]?r1=[rev_selected]&amp;r2=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev][if-any entries.prev_path]&amp;p1=[path_selected][end]&amp;p2=[entries.filename][end][diff_params]">selected [rev_selected]</a>
[if-any human_readable]
[else]
(<a href="[diff_url]?r1=[rev_selected]&amp;r2=[entries.rev][is roottype "svn"][if-any entries.prev_path]&amp;p1=[path_selected][end]&amp;p2=[entries.filename][end]&amp;diff_format=h[diff_params]">colored</a>)
(<a href="[diff_url]?r1=[rev_selected]&amp;r2=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev][if-any entries.prev_path]&amp;p1=[path_selected][end]&amp;p2=[entries.filename][end]&amp;diff_format=h[diff_params]">colored</a>)
[end]
[end]
[end]

View File

@ -53,20 +53,20 @@
[is entries.rev rev_selected]
<b>[[]selected]</b><br>
[else]
<a href="[diff_url]?r1=[entries.rev][is roottype "svn"]&amp;p1=[entries.filename][end][diff_params]"><b>[[]select&nbsp;for&nbsp;diffs]</b></a><br>
<a href="[diff_url]?r1=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev]&amp;p1=[entries.filename][end][diff_params]"><b>[[]select&nbsp;for&nbsp;diffs]</b></a><br>
[end]
[if-any entries.to_selected]
<a href="[diff_url]?r1=[rev_selected]&amp;r2=[entries.rev][is roottype "svn"][if-any entries.prev_path]&amp;p1=[path_selected][end]&amp;p2=[entries.filename][end][diff_params]"><b>Diff&nbsp;to&nbsp;selected&nbsp;[rev_selected]</b></a><br>
<a href="[diff_url]?r1=[rev_selected]&amp;r2=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev][if-any entries.prev_path]&amp;p1=[path_selected][end]&amp;p2=[entries.filename][end][diff_params]"><b>Diff&nbsp;to&nbsp;selected&nbsp;[rev_selected]</b></a><br>
[if-any human_readable]
[else]
<a href="[diff_url]?r1=[rev_selected]&amp;r2=[entries.rev][is roottype "svn"][if-any entries.prev_path]&amp;p1=[path_selected][end]&amp;p2=[entries.filename][end]&amp;diff_format=h[diff_params]"><b>colored</b></a><br>
<a href="[diff_url]?r1=[rev_selected]&amp;r2=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev][if-any entries.prev_path]&amp;p1=[path_selected][end]&amp;p2=[entries.filename][end]&amp;diff_format=h[diff_params]"><b>colored</b></a><br>
[end]
[end]
[if-any entries.prev]
<a href="[diff_url]?r1=[entries.prev]&amp;r2=[entries.rev][is roottype "svn"][if-any entries.prev_path]&amp;p1=[entries.prev_path][end]&amp;p2=[entries.filename][end][diff_params]"><b>Diff&nbsp;to&nbsp;previous&nbsp;[entries.prev]</b></a><br>
<a href="[diff_url]?r1=[entries.prev]&amp;r2=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev][if-any entries.prev_path]&amp;p1=[entries.prev_path][end]&amp;p2=[entries.filename][end][diff_params]"><b>Diff&nbsp;to&nbsp;previous&nbsp;[entries.prev]</b></a><br>
[if-any human_readable]
[else]
<a href="[diff_url]?r1=[entries.prev]&amp;r2=[entries.rev][is roottype "svn"][if-any entries.prev_path]&amp;p1=[entries.prev_path][end]&amp;p2=[entries.filename][end]&amp;diff_format=h[diff_params]"><b>colored</b></a><br>
<a href="[diff_url]?r1=[entries.prev]&amp;r2=[entries.rev][is roottype "svn"]&amp;rev=[entries.rev][if-any entries.prev_path]&amp;p1=[entries.prev_path][end]&amp;p2=[entries.filename][end]&amp;diff_format=h[diff_params]"><b>colored</b></a><br>
[end]
[end]
[end]