aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/vcs
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2024-10-04 11:18:10 +0200
committerTaras Madan <tarasmadan@google.com>2024-10-10 15:39:25 +0000
commitcd942402d6bc82fa3ea87e5c43509e1ec6cfafe2 (patch)
tree4bcd4b26ad9f9a1a79d6530b2bc0bdccc1ea1015 /pkg/vcs
parentd7475276a82f2dbec772bce46ac82ce370fb4bef (diff)
syz-ci: introduce gitArchive parameters
Some commits don't live long remotely. It sometimes happens we need them later to: 1. Merge coverage. 2. Mention during communication.
Diffstat (limited to 'pkg/vcs')
-rw-r--r--pkg/vcs/fuchsia.go4
-rw-r--r--pkg/vcs/git.go9
-rw-r--r--pkg/vcs/vcs.go3
3 files changed, 16 insertions, 0 deletions
diff --git a/pkg/vcs/fuchsia.go b/pkg/vcs/fuchsia.go
index 2ad0e1878..704c0a9e6 100644
--- a/pkg/vcs/fuchsia.go
+++ b/pkg/vcs/fuchsia.go
@@ -107,3 +107,7 @@ func (ctx *fuchsia) MergeBases(firstCommit, secondCommit string) ([]*Commit, err
func (ctx *fuchsia) CommitExists(string) (bool, error) {
return false, fmt.Errorf("not implemented for fuchsia")
}
+
+func (ctx *fuchsia) PushCommit(repo, commit string) error {
+ return ctx.repo.PushCommit(repo, commit)
+}
diff --git a/pkg/vcs/git.go b/pkg/vcs/git.go
index d1a91404c..f8362dfb2 100644
--- a/pkg/vcs/git.go
+++ b/pkg/vcs/git.go
@@ -635,3 +635,12 @@ func (git *git) CommitExists(commit string) (bool, error) {
}
return true, nil
}
+
+func (git *git) PushCommit(repo, commit string) error {
+ tagName := "tag-" + commit // assign tag to guarantee remote persistence
+ git.git("tag", tagName) // ignore errors on re-tagging
+ if _, err := git.git("push", repo, "tag", tagName); err != nil {
+ return fmt.Errorf("git push %s tag %s: %w", repo, tagName, err)
+ }
+ return nil
+}
diff --git a/pkg/vcs/vcs.go b/pkg/vcs/vcs.go
index 0730ba721..23a302cbd 100644
--- a/pkg/vcs/vcs.go
+++ b/pkg/vcs/vcs.go
@@ -72,6 +72,9 @@ type Repo interface {
// CommitExists check for the commit presence in local checkout.
CommitExists(commit string) (bool, error)
+
+ // PushCommit is used to store commit in remote repo.
+ PushCommit(repo, commit string) error
}
// Bisecter may be optionally implemented by Repo.