Skip to content
This repository has been archived by the owner on Sep 11, 2020. It is now read-only.

git: remote, Do not iterate all references on update. #833

Merged
merged 1 commit into from
May 16, 2018

Conversation

jfontan
Copy link
Contributor

@jfontan jfontan commented May 14, 2018

The current code iterates all the references in the remote to check if they match the refspec. This is OK when the refspec is a wildcard but is a waste of time when they are not.

A hash with references is generated for fast access before starting the update and used only when the refspec is not a wildcard.

In a repository with 7800 references this meant 7800 * 7800 checks. With the current code it took 8m30s to update the references. With the new code it takes less than 0.5s.

References are already extensively tested in remote_test.go.

The current code iterates all the references in the remote to check if
they match the refspec. This is OK when the refspec is a wildcard but
is a waste of time when they are not.

A hash with references is generated for fast access before starting the
update and used only when the refspec is not a wildcard.

In a repository with 7800 references this meant 7800 * 7800 checks. With
the current code it took 8m30s to update the references. With the new
code it takes less than 0.5s.

References are already extensively tested in remote_test.go.

Signed-off-by: Javi Fontan <jfontan@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants