Finish issue #495 ("Syntax highlight/colorize scripts without
extensions").
* lib/viewvc.py
(markup_stream_pygments): Failing all else, use the Pygments
guess_lexer() function to guess a file's content type from the
first line of its text. (Most of this patch is compensation for
the first that if this heuristic codepath is traversed, we've eaten
a line of text from the file object that we don't expect to have
been eaten.
Patch by: Chris Mayo <cjmayo{__AT__}tigris.org>
(Tweaked by me.)
Also:
* CHANGES:
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2658 8cb11bc2-c004-0410-86c3-e597b4017df7
Finish issue #470 ("No links to repository root logs").
* lib/viewvc.py
(view_roots): Generate a log_href -- the revision log for the root
directory of the repository -- where it makes sense to do so.
* templates/roots.ezt
Markup the last-modified-revision as a link to the log view where
we can.
* docs/template-authoring-guide.html
Note the additional data dictionary item.
Also:
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2654 8cb11bc2-c004-0410-86c3-e597b4017df7
Loop until receiving a definitive answer to the interactive overwrite
query, rather than croaking on an empty response.
* viewvc-install
(install_file): If raw_input() return an empty string, re-ask the
question.
Patch by: Alexey Neyman <stilor@att.net>
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2600 8cb11bc2-c004-0410-86c3-e597b4017df7
Fix issue #494 ("allow override config from in mod_python"). This
commit allows environmental overrides to trump programmatically
passed-in configuration paths.
* INSTALL
Mention the VIEWVC_CONF_PATHNAME override environment variable.
* lib/viewvc.py
(load_config): Document this function and the order in which it
searches for a configuration path. Use server.getenv() instead of
os.environ.get() where we can so that environmental overrides work
in mod_python.
Patch by: Alon Bar-Lev <alon.barlev@gmail.com>
(Tweaked by me.)
Also:
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2598 8cb11bc2-c004-0410-86c3-e597b4017df7
* conf/viewvc.conf.dist
Note the importance of the MIME type maps for syntax coloration, and
point folks to the 'mime_types_files' option.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2594 8cb11bc2-c004-0410-86c3-e597b4017df7
(More) gracefully handle some errorful input conditions.
* lib/vclib/svn/svn_ra.py
(RemoteSubversionRepository._getrev): Re-raise all exceptions as
InvalidRevision exceptions.
* lib/vclib/svn/svn_repos.py
(LocalSubversionRepository._getrev): Re-raise all exceptions as
InvalidRevision exceptions.
Found by: Daniel Shahaf <d.s@daniel.shahaf.name>
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2587 8cb11bc2-c004-0410-86c3-e597b4017df7
Fix issue #486 ("OperationError raised when trying to do a glob search").
Add code to workaround the fact that in Python 2.6,
fnmatch.translate() stopped returning strings that ended with '$'
(which work fine as MySQL regular expressions) and started instead
returning strings that ended with '\Z(?ms)' (which... don't).
* lib/cvsdb.py
(CheckinDatabase.SQLQueryListString): If the returned regexp ends
with '\Z(?ms)', replace those characters with a single '$'
Also:
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2581 8cb11bc2-c004-0410-86c3-e597b4017df7
Fix issue #485 ("Patch view hiding path details").
* lib/viewvc.py
(diff_parse_headers): Add 'path1' and 'path2' parameters, and use
those paths in the returned header lines.
(view_patch, view_diff): Pass paths into diff_parse_headers() now.
Also:
* CHANGES
Record this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2578 8cb11bc2-c004-0410-86c3-e597b4017df7
message might read something like this:
Add '--help' option to standalone.py.
* bin/standalone.py
(usage, badusage): New functions.
(cli): Separate the option parsing from the option validation. Add
support for a '--help' option. On bad input, now print a suggestion
to run the script with '--help' for usage hints.
Also:
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2566 8cb11bc2-c004-0410-86c3-e597b4017df7
Fix issue #444 ("ViewVC stumbles over revisionless ,v files when
sticky tag is specified").
* lib/vclib/ccvs/bincvs.py
(_get_logs): Only try to skip the "rest of the file" if there's
reason to believe there's a "rest of the file". While here,
ensure that the 'tag' variable is defined in all cases (though it
shouldn't matter).
Also:
* CHANGES
Record this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2558 8cb11bc2-c004-0410-86c3-e597b4017df7
read like so:
Fix (to the degree that I believe is reasonable at this time) issue
#433 ("queries return only partial results"). When a database query
is artificially limited by the 'row_limit' setting, inform the user
that the returned data is incomplete.
* lib/cvsdb.py
(CheckinDatabase.GetCommitsTable): New helper.
(CheckinDatabase.AddCommit, CheckinDatabase.CheckCommit,
CheckinDatabase.sql_delete): Use new GetCommitsTable() helper
instead of hard-coding the version-specific selection of the
commits table.
(CheckinDatabase.CreateSQLQueryString): Add 'detect_leftover'
parameter, used internally to check for a reached query limit.
Also, use new GetCommitsTable() helper.
(CheckinDatabase.RunQuery): Update call to CreateSQLQueryString(),
and check for leftover query response rows. If any are found, set
the appropriate flag on the query object.
(CheckinDatabaseQuery.__init__): Set initial values for new
'executed' and 'limit_reached' members.
(CheckinDatabaseQuery.SetExecuted,
CheckinDatabaseQuery.SetLimitReached,
CheckinDatabaseQuery.GetLimitReached,
CheckinDatabaseQuery.GetCommitList): New functions.
* lib/viewvc.py
(view_query): Use query.GetCommitList() now instead of poking into
the query object directly. Also, check query.GetLimitReached(),
reporting the findings through the data dictionary (via a new
'row_limit_reached' item) to the templates.
* lib/query.py
(run_query): Use query.GetCommitList() now instead of poking into
the query object directly. Now return a 2-tuple of commits and a
limit-reached flag.
(main): Update expectations of run_query() call. Populate
'row_limit_reached' data dictionary item.
* templates/query_results.ezt,
* templates/query.ezt
Display a warning if the query results are incomplete.
* templates/docroot/styles.css
(.vc_warning): New style definition.
* docs/template-authoring-guide.html
Document the new 'row_limit_reached' template item.
* conf/viewvc.conf.dist
(row_limit, rss_row_limit): Make it clear what exactly is getting
limited here.
Also:
* CHANGES:
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2552 8cb11bc2-c004-0410-86c3-e597b4017df7
Try to make some sense of the various CVSdb-related limitation
mechanisms, namely by removing the largely redundant "global" limit
and allowing the per-query row limit (which already exist, too) to do
its work.
While here, remove a poorly conceived (but thankfully unhighlighted)
mechanism for overriding the administrative limit on database rows
which was accessible via URL CGI params.
* lib/viewvc.py
(_legal_params): Remove 'limit' as a legal parameter.
(view_query): No longer allow an undocumented URL parameter to
override the admin-declared SQL row limit. That should have never
been allowed!
* lib/cvsdb.py
(CheckinDatabase.__init__): Remove 'row_limit' parameter and
associated self._row_limit member.
(CheckinDatabase.CreateSQLQueryString): No longer fuss with
self._row_limit. Let the individual query carry the row limit.
(ConnectDatabase): Update call to CheckinDatabase().
* lib/query.py
(form_to_cvsdb_query): Now accept 'cfg' parameter, and set the
query's row limit from the configured defaults.
(run_query): Update call to form_to_cvsdb_query().
* docs/url-reference.html
Remove reference to the 'limit' parameter.
Also:
* CHANGES
Note this change, referring to it as a 'security fix' due to the
ramifications of allowing folks to query your potentially monstrous
database while ignoring your configured response set limits.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2548 8cb11bc2-c004-0410-86c3-e597b4017df7
Fix (I think...) issue #479 ("annotate a file, which uses
CVS-keywords"). This changes causes the checkout of CVS file
contents -- when used as part of the markup/annotate logic -- to not
expand keywords. This helps it to be consistent with the results of
the annotate information query.
* lib/vclib/__init__.py,
* lib/vclib/svn/svn_ra.py,
* lib/vclib/svn/svn_repos.py
* lib/vclib/ccvs/ccvs.py
(openfile): Add 'options' parameter (unused). Callers updated.
* lib/vclib/ccvs/bincvs.py
(openfile): Add 'options' parameter, and look for a 'cvs_oldkeywords'
option to govern the use of -kkv or -ko in the 'co' command.
Callers updated.
* lib/viewvc.py
(markup_or_annotate): Pass 'cvs_oldkeywords' option to repos.openfile().
Also:
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2546 8cb11bc2-c004-0410-86c3-e597b4017df7
functions), whose log message looks like so:
Fix issue #477 ("Large log messages trigger excessive memory
consumption").
* lib/viewvc.py
(ViewVCHtmlFormatter._tokenize_text): Switch to a line-based
approach. This provides a *vast* improvement in performance and
memory usage, especially for large log messages with many
mark-up-able regions.
Also:
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2544 8cb11bc2-c004-0410-86c3-e597b4017df7
Finish issue #478 ("Client-facing unhandled exceptions, traceback
dumped") by raising a cleaner error message when asked to display a
"checkout" of a non-file.
* lib/viewvc.py
(view_checkout): If the target isn't a file, raise a
ViewVCException().
Also:
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2542 8cb11bc2-c004-0410-86c3-e597b4017df7
* bin/standalone.py
(main): Fix broken option handling: -d expected an argument, -c
didn't and was doubly associated with both --config-file and
--htpasswd-file.
Also:
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2539 8cb11bc2-c004-0410-86c3-e597b4017df7
Hopefully, fix issue #475 ("regression: required authorization to
root") and issue #476 ("Stack trace for some users if last commit
deleted a file or folder") by preventing ViewVC from trying to look up
the path type of a deleted path at an invalid location.
* lib/vclib/svn/svn_repos.py
(LocalSubversionRepository._gettype): New helper function.
(LocalSubversionRepository.itemtype): Now use _gettype() helper.
(_get_change_copyinfo): New helper.
(_simple_auth_check): Rework this function to definitively resolve
the path type of paths it passes through the authz system,
handling the complication of determining the path of a now-deleted
path by consulting its last location prior to deletion.
Also:
* CHANGES
Note this change, sadly confessing to introducing a regression.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2532 8cb11bc2-c004-0410-86c3-e597b4017df7
(Also includes an accidental commit to CHANGES naming today as the
1.1.9 release date. Which sounds good. What say you?)
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2525 8cb11bc2-c004-0410-86c3-e597b4017df7
Followup to r2517, for issue #457.
* templates/roots.ezt
Also show the last author, and mark only the "Name" header as the
sort choice.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2520 8cb11bc2-c004-0410-86c3-e597b4017df7
Finish issue #457 ("Display repository metadata (last-commit stuff) in
roots view").
* lib/viewvc.py
(view_roots): Include revision metadata in the data dictionary.
(list_roots): If configured to do so, calculate some last-modified
metadata for Subversion roots.
* lib/config.py
(Config.set_defaults): Set default value for new show_roots_lastmod
option.
* conf/viewvc.conf.dist
(show_roots_lastmod): New option.
* templates/roots.ezt
Show some roots metadata if configured to do so.
* docs/template-authoring-guide.html
Document new 'roots' view data dictionary items.
Also:
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2518 8cb11bc2-c004-0410-86c3-e597b4017df7
* lib/vclib/svn/__init__.py
(canonicalize_rootpath): Per the thought found in issue #446
("Specifying repo location using file:// prefix in svn_roots leads
to lack of hyperlinks on revision view"), convert file:/// and
file://localhost/ URLs into local paths.
* CHANGES
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2513 8cb11bc2-c004-0410-86c3-e597b4017df7
Make what should be some decent performance improvements in the
Subversion revision metadata harvesting logic.
* lib/vclib/svn/svn_repos.py
(LocalSubversionRepository._revinfo): Split this into two logical
codepaths, one that needs changed-path information along with the
revision metadata, one which does not. (Because if we don't need
it, there are faster ways to get what we *do* need.)
Also:
* CHANGES:
Note this change.
git-svn-id: http://viewvc.tigris.org/svn/viewvc/branches/1.1.x@2510 8cb11bc2-c004-0410-86c3-e597b4017df7