You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gitea/models/repo
yp05327 70b7df0e5e
Support repo license (#24872)
Close #278
Close #24076

## Solutions:
- Use
[google/licenseclassifier](https://github.com/google/licenseclassifier/)
Test result between
[google/licensecheck](https://github.com/google/licensecheck) and
[go-license-detector](https://github.com/go-enry/go-license-detector):
https://github.com/go-gitea/gitea/pull/24872#issuecomment-1560361167
Test result between
[google/licensecheck](https://github.com/google/licensecheck) and
[google/licenseclassifier](https://github.com/google/licenseclassifier/):
https://github.com/go-gitea/gitea/pull/24872#issuecomment-1576092178
- Generate License Convert Name List to avoid import license templates
with same contents
Gitea automatically get latest license data from[
spdx/license-list-data](https://github.com/spdx/license-list-data).
But unfortunately, some license templates have same contents. #20915
[click here to see the
list](https://github.com/go-gitea/gitea/pull/24872#issuecomment-1584141684)
So we will generate a list of these license templates with same contents
and create a new file to save the result when using `make
generate-license`. (Need to decide the save path)
- Save License info into a new table `repo_license`
Can easily support searching repo by license in the future.

## Screen shot
Single License:

![image](https://github.com/go-gitea/gitea/assets/18380374/41260bd7-0b4c-4038-8592-508706cffa9f)

Multiple Licenses:

![image](https://github.com/go-gitea/gitea/assets/18380374/34ce2f73-7e18-446b-9b96-ecc4fb61bd70)

Triggers:
- [x] Push commit to default branch
- [x] Create repo
- [x] Mirror repo
- [x] When Default Branch is changed, licenses should be updated

Todo:
- [x] Save Licenses info in to DB when there's a change to license file
in the commit
- [x] DB Migration
- [x] A nominal test?
- [x] Select which library to
use(https://github.com/go-gitea/gitea/pull/24872#issuecomment-1560361167)
- [x] API Support
- [x] Add repo license table
- ~Select license in settings if there are several licenses(Not
recommended)~
- License board(later, not in this PR)

![image](https://github.com/go-gitea/gitea/assets/18380374/2c3c3bf8-bcc2-4c6d-8ce0-81d1a9733878)

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Denys Konovalov <kontakt@denyskon.de>
Co-authored-by: delvh <dev.lh@web.de>
Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: 6543 <m.huber@kithara.com>
Co-authored-by: a1012112796 <1012112796@qq.com>
Co-authored-by: techknowlogick <techknowlogick@gitea.com>
6 months ago
..
archiver.go Add support for sha256 repositories (#23894) 1 year ago
attachment.go Azure blob storage support (#30995) 10 months ago
attachment_test.go More refactoring of `db.DefaultContext` (#27083) 2 years ago
avatar.go Return an empty string when a repo has no avatar in the repo API (#31187) 10 months ago
avatar_test.go Fix duplicate sub-path for avatars (#31365) 10 months ago
collaboration.go Add user blocking (#29028) 1 year ago
collaboration_test.go Add user blocking (#29028) 1 year ago
fork.go Move more functions to db.Find (#28419) 1 year ago
fork_test.go refactor some functions to support ctx as first parameter (#21878) 2 years ago
git.go Add merge style `fast-forward-only` (#28954) 1 year ago
issue.go Clean up log messages (#30313) 12 months ago
language_stats.go Penultimate round of `db.DefaultContext` refactor (#27414) 1 year ago
license.go Support repo license (#24872) 6 months ago
main_test.go make writing main test easier (#27270) 2 years ago
mirror.go More `db.DefaultContext` refactor (#27265) 2 years ago
pushmirror.go Don't run push mirrors for archived repos (#27140) 1 year ago
pushmirror_test.go Refactor deletion (#28610) 1 year ago
redirect.go Final round of `db.DefaultContext` refactor (#27587) 1 year ago
redirect_test.go Final round of `db.DefaultContext` refactor (#27587) 1 year ago
release.go Included tag search capabilities (#32045) 6 months ago
release_test.go Add tag name in the commits list (#31082) 7 months ago
repo.go Make GetRepositoryByName more safer (#31712) 8 months ago
repo_indexer.go Add support for sha256 repositories (#23894) 1 year ago
repo_list.go bump to go 1.23 (#31855) 7 months ago
repo_list_test.go migrate some more "OptionalBool" to "Option[bool]" (#29479) 1 year ago
repo_test.go Add user blocking (#29028) 1 year ago
repo_unit.go Refactor repo unit "disabled" check (#31389) 9 months ago
repo_unit_test.go add disable workflow feature (#26413) 2 years ago
search.go Rename repo_model.SearchOrderByMap to repo_model.OrderByMap (#31359) 10 months ago
star.go Add user blocking (#29028) 1 year ago
star_test.go Add user blocking (#29028) 1 year ago
topic.go Refactor topic Find functions and add more tests for pagination (#30127) 1 year ago
topic_test.go Refactor topic Find functions and add more tests for pagination (#30127) 1 year ago
update.go Move some repository transfer functions to service layer (#28855) 1 year ago
upload.go Refactor deletion (#28610) 1 year ago
user_repo.go Get repo assignees and reviewers should ignore deactivated users (#30770) 11 months ago
user_repo_test.go Get repo assignees and reviewers should ignore deactivated users (#30770) 11 months ago
watch.go Add user blocking (#29028) 1 year ago
watch_test.go Add user blocking (#29028) 1 year ago
wiki.go Implement FSFE REUSE for golang files (#21840) 2 years ago
wiki_test.go Implement FSFE REUSE for golang files (#21840) 2 years ago