doesn't have a concept of a "sticky" revision. So if you are looking
at version 10 of a directory, and click to view a file inside which
was last modified in version 6, the fact you were looking at version 10
of the parent directory is not recorded anywhere, and the "Parent Directory"
links on the markup page will take you to a version 6 directory listing
instead of the listing you came from. This problem exists all over
ViewCVS, not just in directory listings, and the result of it is that when
you browse a repository by following the provided links you get sent further
and further back into the history, all the while seeing incomplete log pages
and outdated directory listings which you never asked for.
The new URL scheme works by introducing a new 'pathrev' sticky variable and
is described in detail in a comment in the _orig_path function in
lib/viewcvs.py. The scheme is not backwards compatabile with all (or
maybe even most) old subversion URLs. Specifically, any old URL referring
to a path that no longer exists in the HEAD will not work. Other subversion
URLs will still work.
It is still possible to add backwards compatibility. We'd have to rename
the rev parameter to something else, so we could know that all URLs with
'rev' in them are old style URLs which need to be redirected. I don't know
if it's worth doing this though.
This is not an isolated change. I've tried to unite the Subversion "sticky
revision" with the present "only_with_tag" logic for CVS. And since I had
to go over viewcvs.py with a fine-toothed comb implementing these things,
there are also some miscellaneous cleanups there.
* lib/vclib/bincvs/__init__.py
(_file_log):
change filtering so when matching revisions to tag, includes all
preceding revisions, not just tag revision itself
* lib/viewcvs.py
(_sticky_vars):
'only_with_tag' is gone, so change this back into a list with no
span-roots values
(request.run_viewcvs):
read new 'pathrev' parameter and use it when calling repos.itemtype
(request.get_link):
add 'pathrev' parameter to urls, restore update _sticky_vars loop
(_legal_params, prep_tags, build_commit):
replace 'only_with_tag' with 'pathrev'
(_orig_path):
new function
(nav_path, common_template_data):
stop adding 'rev' parameters to links
removed unused 'roots_href' template variable
(nav_header_data):
add new 'revision_href', 'orig_path', 'orig_href' template variables
for use in markup and annotate views
(view_markup, view_checkout, view_annotate, setup_diff, generate_tarball,
download_tarball):
use 'pathrev' when looking up file revision
(view_directory):
use 'pathrev' when looking up directory revisions instead of 'rev'.
stop adding 'rev' to links.
add template variables: pathrev, pathrev_action, pathrev_hidden_values.
remove unused template variables: num_files, rev, view_tag, has_tags,
main_href, jump_rev_action, jump_rev_hidden_values, row.show_log.
(view_log):
use 'pathrev' to retrieve log information instead of 'rev'.
stop linking to original paths of copied files.
add template variables: entry.orig_path, entry.orig_href, default_branch,
pathrev, pathrev_action, pathrev_hidden_values, branch_tags, plain_tags.
remove template variables: entry.filename, entry.prev_path,
branch, path_selected, view_tag, branch_names, branch_select_action,
branch_select_hidden_values.
(view_cvsgraph):
use common_template_data instead of nav_header_data, 'pathrev' instead
of 'only_with tag'
(view_diff):
use common_template_data instead of nav_header_data
add template variables: path_left, path_right
(view_revision):
use 'pathrev' instead of 'rev' in links
* templates/include/dir_header.ezt
rearrange header and add sticky tag/revision row
* templates/include/dir_footer.ezt
remove tag selector
* templates/include/pathrev_form.ezt
new, sticky tag/revision selector form based on code from
dir_footer.ezt
* templates/include/branch.ezt
* templates/include/branch_form.ezt
* templates/include/view_tag.ezt
removed
* templates/include/log_header.ezt
new, based on branch.ezt and view_tag.ezt
* templates/include/log_footer.ezt
new
* templates/include/log.ezt
* templates/include/log_table.ezt
include log_header.ezt and log_footer.ezt
* templates/include/annotate.ezt
* templates/include/diff.ezt
* templates/include/markup.ezt
show original paths and add view_revision links
* cvsgraph.conf.dist
replace only_with_tag parameter with pathrev
* website/template-authoring-guide.html
update template variable information
git-svn-id: http://viewvc.tigris.org/svn/viewvc/trunk@1145 8cb11bc2-c004-0410-86c3-e597b4017df7
Strict. Changes have been made in the EZT templates, the CSS files,
HTML code embedded in the Python files as well as in the help
files. The original code structure and design is the very same. No
other improvements have been made to the browser code and it still
uses the old layout tables to create the page grid.
Apart from the XHTML/CSS code changes, the patch adds an argument (-x
x) for CVSGraph in viewcvs.py in the view_cvsgraph function to tell
CVSGraph to generate XHTML code. For Mozilla/Firefox to recognize the
id attribute in the image map generated, the content-type must be set
to application/xhtml+xml (see
https://bugzilla.mozilla.org/show_bug.cgi?id=109445). This patch does
however not change the content-type, but uses an ugly hack to make the
CVSGraph output work in Mozilla with the current text/html
content-type: a name attribute is merged into the id attribute in the
map_name defined in the cvsgraph.conf.dist file.
The XHTML code does not contain the standard XML declaration, just the
XHTML 1.0 Strict Doctype. This is to keep ViewCVS as encoding agnostic
as before and let the browser decide which encoding to use. An XML
file without the encoding declared must be interpreted as UTF-8 (or
UTF-16 if the byte order mark is included).
* viewcvs/cvsgraph.conf.dist
Add name="" hack to the 'map_name' variable so Mozilla/Firefox will work.
* viewcvs/lib/ezt.py
XHTML-ize sample output.
* viewcvs/lib/viewcvs.py
XHTML-ize hard-coded output.
(view_cvsgraph): Pass "-x x" to cvsgraph to force XHTML production.
* viewcvs/lib/blame.py
* viewcvs/lib/debug.py
* viewcvs/lib/py2html.py
* viewcvs/lib/query.py
* viewcvs/lib/vclib/bincvs/__init__.py
* viewcvs/templates/annotate.ezt
* viewcvs/templates/diff.ezt
* viewcvs/templates/dir_alternate.ezt
* viewcvs/templates/directory.ezt
* viewcvs/templates/error.ezt
* viewcvs/templates/graph.ezt
* viewcvs/templates/log.ezt
* viewcvs/templates/log_table.ezt
* viewcvs/templates/markup.ezt
* viewcvs/templates/query.ezt
* viewcvs/templates/query_form.ezt
* viewcvs/templates/query_results.ezt
* viewcvs/templates/revision.ezt
* viewcvs/templates/roots.ezt
* viewcvs/templates/docroot/help_dirview.html
* viewcvs/templates/docroot/help_log.html
* viewcvs/templates/docroot/help_logtable.html
* viewcvs/templates/docroot/help_query.html
* viewcvs/templates/docroot/help_rootview.html
* viewcvs/templates/docroot/styles.css
* viewcvs/templates/include/branch.ezt
* viewcvs/templates/include/branch_form.ezt
* viewcvs/templates/include/diff_form.ezt
* viewcvs/templates/include/dir_footer.ezt
* viewcvs/templates/include/dir_header.ezt
* viewcvs/templates/include/file_header.ezt
* viewcvs/templates/include/footer.ezt
* viewcvs/templates/include/header.ezt
* viewcvs/templates/include/paging.ezt
* viewcvs/templates/include/sort.ezt
* viewcvs/templates/include/view_tag.ezt
XHTML-ize hard-coded output and templatized data.
* viewcvs/CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/trunk@1109 8cb11bc2-c004-0410-86c3-e597b4017df7
links instead of cobbling them together in cvsgraph.conf. This way
cvsgraph.conf doesn't have to change if we add new url schemes and we can
handle sticky variables and root parameters without special case code.
* lib/viewcvs.py
(Request.get_url):
accept new "partial" argument to append trailing ? or & to generated
url
(view_cvsgraph):
pass get_url generated links to cvsgraph instead of url fragments
* cvsgraph.conf.dist
use the new links passed by ViewCVS
git-svn-id: http://viewvc.tigris.org/svn/viewvc/trunk@981 8cb11bc2-c004-0410-86c3-e597b4017df7
cgi/viewcvs.cgi, cgi/query.cgi, cgi/viewcvs-strace.sh
- moved stub scripts from cgi/ to www/cgi/
* cgi/granny.cgi
- deleted since annotate functionality is already intergrated into
viewcvs
* cvsgraph.conf.dist, viewcvs.conf.dist,
cgi/cvsgraph.conf.dist, cgi/viewcvs.conf.dist
- moved configuration files from cgi/ to project root
* www/mod_python/.htaccess, www/mod_python/query.py, www/mod_python/viewcvs.py,
windows/htaccess.mod_python, windows/query.py windows/viewcvs.py
- moved mod_python files from windows/ to www/mod_python/
* www/asp/query.asp, www/asp/viewcvs.asp,
windows/query.asp, windows/viewcvs.asp
- moved asp files from windows/ to www/asp/
* viewcvs-install
- updated installer to deal with all the moved files
* INSTALL windows/README website/upgrading.html
- updated documentation with new file locations and mod_python information
git-svn-id: http://viewvc.tigris.org/svn/viewvc/trunk@657 8cb11bc2-c004-0410-86c3-e597b4017df7