Edgewall Software

Opened 4 years ago

Closed 3 years ago

#13243 closed defect (fixed)

GitCachedRepository.sync() is slow due to executing 1 git process to retrieve changes from each changeset

Reported by: Jun Omae Owned by: Jun Omae
Priority: normal Milestone: 1.5.2
Component: plugin/git Version:
Severity: normal Keywords:
Cc: Branch:
Release Notes:

Fixed slow repository sync command for cached repository with many commits.

API Changes:
Internal Changes:


I noticed repository sync command for cached git repository with many commits is very slow on especially Windows while porting to Python 3. The command invokes GitChangeset.get_changes() to retrieve changes to create node_change records. The method executes git diff-tree -z -r -M <tree1> <tree2> each time.

We could use git diff-tree --stdin ... and reuse the process rather than executing each time. See [0b691b30d/jomae.git] for trunk with Python 3.

I'll post proposed changes for 1.0-stable and results of the improvement.

Attachments (0)

Change History (3)

comment:1 by Jun Omae, 4 years ago

Milestone: 1.0.20next-dev-1.5.x

Re-targeting to 1.5dev because proposed changes are not small for stable branches.

comment:2 by Ryan J Ollos, 4 years ago

Milestone: next-dev-1.5.x1.5.2

Assigning to 1.5.2 since the change in is the py3 branch.

comment:3 by Ryan J Ollos, 3 years ago

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

Changes committed to trunk in r17483.

Modify Ticket

Change Properties
Set your email in Preferences
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.