aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey 〒erentyev <axifnx@gmail.com>2021-09-26 00:29:25 +0300
committerGitHub <noreply@github.com>2021-09-26 00:29:25 +0300
commit7e9bd206fd13a34ccdd59dfa8bf5474e5e7f000d (patch)
tree2bf772fb852175065a003ad664f16bbc23f49687
parent58d81835e2e78cc218d238c580a58cdd54535b44 (diff)
downloadgitea-7e9bd206fd13a34ccdd59dfa8bf5474e5e7f000d.tar.gz
gitea-7e9bd206fd13a34ccdd59dfa8bf5474e5e7f000d.zip
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>
-rw-r--r--modules/git/repo.go24
-rw-r--r--services/archiver/archiver.go6
2 files changed, 21 insertions, 9 deletions
diff --git a/modules/git/repo.go b/modules/git/repo.go
index e7d42dacb1..89af7aa9e1 100644
--- a/modules/git/repo.go
+++ b/modules/git/repo.go
@@ -425,14 +425,24 @@ func (repo *Repository) CreateBundle(ctx context.Context, commit string, out io.
}
defer os.RemoveAll(tmp)
- tmpFile := filepath.Join(tmp, "bundle")
- args := []string{
- "bundle",
- "create",
- tmpFile,
- commit,
+ env := append(os.Environ(), "GIT_OBJECT_DIRECTORY="+filepath.Join(repo.Path, "objects"))
+ _, err = NewCommandContext(ctx, "init", "--bare").RunInDirWithEnv(tmp, env)
+ if err != nil {
+ return err
+ }
+
+ _, err = NewCommandContext(ctx, "reset", "--soft", commit).RunInDirWithEnv(tmp, env)
+ if err != nil {
+ return err
}
- _, err = NewCommandContext(ctx, args...).RunInDir(repo.Path)
+
+ _, 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 {
return err
}
diff --git a/services/archiver/archiver.go b/services/archiver/archiver.go
index 6d4d46e4e0..d602b9ed7f 100644
--- a/services/archiver/archiver.go
+++ b/services/archiver/archiver.go
@@ -136,9 +136,11 @@ func doArchive(r *ArchiveRequest) (*models.RepoArchiver, error) {
if err == nil {
if archiver.Status == models.RepoArchiverGenerating {
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) {