diff options
author | Viktor Yakovchuk <viktor@yakovchuk.net> | 2021-06-24 00:08:26 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-23 17:08:26 -0400 |
commit | 08f4b3f31288bc4e12e94f00c7d88583ab04dd2e (patch) | |
tree | 79a9157a6a105493744491d2764739dccbba19a9 /modules/git | |
parent | f2babf334676f9c16a540153432bc6e4ebf62423 (diff) | |
download | gitea-08f4b3f31288bc4e12e94f00c7d88583ab04dd2e.tar.gz gitea-08f4b3f31288bc4e12e94f00c7d88583ab04dd2e.zip |
Fix 500 Error with branch and tag sharing the same name #15592 (#16040)
* Fix 500 Error with branch and tag sharing the same name #15592
Fixed 500 error while create Pull request when there are more
than one sources (branch, tag) with the same name
Fix #15592
Signed-off-by: Viktor Yakovchuk <viktor@yakovchuk.net>
* fix logging
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'modules/git')
-rw-r--r-- | modules/git/error.go | 17 | ||||
-rw-r--r-- | modules/git/repo.go | 7 |
2 files changed, 24 insertions, 0 deletions
diff --git a/modules/git/error.go b/modules/git/error.go index 85a938a7da..387dd724e5 100644 --- a/modules/git/error.go +++ b/modules/git/error.go @@ -159,3 +159,20 @@ func (err *ErrPushRejected) GenerateMessage() { } err.Message = strings.TrimSpace(messageBuilder.String()) } + +// ErrMoreThanOne represents an error if pull request fails when there are more than one sources (branch, tag) with the same name +type ErrMoreThanOne struct { + StdOut string + StdErr string + Err error +} + +// IsErrMoreThanOne checks if an error is a ErrMoreThanOne +func IsErrMoreThanOne(err error) bool { + _, ok := err.(*ErrMoreThanOne) + return ok +} + +func (err *ErrMoreThanOne) Error() string { + return fmt.Sprintf("ErrMoreThanOne Error: %v: %s\n%s", err.Err, err.StdErr, err.StdOut) +} diff --git a/modules/git/repo.go b/modules/git/repo.go index e06cd43935..43f329f448 100644 --- a/modules/git/repo.go +++ b/modules/git/repo.go @@ -225,6 +225,13 @@ func Push(repoPath string, opts PushOptions) error { } err.GenerateMessage() return err + } else if strings.Contains(errbuf.String(), "matches more than one") { + err := &ErrMoreThanOne{ + StdOut: outbuf.String(), + StdErr: errbuf.String(), + Err: err, + } + return err } } |