]> source.dussan.org Git - gitea.git/commit
Support repo license (#24872)
authoryp05327 <576951401@qq.com>
Tue, 1 Oct 2024 19:25:08 +0000 (04:25 +0900)
committerGitHub <noreply@github.com>
Tue, 1 Oct 2024 19:25:08 +0000 (15:25 -0400)
commit70b7df0e5e5cce5a3561fa5a6a8abd4ebc902e68
tree6532a12e349fe59e4c9eb66161246360aa6350d2
parentf4b8f6fc40ce2869135372a5c6ec6418d27ebfba
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>
47 files changed:
assets/go-licenses.json
build/generate-licenses.go
build/license/aliasgenerator.go [new file with mode: 0644]
build/license/aliasgenerator_test.go [new file with mode: 0644]
go.mod
go.sum
models/fixtures/repo_license.yml [new file with mode: 0644]
models/fixtures/repository.yml
models/migrations/migrations.go
models/migrations/v1_23/v305.go [new file with mode: 0644]
models/repo/license.go [new file with mode: 0644]
modules/repository/license.go
modules/structs/repo.go
options/license/etc/license-aliases.json [new file with mode: 0644]
options/locale/locale_en-US.ini
routers/api/v1/api.go
routers/api/v1/repo/license.go [new file with mode: 0644]
routers/api/v1/repo/repo.go
routers/api/v1/swagger/repo.go
routers/init.go
routers/private/default_branch.go
routers/private/hook_post_receive.go
routers/web/repo/branch.go
routers/web/repo/commit.go
routers/web/repo/release.go
routers/web/repo/view.go
services/context/repo.go
services/convert/repository.go
services/cron/tasks_basic.go
services/migrations/gitea_uploader_test.go
services/mirror/mirror_pull.go
services/repository/branch.go
services/repository/create.go
services/repository/delete.go
services/repository/fork.go
services/repository/license.go [new file with mode: 0644]
services/repository/license_test.go [new file with mode: 0644]
services/repository/migrate.go
services/repository/repository.go
templates/repo/sub_menu.tmpl
templates/swagger/v1_json.tmpl
tests/gitea-repositories-meta/user2/repo1.git/objects/08/51b61d9f8ca0e9e63617e11907988ee88b1ca6 [new file with mode: 0644]
tests/gitea-repositories-meta/user2/repo1.git/objects/12/8105ae73669ac2a4cb42751538f0c65c54e28a [new file with mode: 0644]
tests/gitea-repositories-meta/user2/repo1.git/objects/90/c1019714259b24fb81711d4416ac0f18667dfa [new file with mode: 0644]
tests/gitea-repositories-meta/user2/repo1.git/refs/heads/DefaultBranch
tests/integration/api_admin_test.go
tests/integration/api_repo_license_test.go [new file with mode: 0644]