diff options
author | zeripath <art27@cantab.net> | 2021-11-22 22:32:16 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-22 22:32:16 +0000 |
commit | 1dbc58f742febbe58df59d4ce4148d2dbec1a20f (patch) | |
tree | 4b73978cdcbdff2e88752d8bbfa21478856d4305 /models/repo.go | |
parent | baed01f24753afb600a2984dcb9bcda0bb8502b6 (diff) | |
download | gitea-1dbc58f742febbe58df59d4ce4148d2dbec1a20f.tar.gz gitea-1dbc58f742febbe58df59d4ce4148d2dbec1a20f.zip |
More pleasantly handle broken or missing git repositories (#17747)
* More pleasantly handle broken or missing git repositories
In #17742 it was noted that there a completely invalid git repository underlying a
repo on gitea.com. This happened due to a problem during a migration however, it
is not beyond the realms of possibility that a corruption could occur to another
user.
This PR adds a check to RepoAssignment that will detect if a repository loading has
failed due to an absent git repository. It will then show a page suggesting the user
contacts the administrator or deletes the repository.
Fix #17742
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Update options/locale/locale_en-US.ini
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/models/repo.go b/models/repo.go index 7944149a76..860c5c4813 100644 --- a/models/repo.go +++ b/models/repo.go @@ -146,6 +146,7 @@ const ( RepositoryReady RepositoryStatus = iota // a normal repository RepositoryBeingMigrated // repository is migrating RepositoryPendingTransfer // repository pending in ownership transfer state + RepositoryBroken // repository is in a permanently broken state ) // TrustModelType defines the types of trust model for this repository @@ -289,6 +290,11 @@ func (repo *Repository) IsBeingCreated() bool { return repo.IsBeingMigrated() } +// IsBroken indicates that repository is broken +func (repo *Repository) IsBroken() bool { + return repo.Status == RepositoryBroken +} + // AfterLoad is invoked from XORM after setting the values of all fields of this object. func (repo *Repository) AfterLoad() { // FIXME: use models migration to solve all at once. |