Fix bundle creation (#17079)

Signed-off-by: Alexey Terentyev <axifnx@gmail.com>

Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: Gwyneth Morgan <87623694+gwymor@users.noreply.github.com>
Co-authored-by: Gwyneth Morgan <gwymor@tilde.club>
This commit is contained in:
Alexey 〒erentyev 2021-09-26 00:29:25 +03:00 committed by GitHub
parent 58d81835e2
commit 7e9bd206fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 9 deletions

View file

@ -425,14 +425,24 @@ func (repo *Repository) CreateBundle(ctx context.Context, commit string, out io.
} }
defer os.RemoveAll(tmp) defer os.RemoveAll(tmp)
tmpFile := filepath.Join(tmp, "bundle") env := append(os.Environ(), "GIT_OBJECT_DIRECTORY="+filepath.Join(repo.Path, "objects"))
args := []string{ _, err = NewCommandContext(ctx, "init", "--bare").RunInDirWithEnv(tmp, env)
"bundle", if err != nil {
"create", return err
tmpFile,
commit,
} }
_, err = NewCommandContext(ctx, args...).RunInDir(repo.Path)
_, err = NewCommandContext(ctx, "reset", "--soft", commit).RunInDirWithEnv(tmp, env)
if err != nil {
return err
}
_, err = NewCommandContext(ctx, "branch", "-m", "bundle").RunInDirWithEnv(tmp, env)
if err != nil {
return err
}
tmpFile := filepath.Join(tmp, "bundle")
_, err = NewCommandContext(ctx, "bundle", "create", tmpFile, "bundle", "HEAD").RunInDirWithEnv(tmp, env)
if err != nil { if err != nil {
return err return err
} }

View file

@ -136,9 +136,11 @@ func doArchive(r *ArchiveRequest) (*models.RepoArchiver, error) {
if err == nil { if err == nil {
if archiver.Status == models.RepoArchiverGenerating { if archiver.Status == models.RepoArchiverGenerating {
archiver.Status = models.RepoArchiverReady archiver.Status = models.RepoArchiverReady
return archiver, models.UpdateRepoArchiverStatus(ctx, archiver) if err = models.UpdateRepoArchiverStatus(ctx, archiver); err != nil {
return nil, err
} }
return archiver, nil }
return archiver, committer.Commit()
} }
if !errors.Is(err, os.ErrNotExist) { if !errors.Is(err, os.ErrNotExist) {