GitHub import: Run housekeeping after initial import
After an initial fetch, the repository will have many loose objects and refs. Running a `git gc` will compact refs into `packed-refs` and objects into `.pack` files, which should make importing pull requests faster. Part of https://gitlab.com/gitlab-org/gitlab-ce/issues/59477
This commit is contained in:
parent
33316f7f17
commit
d7c1bed80d
3 changed files with 15 additions and 0 deletions
5
changelogs/unreleased/sh-git-gc-after-initial-fetch.yml
Normal file
5
changelogs/unreleased/sh-git-gc-after-initial-fetch.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: 'GitHub import: Run housekeeping after initial import'
|
||||
merge_request: 26600
|
||||
author:
|
||||
type: performance
|
|
@ -54,6 +54,11 @@ module Gitlab
|
|||
project.repository.fetch_as_mirror(project.import_url, refmap: refmap, forced: true, remote_name: 'github')
|
||||
|
||||
project.change_head(default_branch) if default_branch
|
||||
|
||||
# The initial fetch can bring in lots of loose refs and objects.
|
||||
# Running a `git gc` will make importing pull requests faster.
|
||||
Projects::HousekeepingService.new(project, :gc).execute
|
||||
|
||||
true
|
||||
rescue Gitlab::Git::Repository::NoRepository, Gitlab::Shell::Error => e
|
||||
fail_import("Failed to import the repository: #{e.message}")
|
||||
|
|
|
@ -197,6 +197,11 @@ describe Gitlab::GithubImport::Importer::RepositoryImporter do
|
|||
.to receive(:fetch_as_mirror)
|
||||
.with(project.import_url, refmap: Gitlab::GithubImport.refmap, forced: true, remote_name: 'github')
|
||||
|
||||
service = double
|
||||
expect(Projects::HousekeepingService)
|
||||
.to receive(:new).with(project, :gc).and_return(service)
|
||||
expect(service).to receive(:execute)
|
||||
|
||||
expect(importer.import_repository).to eq(true)
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue