mirror of
https://github.com/go-gitea/gitea.git
synced 2026-02-01 18:21:00 +01:00
33 lines
1.1 KiB
Go
33 lines
1.1 KiB
Go
// Copyright 2025 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package gitrepo
|
|
|
|
import (
|
|
"context"
|
|
|
|
"code.gitea.io/gitea/modules/git"
|
|
"code.gitea.io/gitea/modules/globallock"
|
|
)
|
|
|
|
// PushToExternal pushes a managed repository to an external remote.
|
|
func PushToExternal(ctx context.Context, repo Repository, opts git.PushOptions) error {
|
|
return git.Push(ctx, repoPath(repo), opts)
|
|
}
|
|
|
|
// Push pushes from one managed repository to another managed repository.
|
|
func Push(ctx context.Context, fromRepo, toRepo Repository, opts git.PushOptions) error {
|
|
return globallock.LockAndDo(ctx, getRepoWriteLockKey(toRepo.RelativePath()), func(ctx context.Context) error {
|
|
opts.Remote = repoPath(toRepo)
|
|
return git.Push(ctx, repoPath(fromRepo), opts)
|
|
})
|
|
}
|
|
|
|
// PushFromLocal pushes from a local path to a managed repository.
|
|
func PushFromLocal(ctx context.Context, fromLocalPath string, toRepo Repository, opts git.PushOptions) error {
|
|
return globallock.LockAndDo(ctx, getRepoWriteLockKey(toRepo.RelativePath()), func(ctx context.Context) error {
|
|
opts.Remote = repoPath(toRepo)
|
|
return git.Push(ctx, fromLocalPath, opts)
|
|
})
|
|
}
|