Edgewall Software
Modify

Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#11777 closed defect (fixed)

Raw revision of cached git repository in search view

Reported by: Jun Omae Owned by: Jun Omae
Priority: normal Milestone: 1.0.3
Component: version control Version: 0.12-stable
Severity: normal Keywords: search
Cc: Branch:
Release Notes:

The search results page displays shortened revision ids and only unique changesets.

API Changes:
Internal Changes:

Description (last modified by Jun Omae)

If searching changesets in cached git repository, the revisions are displayed with no changes. The issue doesn't occur if mercurial because search system requires revision table and mercurial connector doesn't support cache.

Both 0.12.x with th:GitPlugin and 1.0.x have this issue.

We should show shortened revisions in search view.

Patch for 1.0-stable:

  • trac/versioncontrol/web_ui/changeset.py

    diff --git a/trac/versioncontrol/web_ui/changeset.py b/trac/versioncontrol/web_ui/changeset.py
    index 097fe81..3225e4f 100644
    a b class ChangesetModule(Component):  
    11281128                    SELECT repos, rev, time, author, message
    11291129                    FROM revision WHERE """ + sql,
    11301130                    args):
    1131                 try:
    1132                     rev = int(rev)
    1133                 except ValueError:
    1134                     pass
    11351131                repos = repositories.get(id)
    11361132                if not repos:
    11371133                    continue # revisions for a no longer active repository
    11381134                cset = repos.resource.child('changeset', rev)
    11391135                if 'CHANGESET_VIEW' in req.perm(cset):
     1136                    try:
     1137                        drev = repos.display_rev(rev)
     1138                    except NoSuchChangeset:
     1139                        continue
    11401140                    yield (req.href.changeset(rev, repos.reponame or None),
    1141                            '[%s]: %s' % (rev, shorten_line(log)),
     1141                           '[%s]: %s' % (drev, shorten_line(log)),
    11421142                           from_utimestamp(ts), author,
    11431143                           shorten_result(log, terms))
    11441144

Attachments (3)

search-changeset-raw-rev.png (9.3 KB ) - added by Jun Omae 9 years ago.
search-changeset-display-rev.png (9.0 KB ) - added by Jun Omae 9 years ago.
20141211T033118.png (11.6 KB ) - added by Jun Omae 9 years ago.

Download all attachments as: .zip

Change History (12)

by Jun Omae, 9 years ago

by Jun Omae, 9 years ago

comment:1 by Jun Omae, 9 years ago

Description: modified (diff)
Owner: set to Jun Omae
Status: newassigned

comment:2 by Jun Omae, 9 years ago

Proposed changes in [00f2202d1/jomae.git] (jomae.git@t11777).

comment:3 by Ryan J Ollos, 9 years ago

Looks good.

OT: I didn't know until hunting around in the code that Repository.display_rev can raise an NoSuchChangeset exception. Would it be useful to start adding to method documentation the exception types that can be raised?

by Jun Omae, 9 years ago

Attachment: 20141211T033118.png added

comment:4 by Jun Omae, 9 years ago

Indeed. Repository.display_rev(), normalize_rev() and short_rev() can raise a NoSuchChangeset exception because the methods normally checks existence of the given rev. In [fe9dc5d9b/jomae.git], added documentation to these methods.

I noticed that the same changeset are shown more than once if multiple repositories have the changeset. We could check whether the changesets are same using Repository.get_changeset_uid(). The method is used in ChangesetModule.get_timeline_events() as well.

After [54fad5d8/jomae.git], changesets would show only once in search view.

comment:5 by Ryan J Ollos, 9 years ago

We could use the Sphinx markup since that's what used to generate ApiDocs:

"""
:raises NoSuchChangeset: if the given `rev` isn't found
"""

Removing duplicate changesets from search is probably a good idea.

in reply to:  5 comment:6 by Jun Omae, 9 years ago

We could use the Sphinx markup since that's what used to generate ApiDocs:

"""
:raises NoSuchChangeset: if the given `rev` isn't found
"""

Thanks. I couldn't find existing apidoc for exceptions. I just find at tags/trac-1.0.2/trac/db/util.py@:156-157#L151. I'll push the changes with your suggestions.

comment:7 by Jun Omae, 9 years ago

Milestone: 0.12.71.0.3

comment:8 by Jun Omae, 9 years ago

Release Notes: modified (diff)
Resolution: fixed
Status: assignedclosed

Committed in [13482,13484-13485] and merged to trunk in [13483,13486].

comment:9 by Ryan J Ollos, 9 years ago

Release Notes: modified (diff)

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Jun Omae.
The resolution will be deleted. Next status will be 'reopened'.
to The owner will be changed from Jun Omae to the specified user.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.