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 — at Version 3

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:

Description

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.

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.

Note: See TracTickets for help on using tickets.