mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-30 23:53:52 +03:00
4eb2a29910
The 4 functions are duplicated, especially as interface methods. I think we just need to keep `MustID` the only one and remove other 3. ``` MustID(b []byte) ObjectID MustIDFromString(s string) ObjectID NewID(b []byte) (ObjectID, error) NewIDFromString(s string) (ObjectID, error) ``` Introduced the new interfrace method `ComputeHash` which will replace the interface `HasherInterface`. Now we don't need to keep two interfaces. Reintroduced `git.NewIDFromString` and `git.MustIDFromString`. The new function will detect the hash length to decide which objectformat of it. If it's 40, then it's SHA1. If it's 64, then it's SHA256. This will be right if the commitID is a full one. So the parameter should be always a full commit id. @AdamMajer Please review.
71 lines
2.1 KiB
Go
71 lines
2.1 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package repository
|
|
|
|
import (
|
|
"code.gitea.io/gitea/modules/git"
|
|
)
|
|
|
|
// PushUpdateOptions defines the push update options
|
|
type PushUpdateOptions struct {
|
|
PusherID int64
|
|
PusherName string
|
|
RepoUserName string
|
|
RepoName string
|
|
RefFullName git.RefName // branch, tag or other name to push
|
|
OldCommitID string
|
|
NewCommitID string
|
|
}
|
|
|
|
// IsNewRef return true if it's a first-time push to a branch, tag or etc.
|
|
func (opts *PushUpdateOptions) IsNewRef() bool {
|
|
commitID, err := git.NewIDFromString(opts.OldCommitID)
|
|
return err == nil && commitID.IsZero()
|
|
}
|
|
|
|
// IsDelRef return true if it's a deletion to a branch or tag
|
|
func (opts *PushUpdateOptions) IsDelRef() bool {
|
|
commitID, err := git.NewIDFromString(opts.NewCommitID)
|
|
return err == nil && commitID.IsZero()
|
|
}
|
|
|
|
// IsUpdateRef return true if it's an update operation
|
|
func (opts *PushUpdateOptions) IsUpdateRef() bool {
|
|
return !opts.IsNewRef() && !opts.IsDelRef()
|
|
}
|
|
|
|
// IsNewTag return true if it's a creation to a tag
|
|
func (opts *PushUpdateOptions) IsNewTag() bool {
|
|
return opts.RefFullName.IsTag() && opts.IsNewRef()
|
|
}
|
|
|
|
// IsDelTag return true if it's a deletion to a tag
|
|
func (opts *PushUpdateOptions) IsDelTag() bool {
|
|
return opts.RefFullName.IsTag() && opts.IsDelRef()
|
|
}
|
|
|
|
// IsNewBranch return true if it's the first-time push to a branch
|
|
func (opts *PushUpdateOptions) IsNewBranch() bool {
|
|
return opts.RefFullName.IsBranch() && opts.IsNewRef()
|
|
}
|
|
|
|
// IsUpdateBranch return true if it's not the first push to a branch
|
|
func (opts *PushUpdateOptions) IsUpdateBranch() bool {
|
|
return opts.RefFullName.IsBranch() && opts.IsUpdateRef()
|
|
}
|
|
|
|
// IsDelBranch return true if it's a deletion to a branch
|
|
func (opts *PushUpdateOptions) IsDelBranch() bool {
|
|
return opts.RefFullName.IsBranch() && opts.IsDelRef()
|
|
}
|
|
|
|
// RefName returns simple name for ref
|
|
func (opts *PushUpdateOptions) RefName() string {
|
|
return opts.RefFullName.ShortName()
|
|
}
|
|
|
|
// RepoFullName returns repo full name
|
|
func (opts *PushUpdateOptions) RepoFullName() string {
|
|
return opts.RepoUserName + "/" + opts.RepoName
|
|
}
|