Edgewall Software

Opened 12 years ago

Last modified 20 months ago

#10606 new enhancement

GitPlugin: Improve performance

Reported by: Peter Suter Owned by:
Priority: normal Milestone: next-dev-1.7.x
Component: plugin/git Version: 1.0dev
Severity: critical Keywords: performance
Cc: Jun Omae Branch:
Release Notes:
API Changes:
Internal Changes:

Description (last modified by Christian Boos)

Created as part of the move of GitPlugin. Tickets originally reported for th:GitPlugin: #746

Quoting hvr:

  • try to create an additional libgit-thin-based Storage in PyGIT.py to evaluate whether the exec+fork+parse overhead is still signifikant
  • most external git calls can be avoided now thanks to extensive caching of meta-data; one of the remaining speed killers is listing directories in the source browser (cat-file -s calls can be optimized, by using GIT 1.5.3+ -l option to ls-tree; but having to call rev-list for each folder element still remains an issue… maybe it'll be possible to get an enhancement to ls-tree merged upstream to provide that information as well…)

See also: TracDev/Performance/Git

Attachments (0)

Change History (10)

comment:1 by Christian Boos, 12 years ago

Also, the 3 commits from last November in https://github.com/andersk/trac-git-plugin/commits/deforkify seem to be very interesting. Sorry, they're already in… looked in the wrong place.

Last edited 12 years ago by Christian Boos (previous) (diff)

comment:2 by Christian Boos, 12 years ago

Description: modified (diff)
Keywords: performance added

comment:3 by Christian Boos, 11 years ago

Milestone: next-dev-1.1.x
Severity: normalcritical
Version: 1.0dev

Well, libgit-thin seems to have lived, but libgit2/pygit2 are alive and kicking.

The performance boost is very significative, see jomae.git@pygit2.

comment:4 by Jun Omae, 10 years ago

Cc: Jun Omae added

In the jomae.git@pygit2 branch, tracopt.versioncontrol.git.* has been replaced with pygit2 integration. But, I reconsider the following.

  1. While Trac 1.1.x, pygit2 integration is located in tracopt.versioncontrol.pygit2.* with low priority than git executable. Users can choice between git executable and pygit2 integration.
  2. When release of Trac 1.2
    • If the pygit2 integration is stable, tracopt.versioncontrol.git.* is replaced with pygit2 or increase priority of pygit2 in IRepositoryConnector.get_supported_types().
    • If it isn't stable yet, leave its location and priority.
  3. For Trac 1.0 and 0.12 users, register pygit2 plugin on trac-hacks. It is to get feedback of pygit2 integration from other than trunk users.


comment:5 by Ryan J Ollos, 10 years ago

It seems like a good plan to me.

comment:6 by Jun Omae, 10 years ago

Thanks for response. First, I've registered and committed as TracPygit2Plugin on trac-hacks.

comment:7 by anonymous, 10 years ago

is this still open?

comment:8 by Ryan J Ollos, 9 years ago

Milestone: next-dev-1.1.xnext-dev-1.3.x

Narrowing focus for milestone:1.2. Please move ticket to milestone:1.2 if you intend to fix it.

comment:9 by Ryan J Ollos, 5 years ago

Milestone: next-dev-1.3.xnext-dev-1.5.x

Milestone renamed

comment:10 by Ryan J Ollos, 3 years ago

Milestone: next-dev-1.5.xnext-dev-1.7.x

Milestone renamed

Modify Ticket

Change Properties
Set your email in Preferences
as new The ticket will remain with no owner.
The ticket will be disowned.
as The resolution will be set. Next status will be 'closed'.
The owner will be changed from (none) to anonymous. Next status will be 'assigned'.

Add Comment

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