diff --git a/.air.toml b/.air.toml index 8854041a25..d13f8c4f99 100644 --- a/.air.toml +++ b/.air.toml @@ -2,25 +2,12 @@ root = "." tmp_dir = ".air" [build] -pre_cmd = ["killall -9 gitea 2>/dev/null || true"] # kill off potential zombie processes from previous runs cmd = "make --no-print-directory backend" bin = "gitea" -delay = 2000 +delay = 1000 include_ext = ["go", "tmpl"] include_file = ["main.go"] include_dir = ["cmd", "models", "modules", "options", "routers", "services"] -exclude_dir = [ - "models/fixtures", - "models/migrations/fixtures", - "modules/avatar/identicon/testdata", - "modules/avatar/testdata", - "modules/git/tests", - "modules/migration/file_format_testdata", - "routers/private/tests", - "services/gitdiff/testdata", -] +exclude_dir = ["modules/git/tests", "services/gitdiff/testdata", "modules/avatar/testdata", "models/fixtures", "models/migrations/fixtures", "modules/migration/file_format_testdata", "modules/avatar/identicon/testdata"] exclude_regex = ["_test.go$", "_gen.go$"] stop_on_error = true - -[log] -main_only = true diff --git a/.changelog.yml b/.changelog.yml index a7df8779de..bfdee0c0ca 100644 --- a/.changelog.yml +++ b/.changelog.yml @@ -22,25 +22,20 @@ groups: name: FEATURES labels: - type/feature + - + name: API + labels: + - modifies/api - name: ENHANCEMENTS labels: - type/enhancement - - - name: PERFORMANCE - labels: - - performance/memory - - performance/speed - - performance/bigrepo - - performance/cpu + - type/refactoring + - topic/ui - name: BUGFIXES labels: - type/bug - - - name: API - labels: - - modifies/api - name: TESTING labels: diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 104f1cfeed..9e290fb6a5 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,17 +1,14 @@ { "name": "Gitea DevContainer", - "image": "mcr.microsoft.com/devcontainers/go:1.24-bookworm", + "image": "mcr.microsoft.com/devcontainers/go:1.21-bullseye", "features": { // installs nodejs into container "ghcr.io/devcontainers/features/node:1": { - "version": "lts" + "version":"20" }, - "ghcr.io/devcontainers/features/git-lfs:1.2.2": {}, - "ghcr.io/devcontainers-extra/features/poetry:2": {}, - "ghcr.io/devcontainers/features/python:1": { - "version": "3.12" - }, - "ghcr.io/warrenbuckley/codespace-features/sqlite:1": {} + "ghcr.io/devcontainers/features/git-lfs:1.1.0": {}, + "ghcr.io/devcontainers-contrib/features/poetry:2": {}, + "ghcr.io/devcontainers/features/python:1": {} }, "customizations": { "vscode": { @@ -25,10 +22,9 @@ "DavidAnson.vscode-markdownlint", "Vue.volar", "ms-azuretools.vscode-docker", - "vitest.explorer", - "cweijan.vscode-database-client2", - "GitHub.vscode-pull-request-github", - "Azurite.azurite" + "zixuanchen.vitest-explorer", + "qwtel.sqlite-viewer", + "GitHub.vscode-pull-request-github" ] } }, diff --git a/.dockerignore b/.dockerignore index 843f12a7be..80cbeb040c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -14,7 +14,7 @@ _test # MS VSCode .vscode -__debug_bin* +__debug_bin # Architecture specific extensions/prefixes *.[568vq] @@ -36,6 +36,15 @@ _testmain.go coverage.all cpu.out +/modules/migration/bindata.go +/modules/migration/bindata.go.hash +/modules/options/bindata.go +/modules/options/bindata.go.hash +/modules/public/bindata.go +/modules/public/bindata.go.hash +/modules/templates/bindata.go +/modules/templates/bindata.go.hash + *.db *.log @@ -53,6 +62,7 @@ cpu.out /data /indexers /log +/public/img/avatar /tests/integration/gitea-integration-* /tests/integration/indexers-* /tests/e2e/gitea-e2e-* @@ -68,15 +78,24 @@ cpu.out /public/assets/js /public/assets/css /public/assets/fonts -/public/assets/img/avatar +/public/assets/img/webpack /vendor +/web_src/fomantic/node_modules +/web_src/fomantic/build/* +!/web_src/fomantic/build/semantic.js +!/web_src/fomantic/build/semantic.css +!/web_src/fomantic/build/themes +/web_src/fomantic/build/themes/* +!/web_src/fomantic/build/themes/default +/web_src/fomantic/build/themes/default/assets/* +!/web_src/fomantic/build/themes/default/assets/fonts +/web_src/fomantic/build/themes/default/assets/fonts/* +!/web_src/fomantic/build/themes/default/assets/fonts/icons.woff2 +!/web_src/fomantic/build/themes/default/assets/fonts/outline-icons.woff2 /VERSION /.air /.go-licenses -# Files and folders that were previously generated -/public/assets/img/webpack - # Snapcraft snap/.snapcraft/ parts/ diff --git a/.editorconfig b/.editorconfig index 13aa8d50f0..c0946ac997 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,15 +12,11 @@ insert_final_newline = true [*.{go,tmpl,html}] indent_style = tab -[go.*] -indent_style = tab - [templates/custom/*.tmpl] insert_final_newline = false [templates/swagger/v1_json.tmpl] indent_style = space -insert_final_newline = false [templates/user/auth/oidc_wellknown.tmpl] indent_style = space diff --git a/.envrc b/.envrc deleted file mode 100644 index 3550a30f2d..0000000000 --- a/.envrc +++ /dev/null @@ -1 +0,0 @@ -use flake diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 57c6b19600..0000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,1005 +0,0 @@ -const vitestPlugin = require('@vitest/eslint-plugin'); -const restrictedSyntax = ['WithStatement', 'ForInStatement', 'LabeledStatement', 'SequenceExpression']; - -module.exports = { - root: true, - reportUnusedDisableDirectives: true, - ignorePatterns: [ - '/web_src/js/vendor', - '/web_src/fomantic', - '/public/assets/js', - ], - parser: '@typescript-eslint/parser', - parserOptions: { - sourceType: 'module', - ecmaVersion: 'latest', - project: true, - extraFileExtensions: ['.vue'], - parser: '@typescript-eslint/parser', // for vue plugin - https://eslint.vuejs.org/user-guide/#how-to-use-a-custom-parser - }, - settings: { - 'import-x/extensions': ['.js', '.ts'], - 'import-x/parsers': { - '@typescript-eslint/parser': ['.js', '.ts'], - }, - 'import-x/resolver': { - typescript: true, - }, - }, - plugins: [ - '@eslint-community/eslint-plugin-eslint-comments', - '@stylistic/eslint-plugin-js', - '@typescript-eslint/eslint-plugin', - 'eslint-plugin-array-func', - 'eslint-plugin-github', - 'eslint-plugin-import-x', - 'eslint-plugin-no-jquery', - 'eslint-plugin-no-use-extend-native', - 'eslint-plugin-regexp', - 'eslint-plugin-sonarjs', - 'eslint-plugin-unicorn', - 'eslint-plugin-wc', - ], - env: { - es2024: true, - node: true, - }, - overrides: [ - { - files: ['**/*.cjs'], - rules: { - 'import-x/no-commonjs': [0], - '@typescript-eslint/no-require-imports': [0], - }, - }, - { - files: ['web_src/**/*'], - globals: { - __webpack_public_path__: true, - process: false, // https://github.com/webpack/webpack/issues/15833 - }, - }, - { - files: ['web_src/**/*', 'docs/**/*'], - env: { - browser: true, - node: false, - }, - }, - { - files: ['*.config.*'], - rules: { - 'import-x/no-unused-modules': [0], - }, - }, - { - files: ['**/*.d.ts'], - rules: { - 'import-x/no-unused-modules': [0], - '@typescript-eslint/consistent-type-definitions': [0], - '@typescript-eslint/consistent-type-imports': [0], - }, - }, - { - files: ['web_src/js/types.ts'], - rules: { - 'import-x/no-unused-modules': [0], - }, - }, - { - files: ['**/*.test.*', 'web_src/js/test/setup.ts'], - plugins: ['@vitest/eslint-plugin'], - globals: vitestPlugin.environments.env.globals, - rules: { - 'github/unescaped-html-literal': [0], - '@vitest/consistent-test-filename': [0], - '@vitest/consistent-test-it': [0], - '@vitest/expect-expect': [0], - '@vitest/max-expects': [0], - '@vitest/max-nested-describe': [0], - '@vitest/no-alias-methods': [0], - '@vitest/no-commented-out-tests': [0], - '@vitest/no-conditional-expect': [0], - '@vitest/no-conditional-in-test': [0], - '@vitest/no-conditional-tests': [0], - '@vitest/no-disabled-tests': [0], - '@vitest/no-done-callback': [0], - '@vitest/no-duplicate-hooks': [0], - '@vitest/no-focused-tests': [2], - '@vitest/no-hooks': [0], - '@vitest/no-identical-title': [2], - '@vitest/no-interpolation-in-snapshots': [0], - '@vitest/no-large-snapshots': [0], - '@vitest/no-mocks-import': [0], - '@vitest/no-restricted-matchers': [0], - '@vitest/no-restricted-vi-methods': [0], - '@vitest/no-standalone-expect': [0], - '@vitest/no-test-prefixes': [0], - '@vitest/no-test-return-statement': [0], - '@vitest/prefer-called-with': [0], - '@vitest/prefer-comparison-matcher': [0], - '@vitest/prefer-each': [0], - '@vitest/prefer-equality-matcher': [0], - '@vitest/prefer-expect-resolves': [0], - '@vitest/prefer-hooks-in-order': [0], - '@vitest/prefer-hooks-on-top': [2], - '@vitest/prefer-lowercase-title': [0], - '@vitest/prefer-mock-promise-shorthand': [0], - '@vitest/prefer-snapshot-hint': [0], - '@vitest/prefer-spy-on': [0], - '@vitest/prefer-strict-equal': [0], - '@vitest/prefer-to-be': [0], - '@vitest/prefer-to-be-falsy': [0], - '@vitest/prefer-to-be-object': [0], - '@vitest/prefer-to-be-truthy': [0], - '@vitest/prefer-to-contain': [0], - '@vitest/prefer-to-have-length': [0], - '@vitest/prefer-todo': [0], - '@vitest/require-hook': [0], - '@vitest/require-to-throw-message': [0], - '@vitest/require-top-level-describe': [0], - '@vitest/valid-describe-callback': [2], - '@vitest/valid-expect': [2], - '@vitest/valid-title': [2], - }, - }, - { - files: ['web_src/js/modules/fetch.ts', 'web_src/js/standalone/**/*'], - rules: { - 'no-restricted-syntax': [2, ...restrictedSyntax], - }, - }, - { - files: ['**/*.vue'], - plugins: [ - 'eslint-plugin-vue', - 'eslint-plugin-vue-scoped-css', - ], - extends: [ - 'plugin:vue/recommended', - 'plugin:vue-scoped-css/vue3-recommended', - ], - rules: { - 'vue/attributes-order': [0], - 'vue/html-closing-bracket-spacing': [2, {startTag: 'never', endTag: 'never', selfClosingTag: 'never'}], - 'vue/max-attributes-per-line': [0], - 'vue/singleline-html-element-content-newline': [0], - }, - }, - { - files: ['tests/e2e/**'], - plugins: [ - 'eslint-plugin-playwright', - ], - extends: [ - 'plugin:playwright/recommended', - ], - }, - ], - rules: { - '@eslint-community/eslint-comments/disable-enable-pair': [2], - '@eslint-community/eslint-comments/no-aggregating-enable': [2], - '@eslint-community/eslint-comments/no-duplicate-disable': [2], - '@eslint-community/eslint-comments/no-restricted-disable': [0], - '@eslint-community/eslint-comments/no-unlimited-disable': [2], - '@eslint-community/eslint-comments/no-unused-disable': [2], - '@eslint-community/eslint-comments/no-unused-enable': [2], - '@eslint-community/eslint-comments/no-use': [0], - '@eslint-community/eslint-comments/require-description': [0], - '@stylistic/js/array-bracket-newline': [0], - '@stylistic/js/array-bracket-spacing': [2, 'never'], - '@stylistic/js/array-element-newline': [0], - '@stylistic/js/arrow-parens': [2, 'always'], - '@stylistic/js/arrow-spacing': [2, {before: true, after: true}], - '@stylistic/js/block-spacing': [0], - '@stylistic/js/brace-style': [2, '1tbs', {allowSingleLine: true}], - '@stylistic/js/comma-dangle': [2, 'always-multiline'], - '@stylistic/js/comma-spacing': [2, {before: false, after: true}], - '@stylistic/js/comma-style': [2, 'last'], - '@stylistic/js/computed-property-spacing': [2, 'never'], - '@stylistic/js/dot-location': [2, 'property'], - '@stylistic/js/eol-last': [2], - '@stylistic/js/function-call-argument-newline': [0], - '@stylistic/js/function-call-spacing': [2, 'never'], - '@stylistic/js/function-paren-newline': [0], - '@stylistic/js/generator-star-spacing': [0], - '@stylistic/js/implicit-arrow-linebreak': [0], - '@stylistic/js/indent': [2, 2, {ignoreComments: true, SwitchCase: 1}], - '@stylistic/js/key-spacing': [2], - '@stylistic/js/keyword-spacing': [2], - '@stylistic/js/line-comment-position': [0], - '@stylistic/js/linebreak-style': [2, 'unix'], - '@stylistic/js/lines-around-comment': [0], - '@stylistic/js/lines-between-class-members': [0], - '@stylistic/js/max-len': [0], - '@stylistic/js/max-statements-per-line': [0], - '@stylistic/js/multiline-comment-style': [0], - '@stylistic/js/multiline-ternary': [0], - '@stylistic/js/new-parens': [2], - '@stylistic/js/newline-per-chained-call': [0], - '@stylistic/js/no-confusing-arrow': [0], - '@stylistic/js/no-extra-parens': [0], - '@stylistic/js/no-extra-semi': [2], - '@stylistic/js/no-floating-decimal': [0], - '@stylistic/js/no-mixed-operators': [0], - '@stylistic/js/no-mixed-spaces-and-tabs': [2], - '@stylistic/js/no-multi-spaces': [2, {ignoreEOLComments: true, exceptions: {Property: true}}], - '@stylistic/js/no-multiple-empty-lines': [2, {max: 1, maxEOF: 0, maxBOF: 0}], - '@stylistic/js/no-tabs': [2], - '@stylistic/js/no-trailing-spaces': [2], - '@stylistic/js/no-whitespace-before-property': [2], - '@stylistic/js/nonblock-statement-body-position': [2], - '@stylistic/js/object-curly-newline': [0], - '@stylistic/js/object-curly-spacing': [2, 'never'], - '@stylistic/js/object-property-newline': [0], - '@stylistic/js/one-var-declaration-per-line': [0], - '@stylistic/js/operator-linebreak': [2, 'after'], - '@stylistic/js/padded-blocks': [2, 'never'], - '@stylistic/js/padding-line-between-statements': [0], - '@stylistic/js/quote-props': [0], - '@stylistic/js/quotes': [2, 'single', {avoidEscape: true, allowTemplateLiterals: true}], - '@stylistic/js/rest-spread-spacing': [2, 'never'], - '@stylistic/js/semi': [2, 'always', {omitLastInOneLineBlock: true}], - '@stylistic/js/semi-spacing': [2, {before: false, after: true}], - '@stylistic/js/semi-style': [2, 'last'], - '@stylistic/js/space-before-blocks': [2, 'always'], - '@stylistic/js/space-before-function-paren': [2, {anonymous: 'ignore', named: 'never', asyncArrow: 'always'}], - '@stylistic/js/space-in-parens': [2, 'never'], - '@stylistic/js/space-infix-ops': [2], - '@stylistic/js/space-unary-ops': [2], - '@stylistic/js/spaced-comment': [2, 'always'], - '@stylistic/js/switch-colon-spacing': [2], - '@stylistic/js/template-curly-spacing': [2, 'never'], - '@stylistic/js/template-tag-spacing': [2, 'never'], - '@stylistic/js/wrap-iife': [2, 'inside'], - '@stylistic/js/wrap-regex': [0], - '@stylistic/js/yield-star-spacing': [2, 'after'], - '@typescript-eslint/adjacent-overload-signatures': [0], - '@typescript-eslint/array-type': [0], - '@typescript-eslint/await-thenable': [2], - '@typescript-eslint/ban-ts-comment': [2, {'ts-expect-error': false, 'ts-ignore': true, 'ts-nocheck': false, 'ts-check': false}], - '@typescript-eslint/ban-tslint-comment': [0], - '@typescript-eslint/class-literal-property-style': [0], - '@typescript-eslint/class-methods-use-this': [0], - '@typescript-eslint/consistent-generic-constructors': [0], - '@typescript-eslint/consistent-indexed-object-style': [0], - '@typescript-eslint/consistent-return': [0], - '@typescript-eslint/consistent-type-assertions': [2, {assertionStyle: 'as', objectLiteralTypeAssertions: 'allow'}], - '@typescript-eslint/consistent-type-definitions': [2, 'type'], - '@typescript-eslint/consistent-type-exports': [2, {fixMixedExportsWithInlineTypeSpecifier: false}], - '@typescript-eslint/consistent-type-imports': [2, {prefer: 'type-imports', fixStyle: 'separate-type-imports', disallowTypeAnnotations: true}], - '@typescript-eslint/default-param-last': [0], - '@typescript-eslint/dot-notation': [0], - '@typescript-eslint/explicit-function-return-type': [0], - '@typescript-eslint/explicit-member-accessibility': [0], - '@typescript-eslint/explicit-module-boundary-types': [0], - '@typescript-eslint/init-declarations': [0], - '@typescript-eslint/max-params': [0], - '@typescript-eslint/member-ordering': [0], - '@typescript-eslint/method-signature-style': [0], - '@typescript-eslint/naming-convention': [0], - '@typescript-eslint/no-array-constructor': [2], - '@typescript-eslint/no-array-delete': [2], - '@typescript-eslint/no-base-to-string': [0], - '@typescript-eslint/no-confusing-non-null-assertion': [2], - '@typescript-eslint/no-confusing-void-expression': [0], - '@typescript-eslint/no-deprecated': [2], - '@typescript-eslint/no-dupe-class-members': [0], - '@typescript-eslint/no-duplicate-enum-values': [2], - '@typescript-eslint/no-duplicate-type-constituents': [2, {ignoreUnions: true}], - '@typescript-eslint/no-dynamic-delete': [0], - '@typescript-eslint/no-empty-function': [0], - '@typescript-eslint/no-empty-interface': [0], - '@typescript-eslint/no-empty-object-type': [2], - '@typescript-eslint/no-explicit-any': [0], - '@typescript-eslint/no-extra-non-null-assertion': [2], - '@typescript-eslint/no-extraneous-class': [0], - '@typescript-eslint/no-floating-promises': [0], - '@typescript-eslint/no-for-in-array': [2], - '@typescript-eslint/no-implied-eval': [2], - '@typescript-eslint/no-import-type-side-effects': [0], // dupe with consistent-type-imports - '@typescript-eslint/no-inferrable-types': [0], - '@typescript-eslint/no-invalid-this': [0], - '@typescript-eslint/no-invalid-void-type': [0], - '@typescript-eslint/no-loop-func': [0], - '@typescript-eslint/no-loss-of-precision': [0], - '@typescript-eslint/no-magic-numbers': [0], - '@typescript-eslint/no-meaningless-void-operator': [0], - '@typescript-eslint/no-misused-new': [2], - '@typescript-eslint/no-misused-promises': [2, {checksVoidReturn: {attributes: false, arguments: false}}], - '@typescript-eslint/no-mixed-enums': [0], - '@typescript-eslint/no-namespace': [2], - '@typescript-eslint/no-non-null-asserted-nullish-coalescing': [0], - '@typescript-eslint/no-non-null-asserted-optional-chain': [2], - '@typescript-eslint/no-non-null-assertion': [0], - '@typescript-eslint/no-redeclare': [0], - '@typescript-eslint/no-redundant-type-constituents': [2], - '@typescript-eslint/no-require-imports': [2], - '@typescript-eslint/no-restricted-imports': [0], - '@typescript-eslint/no-restricted-types': [0], - '@typescript-eslint/no-shadow': [0], - '@typescript-eslint/no-this-alias': [0], // handled by unicorn/no-this-assignment - '@typescript-eslint/no-unnecessary-boolean-literal-compare': [0], - '@typescript-eslint/no-unnecessary-condition': [0], - '@typescript-eslint/no-unnecessary-qualifier': [0], - '@typescript-eslint/no-unnecessary-template-expression': [0], - '@typescript-eslint/no-unnecessary-type-arguments': [0], - '@typescript-eslint/no-unnecessary-type-assertion': [2], - '@typescript-eslint/no-unnecessary-type-constraint': [2], - '@typescript-eslint/no-unsafe-argument': [0], - '@typescript-eslint/no-unsafe-assignment': [0], - '@typescript-eslint/no-unsafe-call': [0], - '@typescript-eslint/no-unsafe-declaration-merging': [2], - '@typescript-eslint/no-unsafe-enum-comparison': [2], - '@typescript-eslint/no-unsafe-function-type': [2], - '@typescript-eslint/no-unsafe-member-access': [0], - '@typescript-eslint/no-unsafe-return': [0], - '@typescript-eslint/no-unsafe-unary-minus': [2], - '@typescript-eslint/no-unused-expressions': [0], - '@typescript-eslint/no-unused-vars': [2, {vars: 'all', args: 'all', caughtErrors: 'all', ignoreRestSiblings: false, argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_'}], - '@typescript-eslint/no-use-before-define': [2, {functions: false, classes: true, variables: true, allowNamedExports: true, typedefs: false, enums: false, ignoreTypeReferences: true}], - '@typescript-eslint/no-useless-constructor': [0], - '@typescript-eslint/no-useless-empty-export': [0], - '@typescript-eslint/no-wrapper-object-types': [2], - '@typescript-eslint/non-nullable-type-assertion-style': [0], - '@typescript-eslint/only-throw-error': [2], - '@typescript-eslint/parameter-properties': [0], - '@typescript-eslint/prefer-as-const': [2], - '@typescript-eslint/prefer-destructuring': [0], - '@typescript-eslint/prefer-enum-initializers': [0], - '@typescript-eslint/prefer-find': [2], - '@typescript-eslint/prefer-for-of': [2], - '@typescript-eslint/prefer-function-type': [2], - '@typescript-eslint/prefer-includes': [2], - '@typescript-eslint/prefer-literal-enum-member': [0], - '@typescript-eslint/prefer-namespace-keyword': [0], - '@typescript-eslint/prefer-nullish-coalescing': [0], - '@typescript-eslint/prefer-optional-chain': [2, {requireNullish: true}], - '@typescript-eslint/prefer-promise-reject-errors': [0], - '@typescript-eslint/prefer-readonly': [0], - '@typescript-eslint/prefer-readonly-parameter-types': [0], - '@typescript-eslint/prefer-reduce-type-parameter': [0], - '@typescript-eslint/prefer-regexp-exec': [0], - '@typescript-eslint/prefer-return-this-type': [0], - '@typescript-eslint/prefer-string-starts-ends-with': [2, {allowSingleElementEquality: 'always'}], - '@typescript-eslint/promise-function-async': [0], - '@typescript-eslint/require-array-sort-compare': [0], - '@typescript-eslint/require-await': [0], - '@typescript-eslint/restrict-plus-operands': [2], - '@typescript-eslint/restrict-template-expressions': [0], - '@typescript-eslint/return-await': [0], - '@typescript-eslint/strict-boolean-expressions': [0], - '@typescript-eslint/switch-exhaustiveness-check': [0], - '@typescript-eslint/triple-slash-reference': [2], - '@typescript-eslint/typedef': [0], - '@typescript-eslint/unbound-method': [0], // too many false-positives - '@typescript-eslint/unified-signatures': [2], - 'accessor-pairs': [2], - 'array-callback-return': [2, {checkForEach: true}], - 'array-func/avoid-reverse': [2], - 'array-func/from-map': [2], - 'array-func/no-unnecessary-this-arg': [2], - 'array-func/prefer-array-from': [2], - 'array-func/prefer-flat-map': [0], // handled by unicorn/prefer-array-flat-map - 'array-func/prefer-flat': [0], // handled by unicorn/prefer-array-flat - 'arrow-body-style': [0], - 'block-scoped-var': [2], - 'camelcase': [0], - 'capitalized-comments': [0], - 'class-methods-use-this': [0], - 'complexity': [0], - 'consistent-return': [0], - 'consistent-this': [0], - 'constructor-super': [2], - 'curly': [0], - 'default-case-last': [2], - 'default-case': [0], - 'default-param-last': [0], - 'dot-notation': [0], - 'eqeqeq': [2], - 'for-direction': [2], - 'func-name-matching': [2], - 'func-names': [0], - 'func-style': [0], - 'getter-return': [2], - 'github/a11y-aria-label-is-well-formatted': [0], - 'github/a11y-no-title-attribute': [0], - 'github/a11y-no-visually-hidden-interactive-element': [0], - 'github/a11y-role-supports-aria-props': [0], - 'github/a11y-svg-has-accessible-name': [0], - 'github/array-foreach': [0], - 'github/async-currenttarget': [2], - 'github/async-preventdefault': [0], // https://github.com/github/eslint-plugin-github/issues/599 - 'github/authenticity-token': [0], - 'github/get-attribute': [0], - 'github/js-class-name': [0], - 'github/no-blur': [0], - 'github/no-d-none': [0], - 'github/no-dataset': [2], - 'github/no-dynamic-script-tag': [2], - 'github/no-implicit-buggy-globals': [2], - 'github/no-inner-html': [0], - 'github/no-innerText': [2], - 'github/no-then': [2], - 'github/no-useless-passive': [2], - 'github/prefer-observers': [2], - 'github/require-passive-events': [2], - 'github/unescaped-html-literal': [2], - 'grouped-accessor-pairs': [2], - 'guard-for-in': [0], - 'id-blacklist': [0], - 'id-length': [0], - 'id-match': [0], - 'import-x/consistent-type-specifier-style': [0], - 'import-x/default': [0], - 'import-x/dynamic-import-chunkname': [0], - 'import-x/export': [2], - 'import-x/exports-last': [0], - 'import-x/extensions': [2, 'always', {ignorePackages: true}], - 'import-x/first': [2], - 'import-x/group-exports': [0], - 'import-x/max-dependencies': [0], - 'import-x/named': [2], - 'import-x/namespace': [0], - 'import-x/newline-after-import': [0], - 'import-x/no-absolute-path': [0], - 'import-x/no-amd': [2], - 'import-x/no-anonymous-default-export': [0], - 'import-x/no-commonjs': [2], - 'import-x/no-cycle': [2, {ignoreExternal: true, maxDepth: 1}], - 'import-x/no-default-export': [0], - 'import-x/no-deprecated': [0], - 'import-x/no-dynamic-require': [0], - 'import-x/no-empty-named-blocks': [2], - 'import-x/no-extraneous-dependencies': [2], - 'import-x/no-import-module-exports': [0], - 'import-x/no-internal-modules': [0], - 'import-x/no-mutable-exports': [0], - 'import-x/no-named-as-default-member': [0], - 'import-x/no-named-as-default': [0], - 'import-x/no-named-default': [0], - 'import-x/no-named-export': [0], - 'import-x/no-namespace': [0], - 'import-x/no-nodejs-modules': [0], - 'import-x/no-relative-packages': [0], - 'import-x/no-relative-parent-imports': [0], - 'import-x/no-restricted-paths': [0], - 'import-x/no-self-import': [2], - 'import-x/no-unassigned-import': [0], - 'import-x/no-unresolved': [2, {commonjs: true, ignore: ['\\?.+$']}], - 'import-x/no-unused-modules': [2, {unusedExports: true}], - 'import-x/no-useless-path-segments': [2, {commonjs: true}], - 'import-x/no-webpack-loader-syntax': [2], - 'import-x/order': [0], - 'import-x/prefer-default-export': [0], - 'import-x/unambiguous': [0], - 'init-declarations': [0], - 'line-comment-position': [0], - 'logical-assignment-operators': [0], - 'max-classes-per-file': [0], - 'max-depth': [0], - 'max-lines-per-function': [0], - 'max-lines': [0], - 'max-nested-callbacks': [0], - 'max-params': [0], - 'max-statements': [0], - 'multiline-comment-style': [2, 'separate-lines'], - 'new-cap': [0], - 'no-alert': [0], - 'no-array-constructor': [0], // handled by @typescript-eslint/no-array-constructor - 'no-async-promise-executor': [0], - 'no-await-in-loop': [0], - 'no-bitwise': [0], - 'no-buffer-constructor': [0], - 'no-caller': [2], - 'no-case-declarations': [2], - 'no-class-assign': [2], - 'no-compare-neg-zero': [2], - 'no-cond-assign': [2, 'except-parens'], - 'no-console': [1, {allow: ['debug', 'info', 'warn', 'error']}], - 'no-const-assign': [2], - 'no-constant-binary-expression': [2], - 'no-constant-condition': [0], - 'no-constructor-return': [2], - 'no-continue': [0], - 'no-control-regex': [0], - 'no-debugger': [1], - 'no-delete-var': [2], - 'no-div-regex': [0], - 'no-dupe-args': [2], - 'no-dupe-class-members': [2], - 'no-dupe-else-if': [2], - 'no-dupe-keys': [2], - 'no-duplicate-case': [2], - 'no-duplicate-imports': [0], - 'no-else-return': [2], - 'no-empty-character-class': [2], - 'no-empty-function': [0], - 'no-empty-pattern': [2], - 'no-empty-static-block': [2], - 'no-empty': [2, {allowEmptyCatch: true}], - 'no-eq-null': [2], - 'no-eval': [2], - 'no-ex-assign': [2], - 'no-extend-native': [2], - 'no-extra-bind': [2], - 'no-extra-boolean-cast': [2], - 'no-extra-label': [0], - 'no-fallthrough': [2], - 'no-func-assign': [2], - 'no-global-assign': [2], - 'no-implicit-coercion': [2], - 'no-implicit-globals': [0], - 'no-implied-eval': [0], // handled by @typescript-eslint/no-implied-eval - 'no-import-assign': [2], - 'no-inline-comments': [0], - 'no-inner-declarations': [2], - 'no-invalid-regexp': [2], - 'no-invalid-this': [0], - 'no-irregular-whitespace': [2], - 'no-iterator': [2], - 'no-jquery/no-ajax-events': [2], - 'no-jquery/no-ajax': [2], - 'no-jquery/no-and-self': [2], - 'no-jquery/no-animate-toggle': [2], - 'no-jquery/no-animate': [2], - 'no-jquery/no-append-html': [2], - 'no-jquery/no-attr': [2], - 'no-jquery/no-bind': [2], - 'no-jquery/no-box-model': [2], - 'no-jquery/no-browser': [2], - 'no-jquery/no-camel-case': [2], - 'no-jquery/no-class-state': [2], - 'no-jquery/no-class': [0], - 'no-jquery/no-clone': [2], - 'no-jquery/no-closest': [0], - 'no-jquery/no-constructor-attributes': [2], - 'no-jquery/no-contains': [2], - 'no-jquery/no-context-prop': [2], - 'no-jquery/no-css': [2], - 'no-jquery/no-data': [0], - 'no-jquery/no-deferred': [2], - 'no-jquery/no-delegate': [2], - 'no-jquery/no-done-fail': [2], - 'no-jquery/no-each-collection': [0], - 'no-jquery/no-each-util': [0], - 'no-jquery/no-each': [0], - 'no-jquery/no-error-shorthand': [2], - 'no-jquery/no-error': [2], - 'no-jquery/no-escape-selector': [2], - 'no-jquery/no-event-shorthand': [2], - 'no-jquery/no-extend': [2], - 'no-jquery/no-fade': [2], - 'no-jquery/no-filter': [0], - 'no-jquery/no-find-collection': [0], - 'no-jquery/no-find-util': [2], - 'no-jquery/no-find': [0], - 'no-jquery/no-fx-interval': [2], - 'no-jquery/no-fx': [2], - 'no-jquery/no-global-eval': [2], - 'no-jquery/no-global-selector': [0], - 'no-jquery/no-grep': [2], - 'no-jquery/no-has': [2], - 'no-jquery/no-hold-ready': [2], - 'no-jquery/no-html': [0], - 'no-jquery/no-in-array': [2], - 'no-jquery/no-is-array': [2], - 'no-jquery/no-is-empty-object': [2], - 'no-jquery/no-is-function': [2], - 'no-jquery/no-is-numeric': [2], - 'no-jquery/no-is-plain-object': [2], - 'no-jquery/no-is-window': [2], - 'no-jquery/no-is': [2], - 'no-jquery/no-jquery-constructor': [0], - 'no-jquery/no-live': [2], - 'no-jquery/no-load-shorthand': [2], - 'no-jquery/no-load': [2], - 'no-jquery/no-map-collection': [0], - 'no-jquery/no-map-util': [2], - 'no-jquery/no-map': [2], - 'no-jquery/no-merge': [2], - 'no-jquery/no-node-name': [2], - 'no-jquery/no-noop': [2], - 'no-jquery/no-now': [2], - 'no-jquery/no-on-ready': [2], - 'no-jquery/no-other-methods': [0], - 'no-jquery/no-other-utils': [2], - 'no-jquery/no-param': [2], - 'no-jquery/no-parent': [0], - 'no-jquery/no-parents': [2], - 'no-jquery/no-parse-html-literal': [2], - 'no-jquery/no-parse-html': [2], - 'no-jquery/no-parse-json': [2], - 'no-jquery/no-parse-xml': [2], - 'no-jquery/no-prop': [2], - 'no-jquery/no-proxy': [2], - 'no-jquery/no-ready-shorthand': [2], - 'no-jquery/no-ready': [2], - 'no-jquery/no-selector-prop': [2], - 'no-jquery/no-serialize': [2], - 'no-jquery/no-size': [2], - 'no-jquery/no-sizzle': [2], - 'no-jquery/no-slide': [2], - 'no-jquery/no-sub': [2], - 'no-jquery/no-support': [2], - 'no-jquery/no-text': [2], - 'no-jquery/no-trigger': [0], - 'no-jquery/no-trim': [2], - 'no-jquery/no-type': [2], - 'no-jquery/no-unique': [2], - 'no-jquery/no-unload-shorthand': [2], - 'no-jquery/no-val': [0], - 'no-jquery/no-visibility': [2], - 'no-jquery/no-when': [2], - 'no-jquery/no-wrap': [2], - 'no-jquery/variable-pattern': [2], - 'no-label-var': [2], - 'no-labels': [0], // handled by no-restricted-syntax - 'no-lone-blocks': [2], - 'no-lonely-if': [0], - 'no-loop-func': [0], - 'no-loss-of-precision': [2], - 'no-magic-numbers': [0], - 'no-misleading-character-class': [2], - 'no-multi-assign': [0], - 'no-multi-str': [2], - 'no-negated-condition': [0], - 'no-nested-ternary': [0], - 'no-new-func': [2], - 'no-new-native-nonconstructor': [2], - 'no-new-object': [2], - 'no-new-symbol': [2], - 'no-new-wrappers': [2], - 'no-new': [0], - 'no-nonoctal-decimal-escape': [2], - 'no-obj-calls': [2], - 'no-octal-escape': [2], - 'no-octal': [2], - 'no-param-reassign': [0], - 'no-plusplus': [0], - 'no-promise-executor-return': [0], - 'no-proto': [2], - 'no-prototype-builtins': [2], - 'no-redeclare': [0], // must be disabled for typescript overloads - 'no-regex-spaces': [2], - 'no-restricted-exports': [0], - 'no-restricted-globals': [2, 'addEventListener', 'blur', 'close', 'closed', 'confirm', 'defaultStatus', 'defaultstatus', 'error', 'event', 'external', 'find', 'focus', 'frameElement', 'frames', 'history', 'innerHeight', 'innerWidth', 'isFinite', 'isNaN', 'length', 'locationbar', 'menubar', 'moveBy', 'moveTo', 'name', 'onblur', 'onerror', 'onfocus', 'onload', 'onresize', 'onunload', 'open', 'opener', 'opera', 'outerHeight', 'outerWidth', 'pageXOffset', 'pageYOffset', 'parent', 'print', 'removeEventListener', 'resizeBy', 'resizeTo', 'screen', 'screenLeft', 'screenTop', 'screenX', 'screenY', 'scroll', 'scrollbars', 'scrollBy', 'scrollTo', 'scrollX', 'scrollY', 'status', 'statusbar', 'stop', 'toolbar', 'top'], - 'no-restricted-imports': [0], - 'no-restricted-syntax': [2, ...restrictedSyntax, {selector: 'CallExpression[callee.name="fetch"]', message: 'use modules/fetch.ts instead'}], - 'no-return-assign': [0], - 'no-script-url': [2], - 'no-self-assign': [2, {props: true}], - 'no-self-compare': [2], - 'no-sequences': [2], - 'no-setter-return': [2], - 'no-shadow-restricted-names': [2], - 'no-shadow': [0], - 'no-sparse-arrays': [2], - 'no-template-curly-in-string': [2], - 'no-ternary': [0], - 'no-this-before-super': [2], - 'no-throw-literal': [2], - 'no-undef-init': [2], - 'no-undef': [2], // it is still needed by eslint & IDE to prompt undefined names in real time - 'no-undefined': [0], - 'no-underscore-dangle': [0], - 'no-unexpected-multiline': [2], - 'no-unmodified-loop-condition': [2], - 'no-unneeded-ternary': [2], - 'no-unreachable-loop': [2], - 'no-unreachable': [2], - 'no-unsafe-finally': [2], - 'no-unsafe-negation': [2], - 'no-unused-expressions': [2], - 'no-unused-labels': [2], - 'no-unused-private-class-members': [2], - 'no-unused-vars': [0], // handled by @typescript-eslint/no-unused-vars - 'no-use-before-define': [0], // handled by @typescript-eslint/no-use-before-define - 'no-use-extend-native/no-use-extend-native': [2], - 'no-useless-backreference': [2], - 'no-useless-call': [2], - 'no-useless-catch': [2], - 'no-useless-computed-key': [2], - 'no-useless-concat': [2], - 'no-useless-constructor': [2], - 'no-useless-escape': [2], - 'no-useless-rename': [2], - 'no-useless-return': [2], - 'no-var': [2], - 'no-void': [2], - 'no-warning-comments': [0], - 'no-with': [0], // handled by no-restricted-syntax - 'object-shorthand': [2, 'always'], - 'one-var-declaration-per-line': [0], - 'one-var': [0], - 'operator-assignment': [2, 'always'], - 'operator-linebreak': [2, 'after'], - 'prefer-arrow-callback': [2, {allowNamedFunctions: true, allowUnboundThis: true}], - 'prefer-const': [2, {destructuring: 'all', ignoreReadBeforeAssign: true}], - 'prefer-destructuring': [0], - 'prefer-exponentiation-operator': [2], - 'prefer-named-capture-group': [0], - 'prefer-numeric-literals': [2], - 'prefer-object-has-own': [2], - 'prefer-object-spread': [2], - 'prefer-promise-reject-errors': [2, {allowEmptyReject: false}], - 'prefer-regex-literals': [2], - 'prefer-rest-params': [2], - 'prefer-spread': [2], - 'prefer-template': [2], - 'radix': [2, 'as-needed'], - 'regexp/confusing-quantifier': [2], - 'regexp/control-character-escape': [2], - 'regexp/hexadecimal-escape': [0], - 'regexp/letter-case': [0], - 'regexp/match-any': [2], - 'regexp/negation': [2], - 'regexp/no-contradiction-with-assertion': [0], - 'regexp/no-control-character': [0], - 'regexp/no-dupe-characters-character-class': [2], - 'regexp/no-dupe-disjunctions': [2], - 'regexp/no-empty-alternative': [2], - 'regexp/no-empty-capturing-group': [2], - 'regexp/no-empty-character-class': [0], - 'regexp/no-empty-group': [2], - 'regexp/no-empty-lookarounds-assertion': [2], - 'regexp/no-empty-string-literal': [2], - 'regexp/no-escape-backspace': [2], - 'regexp/no-extra-lookaround-assertions': [0], - 'regexp/no-invalid-regexp': [2], - 'regexp/no-invisible-character': [2], - 'regexp/no-lazy-ends': [2], - 'regexp/no-legacy-features': [2], - 'regexp/no-misleading-capturing-group': [0], - 'regexp/no-misleading-unicode-character': [0], - 'regexp/no-missing-g-flag': [2], - 'regexp/no-non-standard-flag': [2], - 'regexp/no-obscure-range': [2], - 'regexp/no-octal': [2], - 'regexp/no-optional-assertion': [2], - 'regexp/no-potentially-useless-backreference': [2], - 'regexp/no-standalone-backslash': [2], - 'regexp/no-super-linear-backtracking': [0], - 'regexp/no-super-linear-move': [0], - 'regexp/no-trivially-nested-assertion': [2], - 'regexp/no-trivially-nested-quantifier': [2], - 'regexp/no-unused-capturing-group': [0], - 'regexp/no-useless-assertions': [2], - 'regexp/no-useless-backreference': [2], - 'regexp/no-useless-character-class': [2], - 'regexp/no-useless-dollar-replacements': [2], - 'regexp/no-useless-escape': [2], - 'regexp/no-useless-flag': [2], - 'regexp/no-useless-lazy': [2], - 'regexp/no-useless-non-capturing-group': [2], - 'regexp/no-useless-quantifier': [2], - 'regexp/no-useless-range': [2], - 'regexp/no-useless-set-operand': [2], - 'regexp/no-useless-string-literal': [2], - 'regexp/no-useless-two-nums-quantifier': [2], - 'regexp/no-zero-quantifier': [2], - 'regexp/optimal-lookaround-quantifier': [2], - 'regexp/optimal-quantifier-concatenation': [0], - 'regexp/prefer-character-class': [0], - 'regexp/prefer-d': [0], - 'regexp/prefer-escape-replacement-dollar-char': [0], - 'regexp/prefer-lookaround': [0], - 'regexp/prefer-named-backreference': [0], - 'regexp/prefer-named-capture-group': [0], - 'regexp/prefer-named-replacement': [0], - 'regexp/prefer-plus-quantifier': [2], - 'regexp/prefer-predefined-assertion': [2], - 'regexp/prefer-quantifier': [0], - 'regexp/prefer-question-quantifier': [2], - 'regexp/prefer-range': [2], - 'regexp/prefer-regexp-exec': [2], - 'regexp/prefer-regexp-test': [2], - 'regexp/prefer-result-array-groups': [0], - 'regexp/prefer-set-operation': [2], - 'regexp/prefer-star-quantifier': [2], - 'regexp/prefer-unicode-codepoint-escapes': [2], - 'regexp/prefer-w': [0], - 'regexp/require-unicode-regexp': [0], - 'regexp/simplify-set-operations': [2], - 'regexp/sort-alternatives': [0], - 'regexp/sort-character-class-elements': [0], - 'regexp/sort-flags': [0], - 'regexp/strict': [2], - 'regexp/unicode-escape': [0], - 'regexp/use-ignore-case': [0], - 'require-atomic-updates': [0], - 'require-await': [0], // handled by @typescript-eslint/require-await - 'require-unicode-regexp': [0], - 'require-yield': [2], - 'sonarjs/cognitive-complexity': [0], - 'sonarjs/elseif-without-else': [0], - 'sonarjs/max-switch-cases': [0], - 'sonarjs/no-all-duplicated-branches': [2], - 'sonarjs/no-collapsible-if': [0], - 'sonarjs/no-collection-size-mischeck': [2], - 'sonarjs/no-duplicate-string': [0], - 'sonarjs/no-duplicated-branches': [0], - 'sonarjs/no-element-overwrite': [2], - 'sonarjs/no-empty-collection': [2], - 'sonarjs/no-extra-arguments': [2], - 'sonarjs/no-gratuitous-expressions': [2], - 'sonarjs/no-identical-conditions': [2], - 'sonarjs/no-identical-expressions': [2], - 'sonarjs/no-identical-functions': [2, 5], - 'sonarjs/no-ignored-return': [2], - 'sonarjs/no-inverted-boolean-check': [2], - 'sonarjs/no-nested-switch': [0], - 'sonarjs/no-nested-template-literals': [0], - 'sonarjs/no-one-iteration-loop': [2], - 'sonarjs/no-redundant-boolean': [2], - 'sonarjs/no-redundant-jump': [2], - 'sonarjs/no-same-line-conditional': [2], - 'sonarjs/no-small-switch': [0], - 'sonarjs/no-unused-collection': [2], - 'sonarjs/no-use-of-empty-return-value': [2], - 'sonarjs/no-useless-catch': [2], - 'sonarjs/non-existent-operator': [2], - 'sonarjs/prefer-immediate-return': [0], - 'sonarjs/prefer-object-literal': [0], - 'sonarjs/prefer-single-boolean-return': [0], - 'sonarjs/prefer-while': [2], - 'sort-imports': [0], - 'sort-keys': [0], - 'sort-vars': [0], - 'strict': [0], - 'symbol-description': [2], - 'unicode-bom': [2, 'never'], - 'unicorn/better-regex': [0], - 'unicorn/catch-error-name': [0], - 'unicorn/consistent-destructuring': [2], - 'unicorn/consistent-empty-array-spread': [2], - 'unicorn/consistent-existence-index-check': [0], - 'unicorn/consistent-function-scoping': [0], - 'unicorn/custom-error-definition': [0], - 'unicorn/empty-brace-spaces': [2], - 'unicorn/error-message': [0], - 'unicorn/escape-case': [0], - 'unicorn/expiring-todo-comments': [0], - 'unicorn/explicit-length-check': [0], - 'unicorn/filename-case': [0], - 'unicorn/import-index': [0], - 'unicorn/import-style': [0], - 'unicorn/new-for-builtins': [2], - 'unicorn/no-abusive-eslint-disable': [0], - 'unicorn/no-anonymous-default-export': [0], - 'unicorn/no-array-callback-reference': [0], - 'unicorn/no-array-for-each': [2], - 'unicorn/no-array-method-this-argument': [2], - 'unicorn/no-array-push-push': [2], - 'unicorn/no-array-reduce': [2], - 'unicorn/no-await-expression-member': [0], - 'unicorn/no-await-in-promise-methods': [2], - 'unicorn/no-console-spaces': [0], - 'unicorn/no-document-cookie': [2], - 'unicorn/no-empty-file': [2], - 'unicorn/no-for-loop': [0], - 'unicorn/no-hex-escape': [0], - 'unicorn/no-instanceof-array': [0], - 'unicorn/no-invalid-fetch-options': [2], - 'unicorn/no-invalid-remove-event-listener': [2], - 'unicorn/no-keyword-prefix': [0], - 'unicorn/no-length-as-slice-end': [2], - 'unicorn/no-lonely-if': [2], - 'unicorn/no-magic-array-flat-depth': [0], - 'unicorn/no-negated-condition': [0], - 'unicorn/no-negation-in-equality-check': [2], - 'unicorn/no-nested-ternary': [0], - 'unicorn/no-new-array': [0], - 'unicorn/no-new-buffer': [0], - 'unicorn/no-null': [0], - 'unicorn/no-object-as-default-parameter': [0], - 'unicorn/no-process-exit': [0], - 'unicorn/no-single-promise-in-promise-methods': [2], - 'unicorn/no-static-only-class': [2], - 'unicorn/no-thenable': [2], - 'unicorn/no-this-assignment': [2], - 'unicorn/no-typeof-undefined': [2], - 'unicorn/no-unnecessary-await': [2], - 'unicorn/no-unnecessary-polyfills': [2], - 'unicorn/no-unreadable-array-destructuring': [0], - 'unicorn/no-unreadable-iife': [2], - 'unicorn/no-unused-properties': [2], - 'unicorn/no-useless-fallback-in-spread': [2], - 'unicorn/no-useless-length-check': [2], - 'unicorn/no-useless-promise-resolve-reject': [2], - 'unicorn/no-useless-spread': [2], - 'unicorn/no-useless-switch-case': [2], - 'unicorn/no-useless-undefined': [0], - 'unicorn/no-zero-fractions': [2], - 'unicorn/number-literal-case': [0], - 'unicorn/numeric-separators-style': [0], - 'unicorn/prefer-add-event-listener': [2], - 'unicorn/prefer-array-find': [2], - 'unicorn/prefer-array-flat-map': [2], - 'unicorn/prefer-array-flat': [2], - 'unicorn/prefer-array-index-of': [2], - 'unicorn/prefer-array-some': [2], - 'unicorn/prefer-at': [0], - 'unicorn/prefer-blob-reading-methods': [2], - 'unicorn/prefer-code-point': [0], - 'unicorn/prefer-date-now': [2], - 'unicorn/prefer-default-parameters': [0], - 'unicorn/prefer-dom-node-append': [2], - 'unicorn/prefer-dom-node-dataset': [0], - 'unicorn/prefer-dom-node-remove': [2], - 'unicorn/prefer-dom-node-text-content': [2], - 'unicorn/prefer-event-target': [2], - 'unicorn/prefer-export-from': [0], - 'unicorn/prefer-global-this': [0], - 'unicorn/prefer-includes': [2], - 'unicorn/prefer-json-parse-buffer': [0], - 'unicorn/prefer-keyboard-event-key': [2], - 'unicorn/prefer-logical-operator-over-ternary': [2], - 'unicorn/prefer-math-min-max': [2], - 'unicorn/prefer-math-trunc': [2], - 'unicorn/prefer-modern-dom-apis': [0], - 'unicorn/prefer-modern-math-apis': [2], - 'unicorn/prefer-module': [2], - 'unicorn/prefer-native-coercion-functions': [2], - 'unicorn/prefer-negative-index': [2], - 'unicorn/prefer-node-protocol': [2], - 'unicorn/prefer-number-properties': [0], - 'unicorn/prefer-object-from-entries': [2], - 'unicorn/prefer-object-has-own': [0], - 'unicorn/prefer-optional-catch-binding': [2], - 'unicorn/prefer-prototype-methods': [0], - 'unicorn/prefer-query-selector': [2], - 'unicorn/prefer-reflect-apply': [0], - 'unicorn/prefer-regexp-test': [2], - 'unicorn/prefer-set-has': [0], - 'unicorn/prefer-set-size': [2], - 'unicorn/prefer-spread': [0], - 'unicorn/prefer-string-raw': [0], - 'unicorn/prefer-string-replace-all': [0], - 'unicorn/prefer-string-slice': [0], - 'unicorn/prefer-string-starts-ends-with': [2], - 'unicorn/prefer-string-trim-start-end': [2], - 'unicorn/prefer-structured-clone': [2], - 'unicorn/prefer-switch': [0], - 'unicorn/prefer-ternary': [0], - 'unicorn/prefer-text-content': [2], - 'unicorn/prefer-top-level-await': [0], - 'unicorn/prefer-type-error': [0], - 'unicorn/prevent-abbreviations': [0], - 'unicorn/relative-url-style': [2], - 'unicorn/require-array-join-separator': [2], - 'unicorn/require-number-to-fixed-digits-argument': [2], - 'unicorn/require-post-message-target-origin': [0], - 'unicorn/string-content': [0], - 'unicorn/switch-case-braces': [0], - 'unicorn/template-indent': [2], - 'unicorn/text-encoding-identifier-case': [0], - 'unicorn/throw-new-error': [2], - 'use-isnan': [2], - 'valid-typeof': [2, {requireStringLiterals: true}], - 'vars-on-top': [0], - 'wc/attach-shadow-constructor': [2], - 'wc/define-tag-after-class-definition': [0], - 'wc/expose-class-on-global': [0], - 'wc/file-name-matches-element': [2], - 'wc/guard-define-call': [0], - 'wc/guard-super-call': [2], - 'wc/max-elements-per-file': [0], - 'wc/no-child-traversal-in-attributechangedcallback': [2], - 'wc/no-child-traversal-in-connectedcallback': [2], - 'wc/no-closed-shadow-root': [2], - 'wc/no-constructor-attributes': [2], - 'wc/no-constructor-params': [2], - 'wc/no-constructor': [2], - 'wc/no-customized-built-in-elements': [2], - 'wc/no-exports-with-element': [0], - 'wc/no-invalid-element-name': [2], - 'wc/no-invalid-extends': [2], - 'wc/no-method-prefixed-with-on': [2], - 'wc/no-self-class': [2], - 'wc/no-typos': [2], - 'wc/require-listener-teardown': [2], - 'wc/tag-name-matches-class': [2], - 'yoda': [2, 'never'], - }, -}; diff --git a/.eslintrc.yaml b/.eslintrc.yaml new file mode 100644 index 0000000000..f6a7fb3ed0 --- /dev/null +++ b/.eslintrc.yaml @@ -0,0 +1,757 @@ +root: true +reportUnusedDisableDirectives: true + +ignorePatterns: + - /web_src/js/vendor + +parserOptions: + sourceType: module + ecmaVersion: latest + +plugins: + - "@eslint-community/eslint-plugin-eslint-comments" + - eslint-plugin-array-func + - eslint-plugin-import + - eslint-plugin-jquery + - eslint-plugin-no-jquery + - eslint-plugin-no-use-extend-native + - eslint-plugin-regexp + - eslint-plugin-sonarjs + - eslint-plugin-unicorn + - eslint-plugin-vitest-globals + - eslint-plugin-wc + +env: + es2024: true + node: true + +overrides: + - files: ["web_src/**/*"] + globals: + __webpack_public_path__: true + process: false # https://github.com/webpack/webpack/issues/15833 + - files: ["web_src/**/*", "docs/**/*"] + env: + browser: true + node: false + - files: ["web_src/**/*worker.*"] + env: + worker: true + rules: + no-restricted-globals: [2, addEventListener, blur, close, closed, confirm, defaultStatus, defaultstatus, error, event, external, find, focus, frameElement, frames, history, innerHeight, innerWidth, isFinite, isNaN, length, locationbar, menubar, moveBy, moveTo, name, onblur, onerror, onfocus, onload, onresize, onunload, open, opener, opera, outerHeight, outerWidth, pageXOffset, pageYOffset, parent, print, removeEventListener, resizeBy, resizeTo, screen, screenLeft, screenTop, screenX, screenY, scroll, scrollbars, scrollBy, scrollTo, scrollX, scrollY, status, statusbar, stop, toolbar, top] + - files: ["build/generate-images.js"] + rules: + import/no-unresolved: [0] + import/no-extraneous-dependencies: [0] + - files: ["*.config.*"] + rules: + import/no-unused-modules: [0] + - files: ["**/*.test.*", "web_src/js/test/setup.js"] + env: + vitest-globals/env: true + - files: ["web_src/js/modules/fetch.js", "web_src/js/standalone/**/*"] + rules: + no-restricted-syntax: [2, WithStatement, ForInStatement, LabeledStatement, SequenceExpression] + +rules: + "@eslint-community/eslint-comments/disable-enable-pair": [2] + "@eslint-community/eslint-comments/no-aggregating-enable": [2] + "@eslint-community/eslint-comments/no-duplicate-disable": [2] + "@eslint-community/eslint-comments/no-restricted-disable": [0] + "@eslint-community/eslint-comments/no-unlimited-disable": [2] + "@eslint-community/eslint-comments/no-unused-disable": [2] + "@eslint-community/eslint-comments/no-unused-enable": [2] + "@eslint-community/eslint-comments/no-use": [0] + "@eslint-community/eslint-comments/require-description": [0] + accessor-pairs: [2] + array-bracket-newline: [0] + array-bracket-spacing: [2, never] + array-callback-return: [2, {checkForEach: true}] + array-element-newline: [0] + array-func/avoid-reverse: [2] + array-func/from-map: [2] + array-func/no-unnecessary-this-arg: [2] + array-func/prefer-array-from: [2] + array-func/prefer-flat-map: [0] # handled by unicorn/prefer-array-flat-map + array-func/prefer-flat: [0] # handled by unicorn/prefer-array-flat + arrow-body-style: [0] + arrow-parens: [2, always] + arrow-spacing: [2, {before: true, after: true}] + block-scoped-var: [2] + brace-style: [2, 1tbs, {allowSingleLine: true}] + camelcase: [0] + capitalized-comments: [0] + class-methods-use-this: [0] + comma-dangle: [2, only-multiline] + comma-spacing: [2, {before: false, after: true}] + comma-style: [2, last] + complexity: [0] + computed-property-spacing: [2, never] + consistent-return: [0] + consistent-this: [0] + constructor-super: [2] + curly: [0] + default-case-last: [2] + default-case: [0] + default-param-last: [0] + dot-location: [2, property] + dot-notation: [0] + eol-last: [2] + eqeqeq: [2] + for-direction: [2] + func-call-spacing: [2, never] + func-name-matching: [2] + func-names: [0] + func-style: [0] + function-call-argument-newline: [0] + function-paren-newline: [0] + generator-star-spacing: [0] + getter-return: [2] + grouped-accessor-pairs: [2] + guard-for-in: [0] + id-blacklist: [0] + id-length: [0] + id-match: [0] + implicit-arrow-linebreak: [0] + import/consistent-type-specifier-style: [0] + import/default: [0] + import/dynamic-import-chunkname: [0] + import/export: [2] + import/exports-last: [0] + import/extensions: [2, always, {ignorePackages: true}] + import/first: [2] + import/group-exports: [0] + import/max-dependencies: [0] + import/named: [2] + import/namespace: [0] + import/newline-after-import: [0] + import/no-absolute-path: [0] + import/no-amd: [2] + import/no-anonymous-default-export: [0] + import/no-commonjs: [2] + import/no-cycle: [2, {ignoreExternal: true, maxDepth: 1}] + import/no-default-export: [0] + import/no-deprecated: [0] + import/no-dynamic-require: [0] + import/no-empty-named-blocks: [2] + import/no-extraneous-dependencies: [2] + import/no-import-module-exports: [0] + import/no-internal-modules: [0] + import/no-mutable-exports: [0] + import/no-named-as-default-member: [0] + import/no-named-as-default: [2] + import/no-named-default: [0] + import/no-named-export: [0] + import/no-namespace: [0] + import/no-nodejs-modules: [0] + import/no-relative-packages: [0] + import/no-relative-parent-imports: [0] + import/no-restricted-paths: [0] + import/no-self-import: [2] + import/no-unassigned-import: [0] + import/no-unresolved: [2, {commonjs: true, ignore: ["\\?.+$", ^vitest/]}] + import/no-unused-modules: [2, {unusedExports: true}] + import/no-useless-path-segments: [2, {commonjs: true}] + import/no-webpack-loader-syntax: [2] + import/order: [0] + import/prefer-default-export: [0] + import/unambiguous: [0] + indent: [2, 2, {SwitchCase: 1}] + init-declarations: [0] + jquery/no-ajax-events: [2] + jquery/no-ajax: [0] + jquery/no-animate: [2] + jquery/no-attr: [0] + jquery/no-bind: [2] + jquery/no-class: [0] + jquery/no-clone: [2] + jquery/no-closest: [0] + jquery/no-css: [0] + jquery/no-data: [0] + jquery/no-deferred: [2] + jquery/no-delegate: [2] + jquery/no-each: [0] + jquery/no-extend: [2] + jquery/no-fade: [0] + jquery/no-filter: [0] + jquery/no-find: [0] + jquery/no-global-eval: [2] + jquery/no-grep: [2] + jquery/no-has: [2] + jquery/no-hide: [2] + jquery/no-html: [0] + jquery/no-in-array: [2] + jquery/no-is-array: [2] + jquery/no-is-function: [2] + jquery/no-is: [0] + jquery/no-load: [2] + jquery/no-map: [0] + jquery/no-merge: [2] + jquery/no-param: [2] + jquery/no-parent: [0] + jquery/no-parents: [0] + jquery/no-parse-html: [2] + jquery/no-prop: [0] + jquery/no-proxy: [2] + jquery/no-ready: [2] + jquery/no-serialize: [2] + jquery/no-show: [2] + jquery/no-size: [2] + jquery/no-sizzle: [0] + jquery/no-slide: [0] + jquery/no-submit: [0] + jquery/no-text: [0] + jquery/no-toggle: [2] + jquery/no-trigger: [0] + jquery/no-trim: [2] + jquery/no-val: [0] + jquery/no-when: [2] + jquery/no-wrap: [2] + key-spacing: [2] + keyword-spacing: [2] + line-comment-position: [0] + linebreak-style: [2, unix] + lines-around-comment: [0] + lines-between-class-members: [0] + logical-assignment-operators: [0] + max-classes-per-file: [0] + max-depth: [0] + max-len: [0] + max-lines-per-function: [0] + max-lines: [0] + max-nested-callbacks: [0] + max-params: [0] + max-statements-per-line: [0] + max-statements: [0] + multiline-comment-style: [2, separate-lines] + multiline-ternary: [0] + new-cap: [0] + new-parens: [2] + newline-per-chained-call: [0] + no-alert: [0] + no-array-constructor: [2] + no-async-promise-executor: [0] + no-await-in-loop: [0] + no-bitwise: [0] + no-buffer-constructor: [0] + no-caller: [2] + no-case-declarations: [2] + no-class-assign: [2] + no-compare-neg-zero: [2] + no-cond-assign: [2, except-parens] + no-confusing-arrow: [0] + no-console: [1, {allow: [debug, info, warn, error]}] + no-const-assign: [2] + no-constant-binary-expression: [2] + no-constant-condition: [0] + no-constructor-return: [2] + no-continue: [0] + no-control-regex: [0] + no-debugger: [1] + no-delete-var: [2] + no-div-regex: [0] + no-dupe-args: [2] + no-dupe-class-members: [2] + no-dupe-else-if: [2] + no-dupe-keys: [2] + no-duplicate-case: [2] + no-duplicate-imports: [2] + no-else-return: [2] + no-empty-character-class: [2] + no-empty-function: [0] + no-empty-pattern: [2] + no-empty-static-block: [2] + no-empty: [2, {allowEmptyCatch: true}] + no-eq-null: [2] + no-eval: [2] + no-ex-assign: [2] + no-extend-native: [2] + no-extra-bind: [2] + no-extra-boolean-cast: [2] + no-extra-label: [0] + no-extra-parens: [0] + no-extra-semi: [2] + no-fallthrough: [2] + no-floating-decimal: [0] + no-func-assign: [2] + no-global-assign: [2] + no-implicit-coercion: [2] + no-implicit-globals: [0] + no-implied-eval: [2] + no-import-assign: [2] + no-inline-comments: [0] + no-inner-declarations: [2] + no-invalid-regexp: [2] + no-invalid-this: [0] + no-irregular-whitespace: [2] + no-iterator: [2] + no-jquery/no-ajax-events: [2] + no-jquery/no-ajax: [0] + no-jquery/no-and-self: [2] + no-jquery/no-animate-toggle: [2] + no-jquery/no-animate: [2] + no-jquery/no-append-html: [0] + no-jquery/no-attr: [0] + no-jquery/no-bind: [2] + no-jquery/no-box-model: [2] + no-jquery/no-browser: [2] + no-jquery/no-camel-case: [2] + no-jquery/no-class-state: [0] + no-jquery/no-class: [0] + no-jquery/no-clone: [2] + no-jquery/no-closest: [0] + no-jquery/no-constructor-attributes: [2] + no-jquery/no-contains: [2] + no-jquery/no-context-prop: [2] + no-jquery/no-css: [0] + no-jquery/no-data: [0] + no-jquery/no-deferred: [2] + no-jquery/no-delegate: [2] + no-jquery/no-each-collection: [0] + no-jquery/no-each-util: [0] + no-jquery/no-each: [0] + no-jquery/no-error-shorthand: [2] + no-jquery/no-error: [2] + no-jquery/no-escape-selector: [2] + no-jquery/no-event-shorthand: [2] + no-jquery/no-extend: [2] + no-jquery/no-fade: [2] + no-jquery/no-filter: [0] + no-jquery/no-find-collection: [0] + no-jquery/no-find-util: [2] + no-jquery/no-find: [0] + no-jquery/no-fx-interval: [2] + no-jquery/no-global-eval: [2] + no-jquery/no-global-selector: [0] + no-jquery/no-grep: [2] + no-jquery/no-has: [2] + no-jquery/no-hold-ready: [2] + no-jquery/no-html: [0] + no-jquery/no-in-array: [2] + no-jquery/no-is-array: [2] + no-jquery/no-is-empty-object: [2] + no-jquery/no-is-function: [2] + no-jquery/no-is-numeric: [2] + no-jquery/no-is-plain-object: [2] + no-jquery/no-is-window: [2] + no-jquery/no-is: [0] + no-jquery/no-jquery-constructor: [0] + no-jquery/no-live: [2] + no-jquery/no-load-shorthand: [2] + no-jquery/no-load: [2] + no-jquery/no-map-collection: [0] + no-jquery/no-map-util: [2] + no-jquery/no-map: [0] + no-jquery/no-merge: [2] + no-jquery/no-node-name: [2] + no-jquery/no-noop: [2] + no-jquery/no-now: [2] + no-jquery/no-on-ready: [2] + no-jquery/no-other-methods: [0] + no-jquery/no-other-utils: [2] + no-jquery/no-param: [2] + no-jquery/no-parent: [0] + no-jquery/no-parents: [0] + no-jquery/no-parse-html-literal: [0] + no-jquery/no-parse-html: [2] + no-jquery/no-parse-json: [2] + no-jquery/no-parse-xml: [2] + no-jquery/no-prop: [0] + no-jquery/no-proxy: [2] + no-jquery/no-ready-shorthand: [2] + no-jquery/no-ready: [2] + no-jquery/no-selector-prop: [2] + no-jquery/no-serialize: [2] + no-jquery/no-size: [2] + no-jquery/no-sizzle: [0] + no-jquery/no-slide: [2] + no-jquery/no-sub: [2] + no-jquery/no-support: [2] + no-jquery/no-text: [0] + no-jquery/no-trigger: [0] + no-jquery/no-trim: [2] + no-jquery/no-type: [2] + no-jquery/no-unique: [2] + no-jquery/no-unload-shorthand: [2] + no-jquery/no-val: [0] + no-jquery/no-visibility: [2] + no-jquery/no-when: [2] + no-jquery/no-wrap: [2] + no-jquery/variable-pattern: [0] + no-label-var: [2] + no-labels: [0] # handled by no-restricted-syntax + no-lone-blocks: [2] + no-lonely-if: [0] + no-loop-func: [0] + no-loss-of-precision: [2] + no-magic-numbers: [0] + no-misleading-character-class: [2] + no-mixed-operators: [0] + no-mixed-spaces-and-tabs: [2] + no-multi-assign: [0] + no-multi-spaces: [2, {ignoreEOLComments: true, exceptions: {Property: true}}] + no-multi-str: [2] + no-negated-condition: [0] + no-nested-ternary: [0] + no-new-func: [2] + no-new-native-nonconstructor: [2] + no-new-object: [2] + no-new-symbol: [2] + no-new-wrappers: [2] + no-new: [0] + no-nonoctal-decimal-escape: [2] + no-obj-calls: [2] + no-octal-escape: [2] + no-octal: [2] + no-param-reassign: [0] + no-plusplus: [0] + no-promise-executor-return: [0] + no-proto: [2] + no-prototype-builtins: [2] + no-redeclare: [2] + no-regex-spaces: [2] + no-restricted-exports: [0] + no-restricted-globals: [2, addEventListener, blur, close, closed, confirm, defaultStatus, defaultstatus, error, event, external, find, focus, frameElement, frames, history, innerHeight, innerWidth, isFinite, isNaN, length, location, locationbar, menubar, moveBy, moveTo, name, onblur, onerror, onfocus, onload, onresize, onunload, open, opener, opera, outerHeight, outerWidth, pageXOffset, pageYOffset, parent, print, removeEventListener, resizeBy, resizeTo, screen, screenLeft, screenTop, screenX, screenY, scroll, scrollbars, scrollBy, scrollTo, scrollX, scrollY, self, status, statusbar, stop, toolbar, top, __dirname, __filename] + no-restricted-imports: [0] + no-restricted-syntax: [2, WithStatement, ForInStatement, LabeledStatement, SequenceExpression, {selector: "CallExpression[callee.name='fetch']", message: "use modules/fetch.js instead"}] + no-return-assign: [0] + no-script-url: [2] + no-self-assign: [2, {props: true}] + no-self-compare: [2] + no-sequences: [2] + no-setter-return: [2] + no-shadow-restricted-names: [2] + no-shadow: [0] + no-sparse-arrays: [2] + no-tabs: [2] + no-template-curly-in-string: [2] + no-ternary: [0] + no-this-before-super: [2] + no-throw-literal: [2] + no-trailing-spaces: [2] + no-undef-init: [2] + no-undef: [2, {typeof: true}] + no-undefined: [0] + no-underscore-dangle: [0] + no-unexpected-multiline: [2] + no-unmodified-loop-condition: [2] + no-unneeded-ternary: [0] + no-unreachable-loop: [2] + no-unreachable: [2] + no-unsafe-finally: [2] + no-unsafe-negation: [2] + no-unused-expressions: [2] + no-unused-labels: [2] + no-unused-private-class-members: [2] + no-unused-vars: [2, {args: all, argsIgnorePattern: ^_, varsIgnorePattern: ^_, caughtErrorsIgnorePattern: ^_, destructuredArrayIgnorePattern: ^_, ignoreRestSiblings: false}] + no-use-before-define: [2, {functions: false, classes: true, variables: true, allowNamedExports: true}] + no-use-extend-native/no-use-extend-native: [2] + no-useless-backreference: [2] + no-useless-call: [2] + no-useless-catch: [2] + no-useless-computed-key: [2] + no-useless-concat: [2] + no-useless-constructor: [2] + no-useless-escape: [2] + no-useless-rename: [2] + no-useless-return: [2] + no-var: [2] + no-void: [2] + no-warning-comments: [0] + no-whitespace-before-property: [2] + no-with: [0] # handled by no-restricted-syntax + nonblock-statement-body-position: [2] + object-curly-newline: [0] + object-curly-spacing: [2, never] + object-shorthand: [2, always] + one-var-declaration-per-line: [0] + one-var: [0] + operator-assignment: [2, always] + operator-linebreak: [2, after] + padded-blocks: [2, never] + padding-line-between-statements: [0] + prefer-arrow-callback: [2, {allowNamedFunctions: true, allowUnboundThis: true}] + prefer-const: [2, {destructuring: all, ignoreReadBeforeAssign: true}] + prefer-destructuring: [0] + prefer-exponentiation-operator: [2] + prefer-named-capture-group: [0] + prefer-numeric-literals: [2] + prefer-object-has-own: [2] + prefer-object-spread: [2] + prefer-promise-reject-errors: [2, {allowEmptyReject: false}] + prefer-regex-literals: [2] + prefer-rest-params: [2] + prefer-spread: [2] + prefer-template: [2] + quote-props: [0] + quotes: [2, single, {avoidEscape: true, allowTemplateLiterals: true}] + radix: [2, as-needed] + regexp/confusing-quantifier: [2] + regexp/control-character-escape: [2] + regexp/hexadecimal-escape: [0] + regexp/letter-case: [0] + regexp/match-any: [2] + regexp/negation: [2] + regexp/no-contradiction-with-assertion: [0] + regexp/no-control-character: [0] + regexp/no-dupe-characters-character-class: [2] + regexp/no-dupe-disjunctions: [2] + regexp/no-empty-alternative: [2] + regexp/no-empty-capturing-group: [2] + regexp/no-empty-character-class: [0] + regexp/no-empty-group: [2] + regexp/no-empty-lookarounds-assertion: [2] + regexp/no-escape-backspace: [2] + regexp/no-extra-lookaround-assertions: [0] + regexp/no-invalid-regexp: [2] + regexp/no-invisible-character: [2] + regexp/no-lazy-ends: [2] + regexp/no-legacy-features: [2] + regexp/no-misleading-capturing-group: [0] + regexp/no-misleading-unicode-character: [0] + regexp/no-missing-g-flag: [2] + regexp/no-non-standard-flag: [2] + regexp/no-obscure-range: [2] + regexp/no-octal: [2] + regexp/no-optional-assertion: [2] + regexp/no-potentially-useless-backreference: [2] + regexp/no-standalone-backslash: [2] + regexp/no-super-linear-backtracking: [0] + regexp/no-super-linear-move: [0] + regexp/no-trivially-nested-assertion: [2] + regexp/no-trivially-nested-quantifier: [2] + regexp/no-unused-capturing-group: [0] + regexp/no-useless-assertions: [2] + regexp/no-useless-backreference: [2] + regexp/no-useless-character-class: [2] + regexp/no-useless-dollar-replacements: [2] + regexp/no-useless-escape: [2] + regexp/no-useless-flag: [2] + regexp/no-useless-lazy: [2] + regexp/no-useless-non-capturing-group: [2] + regexp/no-useless-quantifier: [2] + regexp/no-useless-range: [2] + regexp/no-useless-two-nums-quantifier: [2] + regexp/no-zero-quantifier: [2] + regexp/optimal-lookaround-quantifier: [2] + regexp/optimal-quantifier-concatenation: [0] + regexp/prefer-character-class: [0] + regexp/prefer-d: [0] + regexp/prefer-escape-replacement-dollar-char: [0] + regexp/prefer-lookaround: [0] + regexp/prefer-named-backreference: [0] + regexp/prefer-named-capture-group: [0] + regexp/prefer-named-replacement: [0] + regexp/prefer-plus-quantifier: [2] + regexp/prefer-predefined-assertion: [2] + regexp/prefer-quantifier: [0] + regexp/prefer-question-quantifier: [2] + regexp/prefer-range: [2] + regexp/prefer-regexp-exec: [2] + regexp/prefer-regexp-test: [2] + regexp/prefer-result-array-groups: [0] + regexp/prefer-star-quantifier: [2] + regexp/prefer-unicode-codepoint-escapes: [2] + regexp/prefer-w: [0] + regexp/require-unicode-regexp: [0] + regexp/sort-alternatives: [0] + regexp/sort-character-class-elements: [0] + regexp/sort-flags: [0] + regexp/strict: [2] + regexp/unicode-escape: [0] + regexp/use-ignore-case: [0] + require-atomic-updates: [0] + require-await: [0] + require-unicode-regexp: [0] + require-yield: [2] + rest-spread-spacing: [2, never] + semi-spacing: [2, {before: false, after: true}] + semi-style: [2, last] + semi: [2, always, {omitLastInOneLineBlock: true}] + sonarjs/cognitive-complexity: [0] + sonarjs/elseif-without-else: [0] + sonarjs/max-switch-cases: [0] + sonarjs/no-all-duplicated-branches: [2] + sonarjs/no-collapsible-if: [0] + sonarjs/no-collection-size-mischeck: [2] + sonarjs/no-duplicate-string: [0] + sonarjs/no-duplicated-branches: [0] + sonarjs/no-element-overwrite: [2] + sonarjs/no-empty-collection: [2] + sonarjs/no-extra-arguments: [2] + sonarjs/no-gratuitous-expressions: [2] + sonarjs/no-identical-conditions: [2] + sonarjs/no-identical-expressions: [2] + sonarjs/no-identical-functions: [2, 5] + sonarjs/no-ignored-return: [2] + sonarjs/no-inverted-boolean-check: [2] + sonarjs/no-nested-switch: [0] + sonarjs/no-nested-template-literals: [0] + sonarjs/no-one-iteration-loop: [2] + sonarjs/no-redundant-boolean: [2] + sonarjs/no-redundant-jump: [2] + sonarjs/no-same-line-conditional: [2] + sonarjs/no-small-switch: [0] + sonarjs/no-unused-collection: [2] + sonarjs/no-use-of-empty-return-value: [2] + sonarjs/no-useless-catch: [2] + sonarjs/non-existent-operator: [2] + sonarjs/prefer-immediate-return: [0] + sonarjs/prefer-object-literal: [0] + sonarjs/prefer-single-boolean-return: [0] + sonarjs/prefer-while: [2] + sort-imports: [0] + sort-keys: [0] + sort-vars: [0] + space-before-blocks: [2, always] + space-in-parens: [2, never] + space-infix-ops: [2] + space-unary-ops: [2] + spaced-comment: [2, always] + strict: [0] + switch-colon-spacing: [2] + symbol-description: [2] + template-curly-spacing: [2, never] + template-tag-spacing: [2, never] + unicode-bom: [2, never] + unicorn/better-regex: [0] + unicorn/catch-error-name: [0] + unicorn/consistent-destructuring: [2] + unicorn/consistent-function-scoping: [2] + unicorn/custom-error-definition: [0] + unicorn/empty-brace-spaces: [2] + unicorn/error-message: [0] + unicorn/escape-case: [0] + unicorn/expiring-todo-comments: [0] + unicorn/explicit-length-check: [0] + unicorn/filename-case: [0] + unicorn/import-index: [0] + unicorn/import-style: [0] + unicorn/new-for-builtins: [2] + unicorn/no-abusive-eslint-disable: [0] + unicorn/no-array-callback-reference: [0] + unicorn/no-array-for-each: [2] + unicorn/no-array-method-this-argument: [2] + unicorn/no-array-push-push: [2] + unicorn/no-array-reduce: [2] + unicorn/no-await-expression-member: [0] + unicorn/no-console-spaces: [0] + unicorn/no-document-cookie: [2] + unicorn/no-empty-file: [2] + unicorn/no-for-loop: [0] + unicorn/no-hex-escape: [0] + unicorn/no-instanceof-array: [0] + unicorn/no-invalid-remove-event-listener: [2] + unicorn/no-keyword-prefix: [0] + unicorn/no-lonely-if: [2] + unicorn/no-negated-condition: [0] + unicorn/no-nested-ternary: [0] + unicorn/no-new-array: [0] + unicorn/no-new-buffer: [0] + unicorn/no-null: [0] + unicorn/no-object-as-default-parameter: [0] + unicorn/no-process-exit: [0] + unicorn/no-static-only-class: [2] + unicorn/no-thenable: [2] + unicorn/no-this-assignment: [2] + unicorn/no-typeof-undefined: [2] + unicorn/no-unnecessary-await: [2] + unicorn/no-unreadable-array-destructuring: [0] + unicorn/no-unreadable-iife: [2] + unicorn/no-unused-properties: [2] + unicorn/no-useless-fallback-in-spread: [2] + unicorn/no-useless-length-check: [2] + unicorn/no-useless-promise-resolve-reject: [2] + unicorn/no-useless-spread: [2] + unicorn/no-useless-switch-case: [2] + unicorn/no-useless-undefined: [0] + unicorn/no-zero-fractions: [2] + unicorn/number-literal-case: [0] + unicorn/numeric-separators-style: [0] + unicorn/prefer-add-event-listener: [2] + unicorn/prefer-array-find: [2] + unicorn/prefer-array-flat-map: [2] + unicorn/prefer-array-flat: [2] + unicorn/prefer-array-index-of: [2] + unicorn/prefer-array-some: [2] + unicorn/prefer-at: [0] + unicorn/prefer-blob-reading-methods: [2] + unicorn/prefer-code-point: [0] + unicorn/prefer-date-now: [2] + unicorn/prefer-default-parameters: [0] + unicorn/prefer-dom-node-append: [2] + unicorn/prefer-dom-node-dataset: [0] + unicorn/prefer-dom-node-remove: [2] + unicorn/prefer-dom-node-text-content: [2] + unicorn/prefer-event-target: [2] + unicorn/prefer-export-from: [0] + unicorn/prefer-includes: [2] + unicorn/prefer-json-parse-buffer: [0] + unicorn/prefer-keyboard-event-key: [2] + unicorn/prefer-logical-operator-over-ternary: [2] + unicorn/prefer-math-trunc: [2] + unicorn/prefer-modern-dom-apis: [0] + unicorn/prefer-modern-math-apis: [2] + unicorn/prefer-module: [2] + unicorn/prefer-native-coercion-functions: [2] + unicorn/prefer-negative-index: [2] + unicorn/prefer-node-protocol: [2] + unicorn/prefer-number-properties: [0] + unicorn/prefer-object-from-entries: [2] + unicorn/prefer-object-has-own: [0] + unicorn/prefer-optional-catch-binding: [2] + unicorn/prefer-prototype-methods: [0] + unicorn/prefer-query-selector: [0] + unicorn/prefer-reflect-apply: [0] + unicorn/prefer-regexp-test: [2] + unicorn/prefer-set-has: [0] + unicorn/prefer-set-size: [2] + unicorn/prefer-spread: [0] + unicorn/prefer-string-replace-all: [0] + unicorn/prefer-string-slice: [0] + unicorn/prefer-string-starts-ends-with: [2] + unicorn/prefer-string-trim-start-end: [2] + unicorn/prefer-switch: [0] + unicorn/prefer-ternary: [0] + unicorn/prefer-text-content: [2] + unicorn/prefer-top-level-await: [0] + unicorn/prefer-type-error: [0] + unicorn/prevent-abbreviations: [0] + unicorn/relative-url-style: [2] + unicorn/require-array-join-separator: [2] + unicorn/require-number-to-fixed-digits-argument: [2] + unicorn/require-post-message-target-origin: [0] + unicorn/string-content: [0] + unicorn/switch-case-braces: [0] + unicorn/template-indent: [2] + unicorn/text-encoding-identifier-case: [0] + unicorn/throw-new-error: [2] + use-isnan: [2] + valid-typeof: [2, {requireStringLiterals: true}] + vars-on-top: [0] + wc/attach-shadow-constructor: [2] + wc/define-tag-after-class-definition: [0] + wc/expose-class-on-global: [0] + wc/file-name-matches-element: [2] + wc/guard-define-call: [0] + wc/guard-super-call: [2] + wc/max-elements-per-file: [0] + wc/no-child-traversal-in-attributechangedcallback: [2] + wc/no-child-traversal-in-connectedcallback: [2] + wc/no-closed-shadow-root: [2] + wc/no-constructor-attributes: [2] + wc/no-constructor-params: [2] + wc/no-constructor: [2] + wc/no-customized-built-in-elements: [2] + wc/no-exports-with-element: [0] + wc/no-invalid-element-name: [2] + wc/no-invalid-extends: [2] + wc/no-method-prefixed-with-on: [2] + wc/no-self-class: [2] + wc/no-typos: [2] + wc/require-listener-teardown: [2] + wc/tag-name-matches-class: [2] + wrap-iife: [2, inside] + wrap-regex: [0] + yield-star-spacing: [2, after] + yoda: [2, never] diff --git a/.gitattributes b/.gitattributes index e218bbe25d..467b8a47b5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,10 +1,10 @@ * text=auto eol=lf *.tmpl linguist-language=Handlebars -*.pb.go linguist-generated /assets/*.json linguist-generated /public/assets/img/svg/*.svg linguist-generated /templates/swagger/v1_json.tmpl linguist-generated -/options/fileicon/** linguist-generated /vendor/** -text -eol linguist-vendored +/web_src/fomantic/build/** linguist-generated +/web_src/fomantic/_site/globals/site.variables linguist-language=Less /web_src/js/vendor/** -text -eol linguist-vendored Dockerfile.* linguist-language=Dockerfile diff --git a/.gitea/issue_template.md b/.gitea/issue_template.md index cf173a67ca..9ad186cca7 100644 --- a/.gitea/issue_template.md +++ b/.gitea/issue_template.md @@ -3,7 +3,7 @@ + Please check the following: 1. Make sure you are targeting the `main` branch, pull requests on release branches are only allowed for backports. 2. Make sure you have read contributing guidelines: https://github.com/go-gitea/gitea/blob/main/CONTRIBUTING.md . -3. For documentations contribution, please go to https://gitea.com/gitea/docs -4. Describe what your pull request does and which issue you're targeting (if any). -5. It is recommended to enable "Allow edits by maintainers", so maintainers can help more easily. -6. Your input here will be included in the commit message when this PR has been merged. If you don't want some content to be included, please separate them with a line like `---`. -7. Delete all these tips before posting. +3. Describe what your pull request does and which issue you're targeting (if any). +4. It is recommended to enable "Allow edits by maintainers", so maintainers can help more easily. +5. Your input here will be included in the commit message when this PR has been merged. If you don't want some content to be included, please separate them with a line like `---`. +6. Delete all these tips before posting. diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000000..ebe95acf53 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,54 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 60 + +# Number of days of inactivity before an Issue or Pull Request with the stale label is closed. +# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. +daysUntilClose: 14 + +# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable +exemptLabels: + - status/blocked + - kind/security + - lgtm/done + - reviewed/confirmed + - priority/critical + - kind/proposal + +# Set to true to ignore issues in a project (defaults to false) +exemptProjects: false + +# Set to true to ignore issues in a milestone (defaults to false) +exemptMilestones: false + +# Label to use when marking as stale +staleLabel: stale + +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had recent activity. + I am here to help clear issues left open even if solved or waiting for more insight. + This issue will be closed if no further activity occurs during the next 2 weeks. + If the issue is still valid just add a comment to keep it alive. + Thank you for your contributions. + +# Comment to post when closing a stale Issue or Pull Request. +closeComment: > + This issue has been automatically closed because of inactivity. + You can re-open it if needed. + +# Limit the number of actions per hour, from 1-30. Default is 30 +limitPerRun: 1 + +# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': +pulls: + daysUntilStale: 60 + daysUntilClose: 60 + markComment: > + This pull request has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs during the next 2 months. Thank you + for your contributions. + closeComment: > + This pull request has been automatically closed because of inactivity. + You can re-open it if needed. diff --git a/.github/workflows/cron-licenses.yml b/.github/workflows/cron-licenses.yml index c34066d318..5de165487c 100644 --- a/.github/workflows/cron-licenses.yml +++ b/.github/workflows/cron-licenses.yml @@ -1,8 +1,8 @@ name: cron-licenses on: - # schedule: - # - cron: "7 0 * * 1" # every Monday at 00:07 UTC + schedule: + - cron: "7 0 * * 1" # every Monday at 00:07 UTC workflow_dispatch: jobs: @@ -11,14 +11,14 @@ jobs: if: github.repository == 'go-gitea/gitea' steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - - run: make generate-gitignore + - run: make generate-license generate-gitignore timeout-minutes: 40 - name: push translations to repo - uses: appleboy/git-push-action@v0.0.3 + uses: appleboy/git-push-action@v0.0.2 with: author_email: "teabot@gitea.io" author_name: GiteaBot diff --git a/.github/workflows/cron-lock.yml b/.github/workflows/cron-lock.yml new file mode 100644 index 0000000000..935f926cce --- /dev/null +++ b/.github/workflows/cron-lock.yml @@ -0,0 +1,22 @@ +name: cron-lock + +on: + schedule: + - cron: "0 0 * * *" # every day at 00:00 UTC + workflow_dispatch: + +permissions: + issues: write + pull-requests: write + +concurrency: + group: lock + +jobs: + action: + runs-on: ubuntu-latest + if: github.repository == 'go-gitea/gitea' + steps: + - uses: dessant/lock-threads@v4 + with: + issue-inactive-days: 45 diff --git a/.github/workflows/cron-translations.yml b/.github/workflows/cron-translations.yml index f1b51debf1..b0effdee9d 100644 --- a/.github/workflows/cron-translations.yml +++ b/.github/workflows/cron-translations.yml @@ -11,23 +11,18 @@ jobs: if: github.repository == 'go-gitea/gitea' steps: - uses: actions/checkout@v4 - - uses: crowdin/github-action@v1 - with: - upload_sources: true - upload_translations: false - download_sources: false - download_translations: true - push_translations: false - push_sources: false - create_pull_request: false - config: crowdin.yml + - name: download from crowdin + uses: docker://jonasfranz/crowdin env: - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} CROWDIN_KEY: ${{ secrets.CROWDIN_KEY }} + PLUGIN_DOWNLOAD: true + PLUGIN_EXPORT_DIR: options/locale/ + PLUGIN_IGNORE_BRANCH: true + PLUGIN_PROJECT_IDENTIFIER: gitea - name: update locales run: ./build/update-locales.sh - name: push translations to repo - uses: appleboy/git-push-action@v0.0.3 + uses: appleboy/git-push-action@v0.0.2 with: author_email: "teabot@gitea.io" author_name: GiteaBot @@ -36,3 +31,19 @@ jobs: commit_message: "[skip ci] Updated translations via Crowdin" remote: "git@github.com:go-gitea/gitea.git" ssh_key: ${{ secrets.DEPLOY_KEY }} + crowdin-push: + runs-on: ubuntu-latest + if: github.repository == 'go-gitea/gitea' + steps: + - uses: actions/checkout@v4 + - name: push translations to crowdin + uses: docker://jonasfranz/crowdin + env: + CROWDIN_KEY: ${{ secrets.CROWDIN_KEY }} + PLUGIN_UPLOAD: true + PLUGIN_EXPORT_DIR: options/locale/ + PLUGIN_IGNORE_BRANCH: true + PLUGIN_PROJECT_IDENTIFIER: gitea + PLUGIN_FILES: | + locale_en-US.ini: options/locale/locale_en-US.ini + PLUGIN_BRANCH: main diff --git a/.github/workflows/disk-clean.yml b/.github/workflows/disk-clean.yml new file mode 100644 index 0000000000..24a9d9216f --- /dev/null +++ b/.github/workflows/disk-clean.yml @@ -0,0 +1,36 @@ +name: disk-clean + +on: + workflow_call: + +jobs: + triage: + runs-on: ubuntu-latest + steps: + # FIXME: https://github.com/jlumbroso/free-disk-space/issues/17 + - name: same as 'large-packages' but without 'google-cloud-sdk' + shell: bash + run: | + sudo apt-get remove -y '^dotnet-.*' + sudo apt-get remove -y '^llvm-.*' + sudo apt-get remove -y 'php.*' + sudo apt-get remove -y '^mongodb-.*' + sudo apt-get remove -y '^mysql-.*' + sudo apt-get remove -y azure-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri + sudo apt-get autoremove -y + sudo apt-get clean + - name: Free Disk Space (Ubuntu) + uses: jlumbroso/free-disk-space@main + with: + # this might remove tools that are actually needed, + # if set to "true" but frees about 6 GB + tool-cache: false + + # all of these default to true, but feel free to set to + # "false" if necessary for your workflow + android: true + dotnet: true + haskell: true + large-packages: false + docker-images: false + swap-storage: true diff --git a/.github/workflows/files-changed.yml b/.github/workflows/files-changed.yml index be27537924..e7039053af 100644 --- a/.github/workflows/files-changed.yml +++ b/.github/workflows/files-changed.yml @@ -35,7 +35,7 @@ jobs: yaml: ${{ steps.changes.outputs.yaml }} steps: - uses: actions/checkout@v4 - - uses: dorny/paths-filter@v3 + - uses: dorny/paths-filter@v2 id: changes with: filters: | @@ -48,23 +48,21 @@ jobs: - "Makefile" - ".golangci.yml" - ".editorconfig" - - "options/locale/locale_en-US.ini" frontend: - - "*.js" - - "*.ts" + - "**/*.js" - "web_src/**" - - "tools/*.js" - - "tools/*.ts" - "assets/emoji.json" - "package.json" - "package-lock.json" - "Makefile" - - ".eslintrc.cjs" + - ".eslintrc.yaml" + - ".stylelintrc.yaml" - ".npmrc" docs: - "**/*.md" + - "docs/**" - ".markdownlint.yaml" - "package.json" - "package-lock.json" @@ -74,7 +72,6 @@ jobs: - "Makefile" templates: - - "tools/lint-templates-*.js" - "templates/**/*.tmpl" - "pyproject.toml" - "poetry.lock" @@ -87,7 +84,6 @@ jobs: swagger: - "templates/swagger/v1_json.tmpl" - - "templates/swagger/v1_input.json" - "Makefile" - "package.json" - "package-lock.json" diff --git a/.github/workflows/pull-compliance.yml b/.github/workflows/pull-compliance.yml index f6720bf2f6..c15983661b 100644 --- a/.github/workflows/pull-compliance.yml +++ b/.github/workflows/pull-compliance.yml @@ -17,9 +17,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - run: make deps-backend deps-tools - run: make lint-backend @@ -32,17 +32,11 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v4 with: - python-version: "3.12" - - uses: actions/setup-node@v4 - with: - node-version: 24 - cache: npm - cache-dependency-path: package-lock.json + python-version: "3.11" - run: pip install poetry - run: make deps-py - - run: make deps-frontend - run: make lint-templates lint-yaml: @@ -51,9 +45,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v4 with: - python-version: "3.12" + python-version: "3.11" - run: pip install poetry - run: make deps-py - run: make lint-yaml @@ -64,11 +58,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v3 with: - node-version: 24 - cache: npm - cache-dependency-path: package-lock.json + node-version: 20 - run: make deps-frontend - run: make lint-swagger @@ -90,12 +82,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - run: make deps-backend deps-tools - - run: make lint-go-windows lint-go-gitea-vet + - run: make lint-go-windows lint-go-vet env: TAGS: bindata sqlite sqlite_unlock_notify GOOS: windows @@ -107,9 +99,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - run: make deps-backend deps-tools - run: make lint-go @@ -122,9 +114,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - run: make deps-backend deps-tools - run: make --always-make checks-backend # ensure the "go-licenses" make target runs @@ -135,11 +127,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v3 with: - node-version: 24 - cache: npm - cache-dependency-path: package-lock.json + node-version: 20 - run: make deps-frontend - run: make lint-frontend - run: make checks-frontend @@ -152,9 +142,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true # no frontend build here as backend should be able to build # even without any frontend files @@ -184,13 +174,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v3 with: - node-version: 24 - cache: npm - cache-dependency-path: package-lock.json + node-version: 20 - run: make deps-frontend - run: make lint-md + - run: make docs actions: if: needs.files-changed.outputs.actions == 'true' || needs.files-changed.outputs.actions == 'true' @@ -198,8 +187,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - check-latest: true + - uses: actions/setup-go@v4 - run: make lint-actions diff --git a/.github/workflows/pull-db-tests.yml b/.github/workflows/pull-db-tests.yml index 55c2d2bf5e..ae7c762da9 100644 --- a/.github/workflows/pull-db-tests.yml +++ b/.github/workflows/pull-db-tests.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest services: pgsql: - image: postgres:14 + image: postgres:15 env: POSTGRES_DB: test POSTGRES_PASSWORD: postgres @@ -31,17 +31,17 @@ jobs: minio: # as github actions doesn't support "entrypoint", we need to use a non-official image # that has a custom entrypoint set to "minio server /data" - image: bitnami/minio:2023.8.31 + image: bitnami/minio:2021.3.17 env: - MINIO_ROOT_USER: 123456 - MINIO_ROOT_PASSWORD: 12345678 + MINIO_ACCESS_KEY: 123456 + MINIO_SECRET_KEY: 12345678 ports: - "9000:9000" steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - name: Add hosts to /etc/hosts run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 pgsql ldap minio" | sudo tee -a /etc/hosts' @@ -67,9 +67,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - run: make deps-backend - run: make backend @@ -91,6 +91,13 @@ jobs: needs: files-changed runs-on: ubuntu-latest services: + mysql: + image: mysql:5.7 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: true + MYSQL_DATABASE: test + ports: + - "3306:3306" elasticsearch: image: elasticsearch:7.5.0 env: @@ -98,11 +105,18 @@ jobs: ports: - "9200:9200" meilisearch: - image: getmeili/meilisearch:v1 + image: getmeili/meilisearch:v1.2.0 env: MEILI_ENV: development # disable auth ports: - "7700:7700" + smtpimap: + image: tabascoterrier/docker-imap-devel:latest + ports: + - "25:25" + - "143:143" + - "587:587" + - "993:993" redis: image: redis options: >- # wait until redis has started @@ -119,18 +133,14 @@ jobs: MINIO_SECRET_KEY: 12345678 ports: - "9000:9000" - devstoreaccount1.azurite.local: # https://github.com/Azure/Azurite/issues/1583 - image: mcr.microsoft.com/azure-storage/azurite:latest - ports: - - 10000:10000 steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - name: Add hosts to /etc/hosts - run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 minio devstoreaccount1.azurite.local mysql elasticsearch meilisearch smtpimap" | sudo tee -a /etc/hosts' + run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mysql elasticsearch meilisearch smtpimap" | sudo tee -a /etc/hosts' - run: make deps-backend - run: make backend env: @@ -148,21 +158,18 @@ jobs: RACE_ENABLED: true GITHUB_READ_TOKEN: ${{ secrets.GITHUB_READ_TOKEN }} - test-mysql: + test-mysql5: if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true' needs: files-changed runs-on: ubuntu-latest services: mysql: - # the bitnami mysql image has more options than the official one, it's easier to customize - image: bitnami/mysql:8.0 + image: mysql:5.7 env: - ALLOW_EMPTY_PASSWORD: true - MYSQL_DATABASE: testgitea + MYSQL_ALLOW_EMPTY_PASSWORD: true + MYSQL_DATABASE: test ports: - "3306:3306" - options: >- - --mount type=tmpfs,destination=/bitnami/mysql/data elasticsearch: image: elasticsearch:7.5.0 env: @@ -178,9 +185,9 @@ jobs: - "993:993" steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - name: Add hosts to /etc/hosts run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mysql elasticsearch smtpimap" | sudo tee -a /etc/hosts' @@ -191,39 +198,64 @@ jobs: - name: run migration tests run: make test-mysql-migration - name: run tests - # run: make integration-test-coverage (at the moment, no coverage is really handled) - run: make test-mysql + run: make integration-test-coverage env: TAGS: bindata RACE_ENABLED: true USE_REPO_TEST_DIR: 1 TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200" + test-mysql8: + if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true' + needs: files-changed + runs-on: ubuntu-latest + services: + mysql8: + image: mysql:8 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: true + MYSQL_DATABASE: testgitea + ports: + - "3306:3306" + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v4 + with: + go-version: "~1.21" + check-latest: true + - name: Add hosts to /etc/hosts + run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mysql8" | sudo tee -a /etc/hosts' + - run: make deps-backend + - run: make backend + env: + TAGS: bindata + - run: make test-mysql8-migration test-mysql8 + timeout-minutes: 50 + env: + TAGS: bindata + USE_REPO_TEST_DIR: 1 + test-mssql: if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true' needs: files-changed runs-on: ubuntu-latest services: mssql: - image: mcr.microsoft.com/mssql/server:2019-latest + image: mcr.microsoft.com/mssql/server:latest env: ACCEPT_EULA: Y MSSQL_PID: Standard SA_PASSWORD: MwantsaSecurePassword1 ports: - "1433:1433" - devstoreaccount1.azurite.local: # https://github.com/Azure/Azurite/issues/1583 - image: mcr.microsoft.com/azure-storage/azurite:latest - ports: - - 10000:10000 steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - name: Add hosts to /etc/hosts - run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mssql devstoreaccount1.azurite.local" | sudo tee -a /etc/hosts' + run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mssql" | sudo tee -a /etc/hosts' - run: make deps-backend - run: make backend env: diff --git a/.github/workflows/pull-docker-dryrun.yml b/.github/workflows/pull-docker-dryrun.yml index f74277de67..61f1fd5632 100644 --- a/.github/workflows/pull-docker-dryrun.yml +++ b/.github/workflows/pull-docker-dryrun.yml @@ -16,8 +16,8 @@ jobs: needs: files-changed runs-on: ubuntu-latest steps: - - uses: docker/setup-buildx-action@v3 - - uses: docker/build-push-action@v5 + - uses: docker/setup-buildx-action@v2 + - uses: docker/build-push-action@v4 with: push: false tags: gitea/gitea:linux-amd64 @@ -27,8 +27,8 @@ jobs: needs: files-changed runs-on: ubuntu-latest steps: - - uses: docker/setup-buildx-action@v3 - - uses: docker/build-push-action@v5 + - uses: docker/setup-buildx-action@v2 + - uses: docker/build-push-action@v4 with: push: false file: Dockerfile.rootless diff --git a/.github/workflows/pull-e2e-tests.yml b/.github/workflows/pull-e2e-tests.yml index cc3fbd9c34..3fca2bee80 100644 --- a/.github/workflows/pull-e2e-tests.yml +++ b/.github/workflows/pull-e2e-tests.yml @@ -12,22 +12,18 @@ jobs: uses: ./.github/workflows/files-changed.yml test-e2e: - # the "test-e2e" won't pass, and it seems that there is no useful test, so skip - # if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.frontend == 'true' || needs.files-changed.outputs.actions == 'true' - if: false + if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.frontend == 'true' || needs.files-changed.outputs.actions == 'true' needs: files-changed runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v3 with: - node-version: 24 - cache: npm - cache-dependency-path: package-lock.json + node-version: 20 - run: make deps-frontend frontend deps-backend - run: npx playwright install --with-deps - run: make test-e2e-sqlite diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index c2cc14f771..d12b14572f 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -2,7 +2,7 @@ name: release-nightly on: push: - branches: [main, release/v*] + branches: [ main, release/v* ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -10,21 +10,19 @@ concurrency: jobs: nightly-binary: - runs-on: namespace-profile-gitea-release-binary + runs-on: nscloud steps: - uses: actions/checkout@v4 # fetch all commits instead of only the last as some branches are long lived and could have many between versions # fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567 - run: git fetch --unshallow --quiet --tags --force - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v3 with: - node-version: 24 - cache: npm - cache-dependency-path: package-lock.json + node-version: 20 - run: make deps-frontend deps-backend # xgo build - run: make release @@ -32,7 +30,7 @@ jobs: TAGS: bindata sqlite sqlite_unlock_notify - name: import gpg key id: import_gpg - uses: crazy-max/ghaction-import-gpg@v6 + uses: crazy-max/ghaction-import-gpg@v5 with: gpg_private_key: ${{ secrets.GPGSIGN_KEY }} passphrase: ${{ secrets.GPGSIGN_PASSPHRASE }} @@ -47,7 +45,7 @@ jobs: run: | REF_NAME=$(echo "${{ github.ref }}" | sed -e 's/refs\/heads\///' -e 's/refs\/tags\///' -e 's/release\/v//') echo "Cleaned name is ${REF_NAME}" - echo "branch=${REF_NAME}-nightly" >> "$GITHUB_OUTPUT" + echo "branch=${REF_NAME}" >> "$GITHUB_OUTPUT" - name: configure aws uses: aws-actions/configure-aws-credentials@v4 with: @@ -58,20 +56,18 @@ jobs: run: | aws s3 sync dist/release s3://${{ secrets.AWS_S3_BUCKET }}/gitea/${{ steps.clean_name.outputs.branch }} --no-progress nightly-docker-rootful: - runs-on: namespace-profile-gitea-release-docker - permissions: - packages: write # to publish to ghcr.io + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # fetch all commits instead of only the last as some branches are long lived and could have many between versions # fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567 - run: git fetch --unshallow --quiet --tags --force - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 + - uses: docker/setup-qemu-action@v2 + - uses: docker/setup-buildx-action@v2 - name: Get cleaned branch name id: clean_name run: | @@ -83,42 +79,32 @@ jobs: REF_NAME=$(echo "${{ github.ref }}" | sed -e 's/refs\/heads\///' -e 's/refs\/tags\///' -e 's/release\/v//') echo "branch=${REF_NAME}-nightly" >> "$GITHUB_OUTPUT" - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Login to GHCR using PAT - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - name: fetch go modules run: make vendor - name: build rootful docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v4 with: context: . - platforms: linux/amd64,linux/arm64,linux/riscv64 + platforms: linux/amd64,linux/arm64 push: true - tags: |- - gitea/gitea:${{ steps.clean_name.outputs.branch }} - ghcr.io/go-gitea/gitea:${{ steps.clean_name.outputs.branch }} + tags: gitea/gitea:${{ steps.clean_name.outputs.branch }} nightly-docker-rootless: - runs-on: namespace-profile-gitea-release-docker - permissions: - packages: write # to publish to ghcr.io + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # fetch all commits instead of only the last as some branches are long lived and could have many between versions # fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567 - run: git fetch --unshallow --quiet --tags --force - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 + - uses: docker/setup-qemu-action@v2 + - uses: docker/setup-buildx-action@v2 - name: Get cleaned branch name id: clean_name run: | @@ -130,25 +116,17 @@ jobs: REF_NAME=$(echo "${{ github.ref }}" | sed -e 's/refs\/heads\///' -e 's/refs\/tags\///' -e 's/release\/v//') echo "branch=${REF_NAME}-nightly" >> "$GITHUB_OUTPUT" - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Login to GHCR using PAT - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - name: fetch go modules run: make vendor - name: build rootless docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v4 with: context: . platforms: linux/amd64,linux/arm64 push: true file: Dockerfile.rootless - tags: |- - gitea/gitea:${{ steps.clean_name.outputs.branch }}-rootless - ghcr.io/go-gitea/gitea:${{ steps.clean_name.outputs.branch }}-rootless + tags: gitea/gitea:${{ steps.clean_name.outputs.branch }}-rootless diff --git a/.github/workflows/release-tag-rc.yml b/.github/workflows/release-tag-rc.yml index c9c15c31a0..c6472073e4 100644 --- a/.github/workflows/release-tag-rc.yml +++ b/.github/workflows/release-tag-rc.yml @@ -3,7 +3,7 @@ name: release-tag-rc on: push: tags: - - "v1*-rc*" + - 'v1*-rc*' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -11,21 +11,19 @@ concurrency: jobs: binary: - runs-on: namespace-profile-gitea-release-binary + runs-on: nscloud steps: - uses: actions/checkout@v4 # fetch all commits instead of only the last as some branches are long lived and could have many between versions # fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567 - run: git fetch --unshallow --quiet --tags --force - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v3 with: - node-version: 24 - cache: npm - cache-dependency-path: package-lock.json + node-version: 20 - run: make deps-frontend deps-backend # xgo build - run: make release @@ -33,7 +31,7 @@ jobs: TAGS: bindata sqlite sqlite_unlock_notify - name: import gpg key id: import_gpg - uses: crazy-max/ghaction-import-gpg@v6 + uses: crazy-max/ghaction-import-gpg@v5 with: gpg_private_key: ${{ secrets.GPGSIGN_KEY }} passphrase: ${{ secrets.GPGSIGN_PASSPHRASE }} @@ -68,63 +66,49 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} docker-rootful: - runs-on: namespace-profile-gitea-release-docker - permissions: - packages: write # to publish to ghcr.io + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # fetch all commits instead of only the last as some branches are long lived and could have many between versions # fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567 - run: git fetch --unshallow --quiet --tags --force - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 + - uses: docker/setup-qemu-action@v2 + - uses: docker/setup-buildx-action@v2 - uses: docker/metadata-action@v5 id: meta with: - images: |- - gitea/gitea - ghcr.io/go-gitea/gitea + images: gitea/gitea flavor: | latest=false # 1.2.3-rc0 tags: | type=semver,pattern={{version}} - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Login to GHCR using PAT - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - name: build rootful docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v4 with: context: . - platforms: linux/amd64,linux/arm64,linux/riscv64 + platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} docker-rootless: - runs-on: namespace-profile-gitea-release-docker - permissions: - packages: write # to publish to ghcr.io + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # fetch all commits instead of only the last as some branches are long lived and could have many between versions # fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567 - run: git fetch --unshallow --quiet --tags --force - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 + - uses: docker/setup-qemu-action@v2 + - uses: docker/setup-buildx-action@v2 - uses: docker/metadata-action@v5 id: meta with: - images: |- - gitea/gitea - ghcr.io/go-gitea/gitea + images: gitea/gitea # each tag below will have the suffix of -rootless flavor: | latest=false @@ -133,21 +117,15 @@ jobs: tags: | type=semver,pattern={{version}} - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Login to GHCR using PAT - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - name: build rootless docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v4 with: context: . - platforms: linux/amd64,linux/arm64,linux/riscv64 + platforms: linux/amd64,linux/arm64 push: true file: Dockerfile.rootless tags: ${{ steps.meta.outputs.tags }} diff --git a/.github/workflows/release-tag-version.yml b/.github/workflows/release-tag-version.yml index ae717c7cec..a18af78a10 100644 --- a/.github/workflows/release-tag-version.yml +++ b/.github/workflows/release-tag-version.yml @@ -3,9 +3,9 @@ name: release-tag-version on: push: tags: - - "v1.*" - - "!v1*-rc*" - - "!v1*-dev" + - 'v1.*' + - '!v1*-rc*' + - '!v1*-dev' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -13,23 +13,19 @@ concurrency: jobs: binary: - runs-on: namespace-profile-gitea-release-binary - permissions: - packages: write # to publish to ghcr.io + runs-on: nscloud steps: - uses: actions/checkout@v4 # fetch all commits instead of only the last as some branches are long lived and could have many between versions # fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567 - run: git fetch --unshallow --quiet --tags --force - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v4 with: - go-version-file: go.mod + go-version: "~1.21" check-latest: true - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v3 with: - node-version: 24 - cache: npm - cache-dependency-path: package-lock.json + node-version: 20 - run: make deps-frontend deps-backend # xgo build - run: make release @@ -37,7 +33,7 @@ jobs: TAGS: bindata sqlite sqlite_unlock_notify - name: import gpg key id: import_gpg - uses: crazy-max/ghaction-import-gpg@v6 + uses: crazy-max/ghaction-import-gpg@v5 with: gpg_private_key: ${{ secrets.GPGSIGN_KEY }} passphrase: ${{ secrets.GPGSIGN_PASSPHRASE }} @@ -72,65 +68,53 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} docker-rootful: - runs-on: namespace-profile-gitea-release-docker - permissions: - packages: write # to publish to ghcr.io + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # fetch all commits instead of only the last as some branches are long lived and could have many between versions # fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567 - run: git fetch --unshallow --quiet --tags --force - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 + - uses: docker/setup-qemu-action@v2 + - uses: docker/setup-buildx-action@v2 - uses: docker/metadata-action@v5 id: meta with: - images: |- - gitea/gitea - ghcr.io/go-gitea/gitea + images: gitea/gitea # this will generate tags in the following format: # latest # 1 # 1.2 # 1.2.3 tags: | - type=semver,pattern={{version}} type=semver,pattern={{major}} type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{version}} - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Login to GHCR using PAT - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - name: build rootful docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v4 with: context: . - platforms: linux/amd64,linux/arm64,linux/riscv64 + platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} docker-rootless: - runs-on: namespace-profile-gitea-release-docker + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # fetch all commits instead of only the last as some branches are long lived and could have many between versions # fetch all tags to ensure that "git describe" reports expected Gitea version, eg. v1.21.0-dev-1-g1234567 - run: git fetch --unshallow --quiet --tags --force - - uses: docker/setup-qemu-action@v3 - - uses: docker/setup-buildx-action@v3 + - uses: docker/setup-qemu-action@v2 + - uses: docker/setup-buildx-action@v2 - uses: docker/metadata-action@v5 id: meta with: - images: |- - gitea/gitea - ghcr.io/go-gitea/gitea + images: gitea/gitea # each tag below will have the suffix of -rootless flavor: | suffix=-rootless,onlatest=true @@ -140,25 +124,19 @@ jobs: # 1.2 # 1.2.3 tags: | - type=semver,pattern={{version}} type=semver,pattern={{major}} type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{version}} - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Login to GHCR using PAT - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - name: build rootless docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v4 with: context: . - platforms: linux/amd64,linux/arm64,linux/riscv64 + platforms: linux/amd64,linux/arm64 push: true file: Dockerfile.rootless tags: ${{ steps.meta.outputs.tags }} diff --git a/.gitignore b/.gitignore index 0791a17c71..53365ed0b4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,21 +9,12 @@ _test # IntelliJ .idea -.run - -# IntelliJ Gateway -.uuid - # Goland's output filename can not be set manually /go_build_* -/gitea_* # MS VSCode .vscode -__debug_bin* - -# Visual Studio -/.vs/ +__debug_bin *.cgo1.go *.cgo2.c @@ -36,16 +27,19 @@ _testmain.go *.exe *.test *.prof -*.tsbuildinfo *coverage.out coverage.all cpu.out -/modules/migration/bindata.* -/modules/options/bindata.* -/modules/public/bindata.* -/modules/templates/bindata.* +/modules/migration/bindata.go +/modules/migration/bindata.go.hash +/modules/options/bindata.go +/modules/options/bindata.go.hash +/modules/public/bindata.go +/modules/public/bindata.go.hash +/modules/templates/bindata.go +/modules/templates/bindata.go.hash *.db *.log @@ -63,7 +57,7 @@ cpu.out /data /indexers /log -/public/assets/img/avatar +/public/img/avatar /tests/integration/gitea-integration-* /tests/integration/indexers-* /tests/e2e/gitea-e2e-* @@ -82,14 +76,24 @@ cpu.out /public/assets/css /public/assets/fonts /public/assets/licenses.txt +/public/assets/img/webpack /vendor +/web_src/fomantic/node_modules +/web_src/fomantic/build/* +!/web_src/fomantic/build/semantic.js +!/web_src/fomantic/build/semantic.css +!/web_src/fomantic/build/themes +/web_src/fomantic/build/themes/* +!/web_src/fomantic/build/themes/default +/web_src/fomantic/build/themes/default/assets/* +!/web_src/fomantic/build/themes/default/assets/fonts +/web_src/fomantic/build/themes/default/assets/fonts/* +!/web_src/fomantic/build/themes/default/assets/fonts/icons.woff2 +!/web_src/fomantic/build/themes/default/assets/fonts/outline-icons.woff2 /VERSION /.air /.go-licenses -# Files and folders that were previously generated -/public/assets/img/webpack - # Snapcraft /gitea_a*.txt snap/.snapcraft/ @@ -101,9 +105,6 @@ prime/ *_source.tar.bz2 .DS_Store -# nix-direnv generated files -.direnv/ - # Make evidence files /.make_evidence diff --git a/.gitpod.yml b/.gitpod.yml index 8671edc47c..35b22c45ae 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -10,19 +10,10 @@ tasks: - name: Run backend command: | gp sync-await setup - - # Get the URL and extract the domain - url=$(gp url 3000) - domain=$(echo $url | awk -F[/:] '{print $4}') - - if [ -f custom/conf/app.ini ]; then - sed -i "s|^ROOT_URL =.*|ROOT_URL = ${url}/|" custom/conf/app.ini - sed -i "s|^DOMAIN =.*|DOMAIN = ${domain}|" custom/conf/app.ini - sed -i "s|^SSH_DOMAIN =.*|SSH_DOMAIN = ${domain}|" custom/conf/app.ini - sed -i "s|^NO_REPLY_ADDRESS =.*|SSH_DOMAIN = noreply.${domain}|" custom/conf/app.ini - else + if [ ! -f custom/conf/app.ini ] + then mkdir -p custom/conf/ - echo -e "[server]\nROOT_URL = ${url}/" > custom/conf/app.ini + echo -e "[server]\nROOT_URL=$(gp url 3000)/" > custom/conf/app.ini echo -e "\n[database]\nDB_TYPE = sqlite3\nPATH = $GITPOD_REPO_ROOT/data/gitea.db" >> custom/conf/app.ini fi export TAGS="sqlite sqlite_unlock_notify" @@ -42,8 +33,8 @@ vscode: - DavidAnson.vscode-markdownlint - Vue.volar - ms-azuretools.vscode-docker - - vitest.explorer - - cweijan.vscode-database-client2 + - zixuanchen.vitest-explorer + - qwtel.sqlite-viewer - GitHub.vscode-pull-request-github ports: diff --git a/.golangci.yml b/.golangci.yml index 70efd288ff..069dc13c99 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,180 +1,136 @@ -version: "2" -output: - sort-order: - - file linters: - default: none enable: - bidichk + # - deadcode # deprecated - https://github.com/golangci/golangci-lint/issues/1841 - depguard - dupl - errcheck - forbidigo - gocritic + # - gocyclo # The cyclomatic complexety of a lot of functions is too high, we should refactor those another time. + - gofmt + - gofumpt + - gosimple - govet - ineffassign - - mirror - nakedret - nolintlint - - perfsprint - revive - staticcheck - - testifylint + # - structcheck # deprecated - https://github.com/golangci/golangci-lint/issues/1841 + - stylecheck + - typecheck - unconvert - - unparam - unused - - usestdlibvars - - usetesting + # - varcheck # deprecated - https://github.com/golangci/golangci-lint/issues/1841 - wastedassign - settings: - depguard: - rules: - main: - deny: - - pkg: encoding/json - desc: use gitea's modules/json instead of encoding/json - - pkg: github.com/unknwon/com - desc: use gitea's util and replacements - - pkg: io/ioutil - desc: use os or io instead - - pkg: golang.org/x/exp - desc: it's experimental and unreliable - - pkg: code.gitea.io/gitea/modules/git/internal - desc: do not use the internal package, use AddXxx function instead - - pkg: gopkg.in/ini.v1 - desc: do not use the ini package, use gitea's config system instead - - pkg: gitea.com/go-chi/cache - desc: do not use the go-chi cache package, use gitea's cache system - nolintlint: - allow-unused: false - require-explanation: true - require-specific: true - gocritic: - disabled-checks: - - ifElseChain - - singleCaseSwitch # Every time this occurred in the code, there was no other way. - revive: - severity: error - rules: - - name: atomic - - name: bare-return - - name: blank-imports - - name: constant-logical-expr - - name: context-as-argument - - name: context-keys-type - - name: dot-imports - - name: duplicated-imports - - name: empty-lines - - name: error-naming - - name: error-return - - name: error-strings - - name: errorf - - name: exported - - name: identical-branches - - name: if-return - - name: increment-decrement - - name: indent-error-flow - - name: modifies-value-receiver - - name: package-comments - - name: range - - name: receiver-naming - - name: redefines-builtin-id - - name: string-of-int - - name: superfluous-else - - name: time-naming - - name: unconditional-recursion - - name: unexported-return - - name: unreachable-code - - name: var-declaration - - name: var-naming - arguments: - - [] # AllowList - do not remove as args for the rule are positional and won't work without lists first - - [] # DenyList - - - skip-package-name-checks: true # supress errors from underscore in migration packages - staticcheck: - checks: - - all - - -ST1003 - - -ST1005 - - -QF1001 - - -QF1006 - - -QF1008 - testifylint: - disable: - - go-require - - require-error - usetesting: - os-temp-dir: true - exclusions: - generated: lax - presets: - - comments - - common-false-positives - - legacy - - std-error-handling + enable-all: false + disable-all: true + fast: false + +run: + go: "1.21" + timeout: 10m + skip-dirs: + - node_modules + - public + - web_src + +linters-settings: + stylecheck: + checks: ["all", "-ST1005", "-ST1003"] + nakedret: + max-func-lines: 0 + gocritic: + disabled-checks: + - ifElseChain + - singleCaseSwitch # Every time this occurred in the code, there was no other way. + revive: + ignore-generated-header: false + severity: warning + confidence: 0.8 + errorCode: 1 + warningCode: 1 rules: - - linters: - - dupl - - errcheck - - gocyclo - - gosec - - staticcheck - - unparam - path: _test\.go - - linters: - - dupl - - errcheck - - gocyclo - - gosec - path: models/migrations/v - - linters: - - forbidigo - path: cmd - - linters: - - dupl - text: (?i)webhook - - linters: - - gocritic - text: (?i)`ID' should not be capitalized - - linters: - - deadcode - - unused - text: (?i)swagger - - linters: - - staticcheck - text: (?i)argument x is overwritten before first use - - linters: - - gocritic - text: '(?i)commentFormatting: put a space between `//` and comment text' - - linters: - - gocritic - text: '(?i)exitAfterDefer:' - paths: - - node_modules - - public - - web_src - - third_party$ - - builtin$ - - examples$ + - name: blank-imports + - name: context-as-argument + - name: context-keys-type + - name: dot-imports + - name: error-return + - name: error-strings + - name: error-naming + - name: exported + - name: if-return + - name: increment-decrement + - name: var-naming + - name: var-declaration + - name: package-comments + - name: range + - name: receiver-naming + - name: time-naming + - name: unexported-return + - name: indent-error-flow + - name: errorf + - name: duplicated-imports + - name: modifies-value-receiver + gofumpt: + extra-rules: true + lang-version: "1.21" + depguard: + rules: + main: + deny: + - pkg: encoding/json + desc: use gitea's modules/json instead of encoding/json + - pkg: github.com/unknwon/com + desc: use gitea's util and replacements + - pkg: io/ioutil + desc: use os or io instead + - pkg: golang.org/x/exp + desc: it's experimental and unreliable + - pkg: code.gitea.io/gitea/modules/git/internal + desc: do not use the internal package, use AddXxx function instead + - pkg: gopkg.in/ini.v1 + desc: do not use the ini package, use gitea's config system instead + issues: max-issues-per-linter: 0 max-same-issues: 0 -formatters: - enable: - - gofmt - - gofumpt - settings: - gofumpt: - extra-rules: true - exclusions: - generated: lax - paths: - - node_modules - - public - - web_src - - third_party$ - - builtin$ - - examples$ - -run: - timeout: 10m + exclude-rules: + # Exclude some linters from running on tests files. + - path: _test\.go + linters: + - gocyclo + - errcheck + - dupl + - gosec + - unparam + - staticcheck + - path: models/migrations/v + linters: + - gocyclo + - errcheck + - dupl + - gosec + - path: cmd + linters: + - forbidigo + - linters: + - dupl + text: "webhook" + - linters: + - gocritic + text: "`ID' should not be capitalized" + - linters: + - unused + - deadcode + text: "swagger" + - linters: + - staticcheck + text: "argument x is overwritten before first use" + - text: "commentFormatting: put a space between `//` and comment text" + linters: + - gocritic + - text: "exitAfterDefer:" + linters: + - gocritic diff --git a/.ignore b/.ignore index 29912ad5c3..5c945ab981 100644 --- a/.ignore +++ b/.ignore @@ -1,8 +1,9 @@ *.min.css *.min.js /assets/*.json -/options/gitignore -/options/license -/public/assets +/modules/options/bindata.go +/modules/public/bindata.go +/modules/templates/bindata.go /vendor +/public/assets node_modules diff --git a/.mailmap b/.mailmap deleted file mode 100644 index 88ff1591a4..0000000000 --- a/.mailmap +++ /dev/null @@ -1,2 +0,0 @@ -Unknwon -Unknwon 无闻 diff --git a/.markdownlint.yaml b/.markdownlint.yaml index b251ff796c..0af8bcd6fe 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -1,15 +1,17 @@ commands-show-output: false fenced-code-language: false first-line-h1: false -heading-increment: false +header-increment: false line-length: {code_blocks: false, tables: false, stern: true, line_length: -1} no-alt-text: false no-bare-urls: false -no-emphasis-as-heading: false +no-blanks-blockquote: false +no-emphasis-as-header: false no-empty-links: false no-hard-tabs: {code_blocks: false} no-inline-html: false no-space-in-code: false no-space-in-emphasis: false +no-trailing-punctuation: false no-trailing-spaces: {br_spaces: 0} single-h1: false diff --git a/.stylelintrc.yaml b/.stylelintrc.yaml new file mode 100644 index 0000000000..f30d79d71f --- /dev/null +++ b/.stylelintrc.yaml @@ -0,0 +1,221 @@ +plugins: + - stylelint-declaration-strict-value + - stylelint-declaration-block-no-ignored-properties + - stylelint-stylistic + +ignoreFiles: + - "**/*.go" + +overrides: + - files: ["**/chroma/*", "**/codemirror/*", "**/standalone/*", "**/console.css", "font_i18n.css"] + rules: + scale-unlimited/declaration-strict-value: null + - files: ["**/chroma/*", "**/codemirror/*"] + rules: + block-no-empty: null + - files: ["**/*.vue"] + customSyntax: postcss-html + +rules: + alpha-value-notation: null + annotation-no-unknown: true + at-rule-allowed-list: null + at-rule-disallowed-list: null + at-rule-empty-line-before: null + at-rule-no-unknown: true + at-rule-no-vendor-prefix: true + at-rule-property-required-list: null + block-no-empty: true + color-function-notation: null + color-hex-alpha: null + color-hex-length: null + color-named: null + color-no-hex: null + color-no-invalid-hex: true + comment-empty-line-before: null + comment-no-empty: true + comment-pattern: null + comment-whitespace-inside: null + comment-word-disallowed-list: null + custom-media-pattern: null + custom-property-empty-line-before: null + custom-property-no-missing-var-function: true + custom-property-pattern: null + declaration-block-no-duplicate-custom-properties: true + declaration-block-no-duplicate-properties: [true, {ignore: [consecutive-duplicates-with-different-values]}] + declaration-block-no-redundant-longhand-properties: null + declaration-block-no-shorthand-property-overrides: null + declaration-block-single-line-max-declarations: null + declaration-empty-line-before: null + declaration-no-important: null + declaration-property-max-values: null + declaration-property-unit-allowed-list: null + declaration-property-unit-disallowed-list: {line-height: [em]} + declaration-property-value-allowed-list: null + declaration-property-value-disallowed-list: null + declaration-property-value-no-unknown: true + font-family-name-quotes: always-where-recommended + font-family-no-duplicate-names: true + font-family-no-missing-generic-family-keyword: true + font-weight-notation: null + function-allowed-list: null + function-calc-no-unspaced-operator: true + function-disallowed-list: null + function-linear-gradient-no-nonstandard-direction: true + function-name-case: lower + function-no-unknown: null + function-url-no-scheme-relative: null + function-url-quotes: always + function-url-scheme-allowed-list: null + function-url-scheme-disallowed-list: null + hue-degree-notation: null + import-notation: string + keyframe-block-no-duplicate-selectors: true + keyframe-declaration-no-important: true + keyframe-selector-notation: null + keyframes-name-pattern: null + length-zero-no-unit: true + max-nesting-depth: null + media-feature-name-allowed-list: null + media-feature-name-disallowed-list: null + media-feature-name-no-unknown: true + media-feature-name-no-vendor-prefix: true + media-feature-name-unit-allowed-list: null + media-feature-name-value-allowed-list: null + media-feature-name-value-no-unknown: true + media-feature-range-notation: null + media-query-no-invalid: true + named-grid-areas-no-invalid: true + no-descending-specificity: null + no-duplicate-at-import-rules: true + no-duplicate-selectors: true + no-empty-source: true + no-invalid-double-slash-comments: true + no-invalid-position-at-import-rule: null + no-irregular-whitespace: true + no-unknown-animations: null + no-unknown-custom-properties: null + number-max-precision: null + plugin/declaration-block-no-ignored-properties: true + property-allowed-list: null + property-disallowed-list: null + property-no-unknown: true + property-no-vendor-prefix: null + rule-empty-line-before: null + rule-selector-property-disallowed-list: null + scale-unlimited/declaration-strict-value: [[color, background-color, border-color, font-weight], {ignoreValues: /^(inherit|transparent|unset|initial|currentcolor|none)$/, ignoreFunctions: false, disableFix: true}] + selector-attribute-name-disallowed-list: null + selector-attribute-operator-allowed-list: null + selector-attribute-operator-disallowed-list: null + selector-attribute-quotes: always + selector-class-pattern: null + selector-combinator-allowed-list: null + selector-combinator-disallowed-list: null + selector-disallowed-list: null + selector-id-pattern: null + selector-max-attribute: null + selector-max-class: null + selector-max-combinators: null + selector-max-compound-selectors: null + selector-max-id: null + selector-max-pseudo-class: null + selector-max-specificity: null + selector-max-type: null + selector-max-universal: null + selector-nested-pattern: null + selector-no-qualifying-type: null + selector-no-vendor-prefix: true + selector-not-notation: null + selector-pseudo-class-allowed-list: null + selector-pseudo-class-disallowed-list: null + selector-pseudo-class-no-unknown: true + selector-pseudo-element-allowed-list: null + selector-pseudo-element-colon-notation: double + selector-pseudo-element-disallowed-list: null + selector-pseudo-element-no-unknown: true + selector-type-case: lower + selector-type-no-unknown: [true, {ignore: [custom-elements]}] + shorthand-property-no-redundant-values: true + string-no-newline: true + stylistic/at-rule-name-case: null + stylistic/at-rule-name-newline-after: null + stylistic/at-rule-name-space-after: null + stylistic/at-rule-semicolon-newline-after: null + stylistic/at-rule-semicolon-space-before: null + stylistic/block-closing-brace-empty-line-before: null + stylistic/block-closing-brace-newline-after: null + stylistic/block-closing-brace-newline-before: null + stylistic/block-closing-brace-space-after: null + stylistic/block-closing-brace-space-before: null + stylistic/block-opening-brace-newline-after: null + stylistic/block-opening-brace-newline-before: null + stylistic/block-opening-brace-space-after: null + stylistic/block-opening-brace-space-before: null + stylistic/color-hex-case: lower + stylistic/declaration-bang-space-after: never + stylistic/declaration-bang-space-before: null + stylistic/declaration-block-semicolon-newline-after: null + stylistic/declaration-block-semicolon-newline-before: null + stylistic/declaration-block-semicolon-space-after: null + stylistic/declaration-block-semicolon-space-before: never + stylistic/declaration-block-trailing-semicolon: null + stylistic/declaration-colon-newline-after: null + stylistic/declaration-colon-space-after: null + stylistic/declaration-colon-space-before: never + stylistic/function-comma-newline-after: null + stylistic/function-comma-newline-before: null + stylistic/function-comma-space-after: null + stylistic/function-comma-space-before: null + stylistic/function-max-empty-lines: 0 + stylistic/function-parentheses-newline-inside: never-multi-line + stylistic/function-parentheses-space-inside: null + stylistic/function-whitespace-after: null + stylistic/indentation: 2 + stylistic/linebreaks: null + stylistic/max-empty-lines: 1 + stylistic/max-line-length: null + stylistic/media-feature-colon-space-after: null + stylistic/media-feature-colon-space-before: never + stylistic/media-feature-name-case: null + stylistic/media-feature-parentheses-space-inside: null + stylistic/media-feature-range-operator-space-after: always + stylistic/media-feature-range-operator-space-before: always + stylistic/media-query-list-comma-newline-after: null + stylistic/media-query-list-comma-newline-before: null + stylistic/media-query-list-comma-space-after: null + stylistic/media-query-list-comma-space-before: null + stylistic/no-empty-first-line: null + stylistic/no-eol-whitespace: true + stylistic/no-extra-semicolons: true + stylistic/no-missing-end-of-source-newline: null + stylistic/number-leading-zero: null + stylistic/number-no-trailing-zeros: null + stylistic/property-case: lower + stylistic/selector-attribute-brackets-space-inside: null + stylistic/selector-attribute-operator-space-after: null + stylistic/selector-attribute-operator-space-before: null + stylistic/selector-combinator-space-after: null + stylistic/selector-combinator-space-before: null + stylistic/selector-descendant-combinator-no-non-space: null + stylistic/selector-list-comma-newline-after: null + stylistic/selector-list-comma-newline-before: null + stylistic/selector-list-comma-space-after: always-single-line + stylistic/selector-list-comma-space-before: never-single-line + stylistic/selector-max-empty-lines: 0 + stylistic/selector-pseudo-class-case: lower + stylistic/selector-pseudo-class-parentheses-space-inside: never + stylistic/selector-pseudo-element-case: lower + stylistic/string-quotes: double + stylistic/unicode-bom: null + stylistic/unit-case: lower + stylistic/value-list-comma-newline-after: null + stylistic/value-list-comma-newline-before: null + stylistic/value-list-comma-space-after: null + stylistic/value-list-comma-space-before: null + stylistic/value-list-max-empty-lines: 0 + time-min-milliseconds: null + unit-allowed-list: null + unit-disallowed-list: null + unit-no-unknown: true + value-keyword-case: null + value-no-vendor-prefix: [true, {ignoreValues: [box, inline-box]}] diff --git a/CHANGELOG-archived.md b/CHANGELOG-archived.md deleted file mode 100644 index e0551d39a6..0000000000 --- a/CHANGELOG-archived.md +++ /dev/null @@ -1,5223 +0,0 @@ -# Changelog (archived) - -This changelog (archived) contains changes for old releases. - -* Recent changelogs: [CHANGELOG.md](CHANGELOG.md) -* Release blogs with highlights: [blog.gitea.com](https://blog.gitea.com). - -## [1.15.11](https://github.com/go-gitea/gitea/releases/tag/v1.15.11) - 2022-01-29 - -* SECURITY - * Only view milestones from current repo (#18414) (#18418) -* BUGFIXES - * Fix broken when no commits and default branch is not master (#18422) (#18424) - * Fix commit's time (#18375) (#18409) - * Fix restore without topic failure (#18387) (#18401) - * Fix mermaid import in 1.15 (it uses ESModule now) (#18382) - * Update to go/text 0.3.7 (#18336) -* MISC - * Upgrade EasyMDE to 2.16.1 (#18278) (#18279) - -## [1.15.10](https://github.com/go-gitea/gitea/releases/tag/v1.15.10) - 2022-01-14 - -* BUGFIXES - * Fix inconsistent PR comment counts (#18260) (#18261) - * Fix release link broken (#18252) (#18253) - * Fix update user from site administration page bug (#18250) (#18251) - * Set HeadCommit when creating tags (#18116) (#18173) - * Use correct translation key for error messages due to max repo limits (#18135 & #18153) (#18152) - * Fix purple color in suggested label colors (#18241) (#18242) -* SECURITY - * Bump mermaid from 8.10.1 to 8.13.8 (#18198) (#18206) - -## [1.15.9](https://github.com/go-gitea/gitea/releases/tag/v1.15.9) - 2021-12-30 - -* BUGFIXES - * Fix wrong redirect on org labels (#18128) (#18134) - * Fix: unstable sort skips/duplicates issues across pages (#18094) (#18095) - * Revert "Fix delete u2f keys bug (#18042)" (#18107) - * Migrating wiki don't require token, so we should move it out of the require form (#17645) (#18104) - * Prevent NPE if gitea uploader fails to open url (#18080) (#18101) - * Reset locale on login (#17734) (#18100) - * Correctly handle failed migrations (#17575) (#18099) - * Instead of using routerCtx just escape the url before routing (#18086) (#18098) - * Quote references to the user table in consistency checks (#18072) (#18073) - * Add NotFound handler (#18062) (#18067) - * Ensure that git repository is closed before transfer (#18049) (#18057) - * Use common sessioner for API and web routes (#18114) -* TRANSLATION - * Fix code search result hint on zh-CN (#18053) - -## [1.15.8](https://github.com/go-gitea/gitea/releases/tag/v1.15.8) - 2021-12-20 - -* BUGFIXES - * Move POST /{username}/action/{action} to simply POST /{username} (#18045) (#18046) - * Fix delete u2f keys bug (#18040) (#18042) - * Reset Session ID on login (#18018) (#18041) - * Prevent off-by-one error on comments on newly appended lines (#18029) (#18035) - * Stop printing 03d after escaped characters in logs (#18030) (#18034) - * Reset locale on login (#18023) (#18025) - * Fix reset password email template (#17025) (#18022) - * Fix outType on gitea dump (#18000) (#18016) - * Ensure complexity, minlength and isPwned are checked on password setting (#18005) (#18015) - * Fix rename notification bug (#18011) - * Prevent double decoding of % in url params (#17997) (#18001) - * Prevent hang in git cat-file if the repository is not a valid repository (Partial #17991) (#17992) - * Prevent deadlock in create issue (#17970) (#17982) -* TESTING - * Use non-expiring key. (#17984) (#17985) - -## [1.15.7](https://github.com/go-gitea/gitea/releases/tag/v1.15.7) - 2021-12-01 - -* ENHANCEMENTS - * Only allow webhook to send requests to allowed hosts (#17482) (#17510) - * Fix login redirection links (#17451) (#17473) -* BUGFIXES - * Fix database inconsistent when admin change user email (#17549) (#17840) - * Use correct user on releases (#17806) (#17818) - * Fix commit count in tag view (#17698) (#17790) - * Fix close issue but time watcher still running (#17643) (#17761) - * Fix Migrate Description (#17692) (#17727) - * Fix bug when project board get open issue number (#17703) (#17726) - * Return 400 but not 500 when request archive with wrong format (#17691) (#17700) - * Fix bug when read mysql database max lifetime (#17682) (#17690) - * Fix database deadlock when update issue labels (#17649) (#17665) - * Fix bug on detect issue/comment writer (#17592) - * Remove appSubUrl from pasted images (#17572) (#17588) - * Make `ParsePatch` more robust (#17573) (#17580) - * Fix stats upon searching issues (#17566) (#17578) - * Escape issue titles in comments list (#17555) (#17556) - * Fix zero created time bug on commit api (#17546) (#17547) - * Fix database keyword quote problem on migration v161 (#17522) (#17523) - * Fix email with + when active (#17518) (#17520) - * Stop double encoding blame commit messages (#17498) (#17500) - * Quote the table name in CountOrphanedObjects (#17487) (#17488) - * Run Migrate in Install rather than just SyncTables (#17475) (#17486) -* BUILD - * Fix golangci-lint warnings (#17598 et al) (#17668) -* MISC - * Preserve color when inverting emojis (#17797) (#17799) - -## [1.15.6](https://github.com/go-gitea/gitea/releases/tag/v1.15.6) - 2021-10-28 - -* BUGFIXES - * Prevent panic in serv.go with Deploy Keys (#17434) (#17435) - * Fix CSV render error (#17406) (#17431) - * Read expected buffer size (#17409) (#17430) - * Ensure that restricted users can access repos for which they are members (#17460) (#17464) - * Make commit-statuses popup show correctly (#17447) (#17466) -* TESTING - * Add integration tests for private.NoServCommand and private.ServCommand (#17456) (#17463) - -## [1.15.5](https://github.com/go-gitea/gitea/releases/tag/v1.15.5) - 2021-10-21 - -* SECURITY - * Upgrade Bluemonday to v1.0.16 (#17372) (#17374) - * Ensure correct SSH permissions check for private and restricted users (#17370) (#17373) -* BUGFIXES - * Prevent NPE in CSV diff rendering when column removed (#17018) (#17377) - * Offer rsa-sha2-512 and rsa-sha2-256 algorithms in internal SSH (#17281) (#17376) - * Don't panic if we fail to parse U2FRegistration data (#17304) (#17371) - * Ensure popup text is aligned left (backport for 1.15) (#17343) - * Ensure that git daemon export ok is created for mirrors (#17243) (#17306) - * Disable core.protectNTFS (#17300) (#17302) - * Use pointer for wrappedConn methods (#17295) (#17296) - * AutoRegistration is supposed to be working with disabled registration (backport) (#17292) - * Handle duplicate keys on GPG key ring (#17242) (#17284) - * Fix SVG side by side comparison link (#17375) (#17391) - -## [1.15.4](https://github.com/go-gitea/gitea/releases/tag/v1.15.4) - 2021-10-08 - -* BUGFIXES - * Raw file API: don't try to interpret 40char filenames as commit SHA (#17185) (#17272) - * Don't allow merged PRs to be reopened (#17192) (#17271) - * Fix incorrect repository count on organization tab of dashboard (#17256) (#17266) - * Fix unwanted team review request deletion (#17257) (#17264) - * Fix broken Activities link in team dashboard (#17255) (#17258) - * API pull's head/base have correct permission(#17214) (#17245) - * Fix strange behavior of DownloadPullDiffOrPatch in incorrect index (#17223) (#17227) - * Upgrade xorm to v1.2.5 (#17177) (#17188) - * Fix missing repo link in issue/pull assigned emails (#17183) (#17184) - * Fix bug of get context user (#17169) (#17172) - * Nicely handle missing user in collaborations (#17049) (#17166) - * Add Horizontal scrollbar to inner menu on Chrome (#17086) (#17164) - * Fix wrong i18n keys (#17150) (#17153) - * Fix Archive Creation: correct transaction ending (#17151) - * Prevent panic in Org mode HighlightCodeBlock (#17140) (#17141) - * Create doctor command to fix repo_units broken by dumps from 1.14.3-1.14.6 (#17136) (#17137) -* ENHANCEMENT - * Check user instead of organization when creating a repo from a template via API (#16346) (#17195) -* TRANSLATION - * v1.15 fix Sprintf format 'verbs' in locale files (#17187) - -## [1.15.3](https://github.com/go-gitea/gitea/releases/tag/v1.15.3) - 2021-09-19 - -* ENHANCEMENTS - * Add fluid to ui container class to remove margin (#16396) (#16976) - * Add caller to cat-file batch calls (#17082) (#17089) -* BUGFIXES - * Render full plain readme. (#17083) (#17090) - * Upgrade xorm to v1.2.4 (#17059) - * Fix bug of migrate comments which only fetch one page (#17055) (#17058) - * Do not show issue context popup on external issues (#17050) (#17054) - * Decrement Fork Num when converting from Fork (#17035) (#17046) - * Correctly rollback in ForkRepository (#17034) (#17045) - * Fix missing close in WalkGitLog (#17008) (#17009) - * Add prefix to SVG id/class attributes (#16997) (#17000) - * Fix bug of migrated repository not index (#16991) (#16996) - * Skip AllowedUserVisibilityModes validation on update user if it is an organisation (#16988) (#16990) - * Fix storage Iterate bug and Add storage doctor to delete garbage attachments (#16971) (#16977) - * Fix issue with issue default mail template (#16956) (#16975) - * Ensure that rebase conflicts are handled in updates (#16952) (#16960) - * Prevent panic on diff generation (#16950) (#16951) - -## [1.15.2](https://github.com/go-gitea/gitea/releases/tag/v1.15.2) - 2021-09-03 - -* BUGFIXES - * Add unique constraint back into issue_index (#16938) - * Close storage objects before cleaning (#16934) (#16942) - -## [1.15.1](https://github.com/go-gitea/gitea/releases/tag/v1.15.1) - 2021-09-02 - -* BUGFIXES - * Allow BASIC authentication access to /:owner/:repo/releases/download/* (#16916) (#16923) - * Prevent leave changes dialogs due to autofill fields (#16912) (#16920) - * Ignore review comment when ref commit is missed (#16905) (#16919) - * Fix wrong attachment removal (#16915) (#16917) - * Gitlab Migrator: dont ignore reactions of last request (#16903) (#16913) - * Correctly return the number of Repositories for Organizations (#16807) (#16911) - * Test if LFS object is accessible (#16865) (#16904) - * Fix git.Blob.DataAsync(): close pipe since we return a NopCloser (#16899) (#16900) - * Fix dump and restore repository (#16698) (#16898) - * Repare and Improve GetDiffRangeWithWhitespaceBehavior (#16894) (#16895) - * Fix wiki raw commit diff/patch view (#16891) (#16892) - * Ensure wiki repos are all closed (#16886) (#16888) - * List limited and private orgs if authenticated on API (#16866) (#16879) - * Simplify split diff view generation and remove JS dependency (#16775) (#16863) - * Ensure that the default visibility is set on the user create page (#16845) (#16862) - * In Render tolerate not being passed a context (#16842) (#16858) - * Upgrade xorm to v1.2.2 (#16663) & Add test to ensure that dumping of login sources remains correct (#16847) (#16848) - * Report the correct number of pushes on the feeds (#16811) (#16822) - * Add primary_key to issue_index (#16813) (#16820) - * Prevent NPE on empty commit (#16812) (#16819) - * Fix branch pagination error (#16805) (#16816) - * Add missing return to handleSettingRemoteAddrError (#16794) (#16795) - * Remove spurious / from issues.opened_by (#16793) - * Ensure that template compilation panics are sent to the logs (#16788) (#16792) - * Update caddyserver/certmagic (#16789) (#16790) - -## [1.15.0](https://github.com/go-gitea/gitea/releases/tag/v1.15.0) - 2021-08-21 - -* BREAKING - * Make app.ini permissions more restrictive (#16266) - * Refactor Webhook + Add X-Hub-Signature (#16176) - * Add asymmetric JWT signing (#16010) - * Clean-up the settings hierarchy for issue_indexer queue (#16001) - * Change default queue settings to be low go-routines (#15964) - * Improve assets handler middleware (#15961) - * Rename StaticUrlPrefix to AssetUrlPrefix (#15779) - * Use a generic markup class to display externally rendered files and diffs (#15735) - * Add frontend testing, require node 12 (#15315) - * Move (custom) assets into subpath `/assets` (#15219) - * Use level config in log section when sub log section not set level (#15176) - * Links in markdown should be absolute to the repository not the server (#15088) - * Upgrade to the latest version of golang-jwt (#16590) (#16606) - * Set minimum supported version of go to 1.16 (#16710) -* SECURITY - * Encrypt LDAP bind password in db with SECRET_KEY (#15547) - * Remove random password in Dockerfiles (#15362) - * Upgrade to the latest version of golang-jwt and increase minimum go to 1.15 (#16590) (#16606) - * Correctly create of git-daemon-export-ok files (#16508) (#16514) - * Don't show private user's repo in explore view (#16550) (#16554) - * Update node tar dependency to 6.1.6 (#16622) (#16623) -* FEATURES - * Update Go-Git to take advantage of LargeObjectThreshold (#16316) - * Support custom mime type mapping for text files (#16304) - * Link to previous blames in file blame page (#16259) - * Add LRU mem cache implementation (#16226) - * Localize Email Templates (#16200) - * Make command in authorized keys a template (#16003) - * Add possibility to make branch in branch page (#15960) - * Add email headers (#15939) - * Make tasklist checkboxes clickable (#15791) - * Add selecting tags on the compare page (#15723) - * Add cron job to delete old actions from database (#15688) - * On open repository open common cat file batch and batch-check (#15667) - * Add tag protection (#15629) - * Add push to remote mirror repository (#15157) - * Add Image Diff for SVG files (#14867) - * Add dashboard milestone search and repo milestone search by name. (#14866) - * Add LFS Migration and Mirror (#14726) - * Improve notifications for WIP draft PR's (#14663) - * Disable Stars config option (#14653) - * GPG Key Ownership verification with Signed Token (#14054) - * OAuth2 auto-register (#5123) -* API - * Return updated repository when changing repository using API (#16420) - * Let branch/tag name be a valid ref to get CI status (#16400) - * Add endpoint to get commits of PR (#16300) - * Allow COMMENT reviews to not specify a body (#16229) - * Add subject-type filter to list notification API endpoints (#16177) - * ListReleases add filter for draft and pre-releases (#16175) - * ListIssues add more filters (#16174) - * Issue Search Add filter for MilestoneNames (#16173) - * GET / SET User Settings (#16169) - * Expose repo.GetReviewers() & repo.GetAssignees() (#16168) - * User expose counters (#16167) - * Add repoGetTag (#16166) - * Add repoCreateTag (#16165) - * Creating a repo from a template repo via API (#15958) - * Add Active and ProhibitLogin to API (#15689) - * Add Location, Website and Description to API (#15675) - * Expose resolver via API (#15167) - * Swagger AccessToken fixes (#16574) (#16597) - * Set AllowedHeaders on API CORS handler (#16524) (#16618) -* ENHANCEMENTS - * Support HTTP/2 in Let's Encrypt (#16371) - * Introduce NotifySubjectType (#16320) - * Add forge emojies (#16296) - * Implemented head_commit for webhooks (#16282) - * Upgrade Gliderlabs SSH to 0.3.3 and add FailedConnectionCallback (#16278) - * Add previous/next buttons to review comments (#16273) - * Review comments: break-word for long file names (#16272) - * Add configuration to restrict allowed user visibility modes (#16271) - * Add scroll-margin-top to account for sticky header (#16269) - * Add --quiet and --verbose to gitea web to control initial logging (#16260) - * Use gitea logging module for git module (#16243) - * Add tests for all webhooks (#16214) - * Add button to delete undeleted repositories from failed migrations (#16197) - * Speed up git diff highlight generation (#16180) - * Add OpenID claims "profile" and "email". (#16141) - * Reintroduce squash merge default comment as a config setting (#16134) - * Add sanitizer rules per renderer (#16110) - * Improve performance of dashboard list orgs (#16099) - * Refactor assert statements in tests (#16089) - * Add sso.Group, context.Auth, context.APIAuth to allow auth special routes (#16086) - * Remove unnecessary goroutine (#16080) - * Add attachments for PR reviews (#16075) - * Make the github migration less rate limit waiting to get comment per page from repository but not per issue (#16070) - * Add Visible modes function from Organisation to Users too (#16069) - * Add checkbox to delete pull branch after successful merge (#16049) - * Make commit info cancelable (#16032) - * Make modules/context.Context a context.Context (#16031) - * Unified custom config creation (#16012) - * Make sshd_config more flexible regarding connections (#16009) - * Append to existing trailers in generated squash commit message (#15980) - * Always store primary email address into email_address table and also the state (#15956) - * Load issue/PR context popup data only when needed (#15955) - * Remove remaining fontawesome usage in templates (#15952) - * Remove fomantic accordion module (#15951) - * Small refactoring of modules/private (#15947) - * Double the avatar size factor (#15941) - * Add curl to rootless docker image (#15908) - * Replace clipboard.js with async clipboard api (#15899) - * Allow custom highlight mapping beyond file extensions (#15808) - * Add trace logging to SSO methods (#15803) - * Refactor routers directory (#15800) - * Allow only internal registration (#15795) - * Add a new internal hook to save ssh log (#15787) - * Respect default merge message syntax when parsing item references (#15772) - * OAuth2 login: Set account link to "login" as default behavior (#15768) - * Use single shared random string generation function (#15741) - * Hold the event source when there are no listeners (#15725) - * Code comments improvements (#15722) - * Provide OIDC compliant user info endpoint (#15721) - * Fix webkit calendar icon color on arc-green (#15713) - * Improve Light Chroma style (#15699) - * Only use boost workers for leveldb shadow queues (#15696) - * Add compare tag dropdown to releases page (#15695) - * Add caret styling CSS (#15651) - * Remove x-ua-compatible meta tag (#15640) - * Refactor of link creation (#15619) - * Add a new table issue_index to store the max issue index so that issue could be deleted with no duplicated index (#15599) - * Rewrite of the LFS server (#15523) - * Display more repository type on admin repository management (#15440) - * Remove usage of some JS globals (#15378) - * SHA in merged commit comment should be rendered ui sha (#15376) - * Add well-known config for OIDC (#15355) - * Use route rather than use thus reducing the number of stack frames (#15301) - * Code Formats, Nits & Unused Func/Var deletions (#15286) - * Let package git depend on setting but not opposite (#15241) - * Fixed sanitize errors (#15240) - * response simple text message for not html request when 404 (#15229) - * Remove file-loader dependency (#15196) - * Refactor renders (#15175) - * Add mimetype mapping settings (#15133) - * Add Status Updates whilst Gitea migrations are occurring (#15076) - * Reload locales in initialisation if needed by utilizing i18n.Reset (#15073) - * Counterwork seemingly unclickable repo button labels (#15064) - * Add DefaultMergeStyle option to repository (#14789) - * Added support for gopher URLs. (#14749) - * Rework repository archive (#14723) - * Add links to toggle WIP status (#14677) - * Add Tabular Diff for CSV files (#14661) - * Use milestone deadline when sorting issues (#14551) -* BUGFIXES - * Fix invalid params and typo of email templates (#16394) - * Fix activation of primary email addresses (#16385) - * Fix calculation for finalPage in repo-search component (#16382) - * Specify user in rootless container numerically (#16361) - * Detect encoding changes while parsing diff (#16330) - * Fix U2F error reasons always hidden (#16327) - * Prevent zombie processes (#16314) - * Escape reference to `user` table in models.SearchEmails (#16313) - * Fix default push instructions on empty repos (#16302) - * Fix modified files list in webhooks when there is a space (#16288) - * Fix webhook commits wrong hash on HEAD reset (#16283) - * Fuzzer finds an NPE due to incorrect URLPrefix (#16249) - * Don't WARN log UserNotExist errors on ExternalUserLogin failure (#16238) - * Do not show No match found for tribute (#16231) - * Fix "Copy Link" for pull requests (#16230) - * Fix diff expansion is missing final line in a file (#16222) - * Fix private repo permission problem (#16142) - * Fix not able to update local created non-urlencoded wiki pages (#16139) - * More efficiently parse shas for shaPostProcessor (#16101) - * Fix `doctor --run check-db-consistency --fix` with label fix (#16094) - * Prevent webhook action buttons from shifting (#16087) - * Change default TMPDIR path in rootless containers (#16077) - * Fix typo and add TODO notice (#16064) - * Use git log name-status in get last commit (#16059) - * Fix 500 Error with branch and tag sharing the same name (#16040) - * Fix get tag when migration (#16014) - * Add custom emoji support (#16004) - * Use filepath.ToSlash and Join in indexer defaults and queues (#15971) - * Add permission check for ``GenerateRepository`` (#15946) - * Ensure settings for Service and Mailer are read on the install page (#15943) - * Fix layout of milestone view (#15927) - * Unregister non-matching serviceworkers (#15834) - * Multiple Queue improvements: LevelDB Wait on empty, shutdown empty shadow level queue, reduce goroutines etc (#15693) - * Attachment support repository route (#15580) - * Fix missing icons and colorpicker when mounted on suburl (#15501) - * Create a session on ReverseProxy and ensure that ReverseProxy users cannot change username (#15304) - * Prevent double-login for Git HTTP and LFS and simplify login (#15303) - * Resolve Object { type: "error", data: undefined } in stopwatch.js (#15278) - * Fix heatmap activity (#15252) - * Remove vendored copy of fomantic-dropdown (#15193) - * Update repository size on cron gc task (#15177) - * Add NeedPostProcess for Parser interface to improve performance of csv parser and some external parser (#15153) - * Add code block highlight to orgmode back (#14222) - * Remove User.GetOrganizations() (#14032) - * Restore Accessibility for Dropdown (#16576) (#16617) - * Pass down SignedUserName down to AccessLogger context (#16605) (#16616) - * Fix table alignment in markdown (#16596) (#16602) - * Fix 500 on first wiki page (#16586) (#16598) - * Lock goth/gothic and Re-attempt OAuth2 registration on login if registration failed at startup (#16564) (#16570) - * Upgrade levelqueue to v0.4.0 (#16560) (#16561) - * Handle too long PR titles correctly (#16517) (#16549) - * Fix data race in bleve indexer (#16474) (#16509) - * Restore CORS on git smart http protocol (#16496) (#16506) - * Fix race in log (#16490) (#16505) - * Fix prepareWikiFileName to respect existing unescaped files (#16487) (#16498) - * Make cancel from CatFileBatch and CatFileBatchCheck wait for the command to end (#16479) (#16480) - * Update notification table with only latest data (#16445) (#16469) - * Fix crash following ldap authentication update (#16447) (#16448) - * Fix direct creation of external users on admin page (partial #16612) (#16613) - * Prevent 500 on draft releases without tag (#16634) (#16636) - * Restore creation of git-daemon-export-ok files (#16508) (#16514) - * Fix data race in bleve indexer (#16474) (#16509) - * Restore CORS on git smart http protocol (#16496) (#16506) - * Fix race in log (#16490) (#16505) - * Fix prepareWikiFileName to respect existing unescaped files (#16487) (#16498) - * Make cancel from CatFileBatch and CatFileBatchCheck wait for the command to end (#16479) (#16480) - * Update notification table with only latest data (#16445) (#16469) - * Fix crash following ldap authentication update (#16447) (#16448) - * Restore compatibility with SQLServer 2008 R2 in migrations (#16638) - * Fix direct creation of external users on admin page (#16613) - * Fix go-git implementation of GetNote when passed a non-existent commit (#16658) (#16659) - * Fix NPE in fuzzer (#16680) (#16682) - * Set issue_index when finishing migration (#16685) (#16687) - * Skip patch download when no patch file exists (#16356) (#16681) - * Ensure empty lines are copiable and final new line too (#16678) (#16692) - * Fix wrong user in OpenID response (#16736) (#16741) - * Do not use thin scrollbars on Firefox (#16738) (#16745) - * Recreate Tables should Recreate indexes on MySQL (#16718) (#16739) - * Keep attachments on tasklist update (#16750) (#16757) -* TESTING - * Bump `postgres` and `mysql` versions (#15710) - * Add tests for clone from wiki (#15513) - * Fix Benchmark tests, remove a broken one & add two new (#15250) - * Create Proper Migration tests (#15116) -* TRANSLATION - * Use a special name for update default branch on repository setting (#15893) - * Fix mirror_lfs source string in en-US locale (#15369) -* BUILD - * Upgrade xorm to v1.1.1 (#16339) - * Disable legal comments in esbuild (#15929) - * Switch to Node 16 to build fronted (#15804) - * Use esbuild to minify CSS (#15756) - * Use binary version of revive linter (#15739) - * Fix: npx webpack make: *** [Makefile:699: public/js/index.js] Error -… (#15465) - * Stop packaging node_modules in release tarballs (#15273) - * Introduce esbuild on webpack (#14578) -* DOCS - * Update queue workers documentation (#15999) - * Comment out app.example.ini (#15807) - * Improve logo customization docs (#15754) - * Add some response status on api docs (#15399) - * Rework Token API comments (#15162) - * Add better errors for disabled account recovery (#15117) -* MISC - * Remove utf8 option from installation page (#16126) - * Use Wants= over Requires= in systemd file (#15897) - -## [1.14.7](https://github.com/go-gitea/gitea/releases/tag/v1.14.7) - 2021-09-02 - -* BUGFIXES - * Add missing gitRepo close at GetDiffRangeWithWhitespaceBehavior (Partial #16894) (#16896) - * Fix wiki raw commit diff/patch view (#16891) (#16893) - * Ensure wiki repos are all closed (#16886) (#16889) - * Upgrade xorm to v1.2.2 (#16663) & Add test to ensure that dumping of login sources remains correct (#16847) (#16849) - * Recreate Tables should Recreate indexes on MySQL (#16718) (#16740) - -## [1.14.6](https://github.com/go-gitea/gitea/releases/tag/v1.14.6) - 2021-08-04 - -* SECURITY - * Bump github.com/markbates/goth from v1.67.1 to v1.68.0 (#16538) (#16540) - * Switch to maintained JWT lib (#16532) (#16535) - * Upgrade to latest version of golang-jwt (as forked for 1.14) (#16590) (#16607) -* BUGFIXES - * Add basic edit ldap auth test & actually fix #16252 (#16465) (#16495) - * Make cancel from CatFileBatch and CatFileBatchCheck wait for the command to end (#16479) (#16481) - -## [1.14.5](https://github.com/go-gitea/gitea/releases/tag/v1.14.5) - 2021-07-16 - -* SECURITY - * Hide mirror passwords on repo settings page (#16022) (#16355) - * Update bluemonday to v1.0.15 (#16379) (#16380) -* BUGFIXES - * Retry rename on lock induced failures (#16435) (#16439) - * Validate issue index before querying DB (#16406) (#16410) - * Fix crash following ldap authentication update (#16447) (#16449) -* ENHANCEMENTS - * Redirect on bad CSRF instead of presenting bad page (#14937) (#16378) - -## [1.14.4](https://github.com/go-gitea/gitea/releases/tag/v1.14.4) - 2021-07-06 - -* BUGFIXES - * Fix relative links in postprocessed images (#16334) (#16340) - * Fix list_options GetStartEnd (#16303) (#16305) - * Fix API to use author for commits instead of committer (#16276) (#16277) - * Handle misencoding of login_source cfg in mssql (#16268) (#16275) - * Fixed issues not updated by commits (#16254) (#16261) - * Improve efficiency in FindRenderizableReferenceNumeric and getReference (#16251) (#16255) - * Use html.Parse rather than html.ParseFragment (#16223) (#16225) - * Fix milestone counters on new issue (#16183) (#16224) - * reqOrgMembership calls need to be preceded by reqToken (#16198) (#16219) - -## [1.14.3](https://github.com/go-gitea/gitea/releases/tag/v1.14.3) - 2021-06-18 - -* SECURITY - * Encrypt migration credentials at rest (#15895) (#16187) - * Only check access tokens if they are likely to be tokens (#16164) (#16171) - * Add missing SameSite settings for the i_like_gitea cookie (#16037) (#16039) - * Fix setting of SameSite on cookies (#15989) (#15991) -* API - * Repository object only count releases as releases (#16184) (#16190) - * EditOrg respect RepoAdminChangeTeamAccess option (#16184) (#16190) - * Fix overly strict edit pr permissions (#15900) (#16081) -* BUGFIXES - * Run processors on whole of text (#16155) (#16185) - * Class `issue-keyword` is being incorrectly stripped off spans (#16163) (#16172) - * Fix language switch for install page (#16043) (#16128) - * Fix bug on getIssueIDsByRepoID (#16119) (#16124) - * Set self-adjusting deadline for connection writing (#16068) (#16123) - * Fix http path bug (#16117) (#16120) - * Fix data URI scramble (#16098) (#16118) - * Merge all deleteBranch as one function and also fix bug when delete branch don't close related PRs (#16067) (#16097) - * git migration: don't prompt interactively for clone credentials (#15902) (#16082) - * Fix case change in ownernames (#16045) (#16050) - * Don't manipulate input params in email notification (#16011) (#16033) - * Remove branch URL before IssueRefURL (#15968) (#15970) - * Fix layout of milestone view (#15927) (#15940) - * GitHub Migration, migrate draft releases too (#15884) (#15888) - * Close the gitrepo when deleting the repository (#15876) (#15887) - * Upgrade xorm to v1.1.0 (#15869) (#15885) - * Fix blame row height alignment (#15863) (#15883) - * Fix error message when saving generated LOCAL_ROOT_URL config (#15880) (#15882) - * Backport Fix LFS commit finder not working (#15856) (#15874) - * Stop calling WriteHeader in Write (#15862) (#15873) - * Add timeout to writing to responses (#15831) (#15872) - * Return go-get info on subdirs (#15642) (#15871) - * Restore PAM user autocreation functionality (#15825) (#15867) - * Fix truncate utf8 string (#15828) (#15854) - * Fix bound address/port for caddy's certmagic library (#15758) (#15848) - * Upgrade unrolled/render to v1.1.1 (#15845) (#15846) - * Queue manager FlushAll can loop rapidly - add delay (#15733) (#15840) - * Tagger can be empty, as can Commit and Author - tolerate this (#15835) (#15839) - * Set autocomplete off on branches selector (#15809) (#15833) - * Add missing error to Doctor log (#15813) (#15824) - * Move restore repo to internal router and invoke from command to avoid open the same db file or queues files (#15790) (#15816) -* ENHANCEMENTS - * Removable media support to snap package (#16136) (#16138) - * Move sans-serif fallback font higher than emoji fonts (#15855) (#15892) -* DOCKER - * Only write config in environment-to-ini if there are changes (#15861) (#15868) - * Only offer hostcertificates if they exist (#15849) (#15853) - -## [1.14.2](https://github.com/go-gitea/gitea/releases/tag/v1.14.2) - 2021-05-09 - -* API - * Make change repo settings work on empty repos (#15778) (#15789) - * Add pull "merged" notification subject status to API (#15344) (#15654) -* BUGFIXES - * Ensure that ctx.Written is checked after issues(...) calls (#15797) (#15798) - * Use pulls in commit graph unless pulls are disabled (#15734 & #15740 & #15774) (#15775) - * Set GIT_DIR correctly if it is not set (#15751) (#15769) - * Fix bug where repositories appear unadopted (#15757) (#15767) - * Not show `ref-in-new-issue` pop when issue was disabled (#15761) (#15765) - * Drop back to use IsAnInteractiveSession for SVC (#15749) (#15762) - * Fix setting version table in dump (#15753) (#15759) - * Fix close button change on delete in simplemde area (#15737) (#15747) - * Defer closing the gitrepo until the end of the wrapped context functions (#15653) (#15746) - * Fix some ui bug about draft release (#15137) (#15745) - * Only log Error on getLastCommitStatus error to let pull list still be visible (#15716) (#15715) - * Move tooltip down to allow selection of Remove File on error (#15672) (#15714) - * Fix setting redis db path (#15698) (#15708) - * Fix DB session cleanup (#15697) (#15700) - * Fixed several activation bugs (#15473) (#15685) - * Delete references if repository gets deleted (#15681) (#15684) - * Fix orphaned objects deletion bug (#15657) (#15683) - * Delete protected branch if repository gets removed (#15658) (#15676) - * Remove spurious set name from eventsource.sharedworker.js (#15643) (#15652) - * Not update updated uinx for `git gc` (#15637) (#15641) - * Fix commit graph author link (#15627) (#15630) - * Fix webhook timeout bug (#15613) (#15621) - * Resolve panic on failed interface conversion in migration v156 (#15604) (#15610) - * Fix missing storage init (#15589) (#15598) - * If the default branch is not present do not report error on stats indexing (#15546 & #15583) (#15594) - * Fix lfs management find (#15537) (#15578) - * Fix NPE on view commit with notes (#15561) (#15573) - * Fix bug on commit graph (#15517) (#15530) - * Send size to /avatars if requested (#15459) (#15528) - * Prevent migration 156 failure if tag commit missing (#15519) (#15527) -* ENHANCEMENTS - * Display conflict-free merge messages for pull requests (#15773) (#15796) - * Exponential Backoff for ByteFIFO (#15724) (#15793) - * Issue list alignment tweaks (#15483) (#15766) - * Implement delete release attachments and update release attachments' name (#14130) (#15666) - * Add placeholder text to deploy key textarea (#15575) (#15576) - * Project board improvements (#15429) (#15560) - * Repo branch page: label size, PR ref, new PR button alignment (#15363) (#15365) -* MISC - * Fix webkit calendar icon color on arc-green (#15713) (#15728) - * Performance improvement for last commit cache and show-ref (#15455) (#15701) - * Bump unrolled/render to v1.1.0 (#15581) (#15608) - * Add ETag header (#15370) (#15552) - -## [1.14.1](https://github.com/go-gitea/gitea/releases/tag/v1.14.1) - 2021-04-15 - -* BUGFIXES - * Fix bug clone wiki (#15499) (#15502) - * Github Migration ignore rate limit, if not enabled (#15490) (#15495) - * Use subdir for URL (#15446) (#15493) - * Query the DB for the hash before inserting in to email_hash (#15457) (#15491) - * Ensure review dismissal only dismisses the correct review (#15477) (#15489) - * Use index of the supported tags to choose user lang (#15452) (#15488) - * Fix wrong file link in code search page (#15466) (#15486) - * Quick template fix for built-in SSH server in admin config (#15464) (#15481) - * Prevent superfluous response.WriteHeader (#15456) (#15476) - * Fix ambiguous argument error on tags (#15432) (#15474) - * Add created_unix instead of expiry to migration (#15458) (#15463) - * Fix repository search (#15428) (#15442) - * Prevent NPE on avatar direct rendering if federated avatars disabled (#15434) (#15439) - * Fix wiki clone urls (#15430) (#15431) - * Fix dingtalk icon url at webhook (#15417) (#15426) - * Standardise icon on projects PR page (#15387) (#15408) -* ENHANCEMENTS - * Add option to skip LFS/attachment files for `dump` (#15407) (#15492) - * Clone panel fixes (#15436) - * Use semantic dropdown for code search query type (#15276) (#15364) -* BUILD - * Build go-git variants for windows (#15482) (#15487) - * Lock down build-images dependencies (Partial #15479) (#15480) -* MISC - * Performance improvement for list pull requests (#15447) (#15500) - * Fix potential copy lfs records failure when fork a repository (#15441) (#15485) - -## [1.14.0](https://github.com/go-gitea/gitea/releases/tag/v1.14.0) - 2021-04-11 - -* SECURITY - * Respect approved email domain list for externally validated user registration (#15014) - * Add reverse proxy configuration support for remote IP address detection (#14959) - * Ensure validation occurs on clone addresses too (#14994) - * Fix several render issues highlighted during fuzzing (#14986) -* BREAKING - * Fix double 'push tag' action feed (#15078) (#15083) - * Remove possible resource leak (#15067) (#15082) - * Handle unauthorized user events gracefully (#15071) (#15074) - * Restore Access.log following migration to Chi framework (Stops access logging of /api/internal routes) (#14475) - * Migrate from Macaron to Chi framework (#14293) - * Deprecate building for mips (#14174) - * Consolidate Logos and update README header (#14136) - * Inline manifest.json (#14038) - * Store repository data in data path if not previously set (#13991) - * Rename "gitea" png to "logo" (#13974) - * Standardise logging of failed authentication attempts in internal SSH (#13962) - * Add markdown support in organization description (#13549) - * Improve users management through the CLI (#6001) (#10492) -* FEATURES - * Create a new issue with reference to lines of code from file view (#14863) - * Repository transfer has to be confirmed, if user can not create repo for new owner (#14792) - * Allow blocking some email domains from registering an account (#14667) - * Create a new issue based on reference to an issue comment (#14366) - * Add support to migrate from gogs (#14342) - * Add pager to the branches page (#14202) - * Minimal OpenID Connect implementation (#14139) - * Display current stopwatch in navbar (#14122) - * Display SVG files as images instead of text (#14101) - * Disable SSH key deletion of externally managed Keys (#13985) - * Add support for ed25519_sk and ecdsa_sk SSH keys (#13462) - * Add support for Mastodon OAuth2 provider (#13293) - * Add gitea sendmail command (#13079) - * Create DB session provider(based on xorm) (#13031) - * Add dismiss review feature (#12674) - * Make manual merge autodetection optional and add manual merge as merge method (#12543) - * Dump github/gitlab/gitea repository data to a local directory and restore to gitea (#12244) - * Create Rootless Docker image (#10154) -* API - * Speedup issue search (#15179) (#15192) - * Get pull, return head branch sha, even if deleted (#14931) - * Export LFS & TimeTracking function status (#14753) - * Show Gitea version in swagger (#14654) - * Fix PATCH /repos/{owner}/{repo} panic (#14637) - * Add Restricted Field to User (#14630) - * Add support for ref parameter to get raw file API (#14602) - * Add affected files of commits to commit struct (#14579) - * Fix CJK fonts again and misc. font issues (#14575) - * Add delete release by tag & delete tag (#14563) & (#13358) - * Add pagination to ListBranches (#14524) - * Add signoff option in commit form (#14516) - * GetRelease by tag only return release (#14397) - * Add MirrorInterval to the API (#14163) - * Make BasicAuth Prefix case insensitive (#14106) - * Add user filter to issueTrackedTimes, enable usage for issue managers (#14081) - * Add ref to create/edit issue options & deprecated assignee (#13992) - * Add Ref to Issue (#13946) - * Expose default theme in meta and API (#13809) - * Send error message when CSRF token is missing (#13676) - * List, Check, Add & delete endpoints for repository teams (#13630) - * Admin EditUser: Make FullName, Email, Website & Location optional (#13562) - * Add more filters to issues search (#13514) - * Add review request api (#11355) -* BUGFIXES - * Fix delete nonexist oauth application 500 and prevent deadlock (#15384) (#15396) - * Always set the merge base used to merge the commit (#15352) (#15385) - * Upgrade to bluemonday 1.0.7 (#15379) (#15380) - * Turn RepoRef and RepoAssignment back into func(*Context) (#15372) (#15377) - * Move FCGI req.URL.Path fix-up to the FCGI listener (#15292) (#15361) - * Show diff on rename with diff changes (#15338) (#15339) - * Fix handling of logout event (#15323) (#15337) - * Fix CanCreateRepo check (#15311) (#15321) - * Fix xorm log stack level (#15285) (#15316) - * Fix bug in Wrap (#15302) (#15309) - * Drop the event source if we are unauthorized (#15275) (#15280) - * Backport Fix graph pagination (#15225) (#15249) - * Prevent NPE in CommentMustAsDiff if no hunk header (#15199) (#15200) - * should run RetrieveRepoMetas() for empty pr (#15187) (#15190) - * Move setting to enable closing issue via commit in non default branch to repo settings (#14965) - * Show correct issues for team dashboard (#14952) - * Ensure that new pull request button works on forked forks owned by owner of the root and reduce ambiguity (#14932) - * Only allow issue labels from owner repository or organization (#14928) - * Fix alignment of People and Teams right arrow on org homepage (#14924) - * Fix overdue marking of closed issues and milestones (#14923) - * Prevent panic when empty MilestoneID in repo/issue/list (#14911) - * Fix migration context data (#14910) - * Handle URLs with trailing slash (#14852) - * Add CORS config on to /login/oauth/access_token endpoint (#14850) - * Make searching issues by keyword case insensitive on DB (#14848) - * Prevent use of double sub-path and incorrect asset path in manifest (#14827) - * Fix link account ui (#14763) - * Fix preview status switch button on wiki editor (#14742) - * Fix github download on migration (#14703) - * Fix svg spacing (#14638) - * Prevent adding nil label to .AddedLabels or .RemovedLabels (#14623) - * Truncated organizations name (#14615) - * Exclude the current dump file from the dump (#14606) - * Use OldRef instead of CommitSHA for DeleteBranch comments (#14604) - * Ensure memcache caching works when TTL greater than 30 days (#14592) - * Remove NULs byte arrays passed to PostProcess (#14587) - * Restore detection of branches are equal on compare page (#14586) - * Fix incorrect key name so registerManualConfirm works (#14455) - * Fix close/reopen with comment (#14436) - * Allow passcode invalid error to appear (#14371) - * Escape branch names in compare url (#14364) - * Label and milestone webhooks on issue/pull creation (#14363) - * Handle NotifyCreateRef as create branch in feeds (#14245) - * Prevent clipping input text in Chrome + Segoe UI Font (#14179) - * Fix UI on edit auth source page (#14137) - * Fix git.parseTagData (#14105) - * Refactor get tag to remove unnecessary steps (#14058) - * Fix integrations test error with space in CURDIR path (#14056) - * Dropdown triangle fixes (#14028) - * Fix label of --id in admin delete user (#14005) - * Cause NotifyMigrateRepository to emit a repo create webhook (#14004) - * Update HEAD to match defaultBranch in template generation (#13948) - * Fix action avatar loading (#13909) - * Fix issue participants (#13893) - * Fix avatar template error (#13833) - * Fix review request notification email links when external issue tracker is enabled (#13723) - * Fix blame line alignment (#13542) - * Include OriginalAuthor in Reaction constraint (#13505) - * Comments on review should have the same sha (#13448) - * Fix whitespace rendering in diff (#13415) - * Fixed git args duplication (#13411) - * Fix bug on release publisherid migrations (#13410) - * Fix --port setting (#13288) - * Keep database transactions not too big (#13254) - * Git version check, ignore pre-releases constraints (#13234) - * Handle and propagate errors when checking if paths are Dirs, Files or Exist (#13186) - * Update Mirror IsEmpty status on synchronize (#13185) - * Use GO variable in go-check target (#13146) (#13147) -* ENHANCEMENTS - * UI style improvements - * Dropzone styling improvements (#15291) (#15374) - * Add size to Save function (#15264) (#15270) - * Monaco improvements (#15333) (#15345) - * Support .mailmap in code activity stats (#15009) - * Sort release attachments by name (#15008) - * Add ui.explore settings to control view of explore pages (#14094) - * Make internal SSH server host key path configurable (#14918) - * Hide resync all ssh principals when using internal ssh server (#14904) - * Add SameSite setting for cookies (#14900) - * Move Bleve and Elastic code indexers to use a common cat-file --batch (#14781) - * Add environment-to-ini to docker image (#14762) - * Add preview support for wiki editor when disable simpleMDE (#14757) - * Add easyMDE(simpleMDE) support for release content editor (#14744) - * Organization removal confirmation using name not password (#14738) - * Make branch names in PR description clickable (#14716) - * Add Password Algorithm option to install page (#14701) - * Add fullTextSearch to dropdowns by default (#14694) - * Fix truncated organization names (#14655) - * Whitespace in commits (#14650) - * Sort / move project boards (#14634) - * Make fileheader sticky in diffs (#14616) - * Add helper descriptions on new repo page (#14591) - * Move the stopwatches to the eventsource stream (#14588) - * Add Content-Length header to HEAD requests (#14542) - * Add Image Diff options in Diff view (#14450) - * Improve Description in new/ edit Project template (#14429) - * Allow ssh-keygen on Windows to detect ssh key type (#14413) - * Display error if twofaSecret cannot be retrieved (#14372) - * Sort issue search results by relevance (#14353) - * Implement ghost comment mitigation (#14349) - * Upgrade blevesearch dependency to v2.0.1 (#14346) - * Add edit, delete and reaction support to code review comments on issue page (#14339) - * Merge default and system webhooks under one menu (#14244) - * Add option for administrator to reset user 2FA (#14243) - * Add option to change username to the admin panel (#14229) - * Check for 'main' as potential default branch name (#14193) - * Project: show referenced PRs in issue cards (#14183) - * Use caddy's certmagic library for extensible/robust ACME handling (#14177) - * CLI support for OAuth sources custom icons (#14166) - * Custom icons for OAuth sources (#14161) - * Team dashboards (#14159) - * KanBan: be able to set default board (#14147) - * Disable Fomantic's custom scrollbars (#14109) - * Add UI to delete tracked times (#14100) - * Rework heatmap permissions (#14080) - * Issue and pull request filters on organization dashboard (#14072) - * Fix webhook list styling (#14001) - * Show dropdown with all statuses for commit (#13977) - * Show status check for merged PRs (#13975) - * Diff stat improvements (#13954) - * Report permissions denied in internal SSH (#13953) - * Markdown task list improvements (#13952) - * Heatmap days clickable (#13935) - * chore: use octicon-mirror for feeds display (#13928) - * Move diff split code into own template file (#13919) - * Markdown: Enable wrapping in code blocks and a color tweak (#13894) - * Do not reload page after adding comments in Pull Request reviews (#13877) - * Add pull request manually merge instruction (#13840) - * add thumbnail preview section to issue attachments (#13826) - * Move Repo APIFormat to convert package (#13787) - * Move notification APIFormat (#13783) - * Swap swagger-ui with swagger-ui-dist (#13777) - * User Settings: Ignore empty language codes & validate (#13755) - * Improve migrate page and add card CSS (#13751) - * Add block on official review requests branch protection (#13705) - * Add review requested filter on pull request overview (#13701) - * Use chronological commit order in default squash message (#13696) - * Clickable links in pull request (and issue) titles (#13695) - * Support shortened commit SHAs in URLs (#13686) - * Use native git variants by default with go-git variants as build tag (#13673) - * Don't render dropdown when only 1 merge style is available (#13670) - * Move webhook type from int to string (#13664) - * Direct avatar rendering (#13649) - * Verify password for local-account activation (#13631) - * Prevent clone protocol button flash on page load (#13626) - * Remove fetch request from heatmap (#13623) - * Refactor combine label comments with tests (#13619) - * Move metrics from macaron to chi (#13601) - * Issue and Pulls lists rework (#13594) - * HTTP cache rework and enable caching for storage assets (#13569) - * Use mount but not register for chi routes (#13555) - * Use monaco for the git hook editor (#13552) - * Make heatmap colors more distinct (#13533) - * Lazy-load issue reviewers and assignees avatars (#13526) - * Change search and filter icons to SVG (#13473) - * Create tag on ui (#13467) - * updateSize when create a repo with init commit (#13441) - * Added title and action buttons to Project view page (#13437) - * Override fomantic monospace fonts and set size (#13435) - * Rework focused comment styling (#13434) - * Tags cleanup (#13428) - * Various style tweaks (#13418) - * Refactor push update (#13381) - * Comment box tweaks and SVG dropdown triangles (#13376) - * Various style fixes (#13372) - * Change repo home page icons to SVG (#13364) - * Use CSS Vars for primary color (#13361) - * Refactor image paste code (#13354) - * Switch from SimpleMDE to EasyMDE (#13333) - * Group Label Changed Comments in timeline (#13304) - * Make the logger an interface (#13294) - * Fix PR/Issue titles on mobile (#13292) - * Rearrange the order of the merged by etc. in locale (#13284) - * Replace footer and modal icons with SVG (#13245) - * Issues overview should not show issues from archived repos (#13220) - * Show stale label for stale code comment which is marked as resolved (#13213) - * Use CSS Variables for fonts, remove postcss-loader (#13204) - * Add mentionable teams to tributeValues and change team mention rules to gh's style (#13198) - * Move install pages out of main macaron routes (#13195) - * Update outdated label to use Fomantic UI style (#13181) - * Added option to disable webhooks (#13176) - * Change order of possible-owner organizations to alphabetical (#13160) - * Log IP on SSH authentication failure for Built-in SSH server (#13150) - * Added option to disable migrations (#13114) - * New "Add Mirror" Button in the Organization view (#13105) - * Manually approve new registration (#13083) - * Cron job to cleanup hook_task table (#13080) - * Use the headline comment of pull-request as the squash commit's message (#13071) - * Clarify the suffices and prefixes of setting.AppSubURL and setting.AppURL (#12999) - * Slightly simplify the queue settings code to help reduce the risk of problems (#12976) - * Add precise search type for Elastic Search (#12869) - * Move APIFormat functions into convert package (#12856) - * Multiple GitGraph improvements: Exclude PR heads, Add branch/PR links, Show only certain branches, (#12766) - * Add TrN for repository limit (#12492) - * Refactor doctor (#12264) - * Add the tag list page to the release page (#12096) - * Redirect on changed user and org name (#11649) - * load U2F js only on pages which need it (#11585) - * Make archival asynchronous (#11296) - * Introduce go chi web framework as frontend of macaron, so that we can move routes from macaron to chi step by step (#7420) - * Improve vfsgen to not unzip bindata files but send to browser directly (#7109) - * Enhance release list (#6025) -* DOCS - * Swagger show models by default (#14880) - * Add missing repo.projects unit into swagger (#14876) - * Update docs and comments to remove macaron (#14491) - * Issue template addition: Are you using Gitea behind CloudFlare? (#14098) - * Generate man pages (#13901) - * Reformat/fine-tune docs (#13897) - * Added Table of Contents to long documentation pages (#13890) - * Add docs command (#13429) - * Update external-renderers.en-us.md (#13165) -* MISC - * Add builds for apple M1 (darwin arm64) (#14951) - * Migrate to use jsoniter instead of encoding/json (#14841) - * Reduce make verbosity (#13803) - * Add git command error directory on log (#13194) - -## [1.13.7](https://github.com/go-gitea/gitea/releases/tag/v1.13.7) - 2021-04-07 - -* SECURITY - * Update to bluemonday-1.0.6 (#15294) (#15298) - * Clusterfuzz found another way (#15160) (#15169) -* API - * Fix wrong user returned in API (#15139) (#15150) -* BUGFIXES - * Add 'fonts' into 'KnownPublicEntries' (#15188) (#15317) - * Speed up `enry.IsVendor` (#15213) (#15246) - * Response 404 for diff/patch of a commit that not exist (#15221) (#15238) - * Prevent NPE in CommentMustAsDiff if no hunk header (#15199) (#15201) -* MISC - * Add size to Save function (#15264) (#15271) - -## [1.13.6](https://github.com/go-gitea/gitea/releases/tag/v1.13.6) - 2021-03-23 - -* SECURITY - * Fix bug on avatar middleware (#15124) (#15125) - * Fix another clusterfuzz identified issue (#15096) (#15114) -* API - * Fix nil exeption for get pull reviews API #15104 (#15106) -* BUGFIXES - * Fix markdown rendering in milestone content (#15056) (#15092) - -## [1.13.5](https://github.com/go-gitea/gitea/releases/tag/v1.13.5) - 2021-03-21 - -* SECURITY - * Update to goldmark 1.3.3 (#15059) (#15061) - * Another clusterfuzz spotted issue (#15032) (#15034) -* API - * Fix set milestone on PR creation (#14981) (#15001) - * Prevent panic when editing forked repos by API (#14960) (#14963) -* BUGFIXES - * Fix bug when upload on web (#15042) (#15055) - * Delete Labels & IssueLabels on Repo Delete too (#15039) (#15051) - * Fix postgres ID sequences broken by recreate-table (#15015) (#15029) - * Fix several render issues (#14986) (#15013) - * Make sure sibling images get a link too (#14979) (#14995) - * Fix Anchor jumping with escaped query components (#14969) (#14977) - * Fix release mail html template (#14976) - * Fix excluding more than two labels on issues list (#14962) (#14973) - * Don't mark each comment poster as OP (#14971) (#14972) - * Add "captcha" to list of reserved usernames (#14930) - * Re-enable import local paths after reversion from #13610 (#14925) (#14927) - -## [1.13.4](https://github.com/go-gitea/gitea/releases/tag/v1.13.4) - 2021-03-07 - -* SECURITY - * Fix issue popups (#14898) (#14899) -* BUGFIXES - * Fix race in LFS ContentStore.Put(...) (#14895) (#14913) - * Fix a couple of issues with a feeds (#14897) (#14903) - * When transferring repository and database transaction failed, rollback the renames (#14864) (#14902) - * Fix race in local storage (#14888) (#14901) - * Fix 500 on pull view page if user is not loged in (#14885) (#14886) -* DOCS - * Fix how lfs data path is set (#14855) (#14884) - -## [1.13.3](https://github.com/go-gitea/gitea/releases/tag/v1.13.3) - 2021-03-04 - -* BREAKING - * Turn default hash password algorithm back to pbkdf2 from argon2 until we find a better one (#14673) (#14675) -* BUGFIXES - * Fix paging of file commit logs (#14831) (#14879) - * Print useful error if SQLite is used in settings but not supported (#14476) (#14874) - * Fix display since time round (#14226) (#14873) - * When Deleting Repository only explicitly close PRs whose base is not this repository (#14823) (#14842) - * Set HCaptchaSiteKey on Link Account pages (#14834) (#14839) - * Fix a couple of CommentAsPatch issues. (#14804) (#14820) - * Disable broken OAuth2 providers at startup (#14802) (#14811) - * Repo Transfer permission checks (#14792) (#14794) - * Fix double alert in oauth2 application edit view (#14764) (#14768) - * Fix broken spans in diffs (#14678) (#14683) - * Prevent race in PersistableChannelUniqueQueue.Has (#14651) (#14676) - * HasPreviousCommit causes recursive load of commits unnecessarily (#14598) (#14649) - * Do not assume all 40 char strings are SHA1s (#14624) (#14648) - * Allow org labels to be set with issue templates (#14593) (#14647) - * Accept multiple SSH keys in single LDAP SSHPublicKey attribute (#13989) (#14607) - * Fix bug about ListOptions and stars/watchers pagnation (#14556) (#14573) - * Fix GPG key deletion during account deletion (#14561) (#14569) - -## [1.13.2](https://github.com/go-gitea/gitea/releases/tag/v1.13.2) - 2021-01-31 - -* SECURITY - * Prevent panic on fuzzer provided string (#14405) (#14409) - * Add secure/httpOnly attributes to the lang cookie (#14279) (#14280) -* API - * If release publisher is deleted use ghost user (#14375) -* BUGFIXES - * Internal ssh server respect Ciphers, MACs and KeyExchanges settings (#14523) (#14530) - * Set the name Mapper in migrations (#14526) (#14529) - * Fix wiki preview (#14515) - * Update code.gitea.io/sdk/gitea v0.13.1 -> v0.13.2 (#14497) - * ChangeUserName: rename user files back on DB issue (#14447) - * Fix lfs preview bug (#14428) (#14433) - * Ensure timeout error is shown on u2f timeout (#14417) (#14431) - * Fix Deadlock & Delete affected reactions on comment deletion (#14392) (#14425) - * Use path not filepath in routers/editor (#14390) (#14396) - * Check if label template exist first (#14384) (#14389) - * Fix migration v141 (#14387) (#14388) - * Use Request.URL.RequestURI() for fcgi (#14347) - * Use ServerError provided by Context (#14333) (#14345) - * Fix edit-label form init (#14337) - * Fix mailIssueCommentBatch for pull request (#14252) (#14296) - * Render links for commit hashes followed by comma (#14224) (#14227) - * Send notifications for mentions in pulls, issues, (code-)comments (#14218) (#14221) - * Fix avatar bugs (#14217) (#14220) - * Ensure that schema search path is set with every connection on postgres (#14131) (#14216) - * Fix dashboard issues labels filter bug (#14210) (#14214) - * When visit /favicon.ico but the static file is not exist return 404 but not continue to handle the route (#14211) (#14213) - * Fix branch selector on new issue page (#14194) (#14207) - * Check for notExist on profile repository page (#14197) (#14203) - -## [1.13.1](https://github.com/go-gitea/gitea/releases/tag/v1.13.1) - 2020-12-29 - -* SECURITY - * Hide private participation in Orgs (#13994) (#14031) - * Fix escaping issue in diff (#14153) (#14154) -* BUGFIXES - * Fix bug of link query order on markdown render (#14156) (#14171) - * Drop long repo topics during migration (#14152) (#14155) - * Ensure that search term and page are not lost on adoption page-turn (#14133) (#14143) - * Fix storage config implementation (#14091) (#14095) - * Fix panic in BasicAuthDecode (#14046) (#14048) - * Always wait for the cmd to finish (#14006) (#14039) - * Don't use simpleMDE editor on mobile devices for 1.13 (#14029) - * Fix incorrect review comment diffs (#14002) (#14011) - * Trim the branch prefix from action.GetBranch (#13981) (#13986) - * Ensure template renderer is available before storage handler (#13164) (#13982) - * Whenever the password is updated ensure that the hash algorithm is too (#13966) (#13967) - * Enforce setting HEAD in wiki to master (#13950) (#13961) - * Fix feishu webhook caused by API changed (#13938) - * Fix Quote Reply button on review diff (#13830) (#13898) - * Fix Pull Merge when tag with same name as base branch exist (#13882) (#13896) - * Fix mermaid chart size (#13865) - * Fix branch/tag notifications in mirror sync (#13855) (#13862) - * Fix crash in short link processor (#13839) (#13841) - * Update font stack to bootstrap's latest (#13834) (#13837) - * Make sure email recipients can see issue (#13820) (#13827) - * Reply button is not removed when deleting a code review comment (#13824) - * When reinitialising DBConfig reset the database use flags (#13796) (#13811) -* ENHANCEMENTS - * Add emoji in label to project boards (#13978) (#14021) - * Send webhook when tag is removed via Web UI (#14015) (#14019) - * Use Process Manager to create own Context (#13792) (#13793) -* API - * GetCombinedCommitStatusByRef always return json & swagger doc fixes (#14047) - * Return original URL of Repositories (#13885) (#13886) - -## [1.13.0](https://github.com/go-gitea/gitea/releases/tag/v1.13.0) - 2020-12-01 - -* SECURITY - * Add Allow-/Block-List for Migrate & Mirrors (#13610) (#13776) - * Prevent git operations for inactive users (#13527) (#13536) - * Disallow urlencoded new lines in git protocol paths if there is a port (#13521) (#13524) - * Mitigate Security vulnerability in the git hook feature (#13058) - * Disable DSA ssh keys by default (#13056) - * Set TLS minimum version to 1.2 (#12689) - * Use argon as default password hash algorithm (#12688) -* BREAKING - * Set RUN_MODE prod by default (#13765) (#13767) - * Don't replace underscores in auto-generated IDs in goldmark (#12805) - * Add Primary Key to Topic and RepoTopic tables (#12639) - * Disable password complexity check default (#12557) - * Change PIDFile default from /var/run/gitea.pid to /run/gitea.pid (#12500) - * Add extension Support to Attachments (allow all types for releases) (#12465) - * Remove IE11 Support (#11470) -* FEATURES - * Adopt repositories (#12920) - * Check passwords against HaveIBeenPwned (#12716) - * Gitea 2 Gitea migration (#12657) - * Support storing Avatars in minio (#12516) - * Allow addition of gpg keyring with multiple keys (#12487) - * Add email notify for new release (#12463) - * Add Access-Control-Expose-Headers (#12446) - * UserProfile Page: Render Description (#12415) - * Add command to recreate tables (#12407) - * Add mermaid JS renderer (#12334) - * Add ssh certificate support (#12281) - * Add spent time to referenced issue in commit message (#12220) - * Initial support for push options (#12169) - * Provide option to unlink a fork (#11858) - * Show exact tag for commit on diff view (#11846) - * Pause, Resume, Release&Reopen, Add and Remove Logging from command line (#11777) - * Issue templates directory (#11450) - * Add a storage layer for attachments (#11387) - * Add hide activity option (#11353) - * Add push commits history comment on PR time-line (#11167) - * Support elastic search for code search (#10273) - * Kanban board (#8346) -* API - * If User is Admin, show 500 error message on PROD mode too (#13115) - * Add Timestamp to Tag list API (#13026) - * Return sample message for login error in api context (#12994) - * Add IsTemplate option in create repo ui and api (#12942) - * GetReleaseByID return 404 if not found (#12933) - * Get release by tags endpoint (#12932) - * NotificationSubject show Issue/Pull State (#12901) - * Expose its limitation settings (#12714) - * Add Created & Updated to Milestone (#12662) - * Milestone endpoints accept names too (#12649) - * Expose Attachment Settings in the API (#12514) - * Add Issue and Repo info to StopWatch (#12458) - * Add cron running API (#12421) - * Add Update Pull HeadBranch Function (#12419) - * Add TOTP header to Swagger Documentation (#12402) - * Delete Token accept names too (#12366) - * Add name filter for GetMilestoneList (#12336) - * Fixed count of filtered issues when api request. (#12275) - * Do not override API issue pagination with UI settings (#12068) - * Expose useful General Repo settings settings (#11758) - * Return error when trying to create Mirrors but Mirrors are globally disabled (#11757) - * Provide diff and patch API endpoints (#11751) - * Allow to create closed milestones (#11745) - * Add language Statistics endpoint (#11737) - * Add Endpoint to get GetGeneralUI Settings (#11735) & (#11854) - * Issue/Pull expose IsLocked Property on API (#11708) - * Add endpoint for Branch Creation (#11607) - * Add pagination headers on endpoints that support total count from database (#11145) -* BUGFIXES - * Fix bogus http requests on diffs (#13760) (#13761) - * Show 'owner' tag for real owner (#13689) (#13743) - * Validate email before inserting/updating (#13475) (#13666) - * Fix issue/pull request list assignee filter (#13647) (#13651) - * Gitlab migration support for subdirectories (#13563) (#13591) - * Fix logic for preferred license setting (#13550) (#13557) - * Add missed sync branch/tag webhook (#13538) (#13556) - * Migration won't fail on non-migrated reactions (#13507) - * Fix Italian language file parsing error (#13156) - * Show outdated comments in pull request (#13148) (#13162) - * Fix parsing of pre-release git version (#13169) (#13172) - * Fix diff skipping lines (#13154) (#13155) - * When handling errors in storageHandler check underlying error (#13178) (#13193) - * Fix size and clickable area on file table back link (#13205) (#13207) - * Add better error checking for inline html diff code (#13251) - * Fix initial commit page & binary munching problem (#13249) (#13258) - * Fix migrations from remote Gitea instances when configuration not set (#13229) (#13273) - * Store task errors following migrations and display them (#13246) (#13287) - * Fix bug isEnd detection on getIssues/getPullRequests (#13299) (#13301) - * When the git ref is unable to be found return broken pr (#13218) (#13303) - * Ensure topics added using the API are added to the repository (#13285) (#13302) - * Fix avatar autogeneration (#13233) (#13282) - * Add migrated pulls to pull request task queue (#13331) (#13334) - * Issue comment reactions should also check pull type on API (#13349) (#13350) - * Fix links to repositories in /user/setting/repos (#13360) (#13362) - * Remove obsolete change of email on profile page (#13341) (#13347) - * Fix scrolling to resolved comment anchors (#13343) (#13371) - * Storage configuration support `[storage]` (#13314) (#13379) - * When creating line diffs do not split within an html entity (#13357) (#13375) (#13425) (#13427) - * Fix reactions on code comments (#13390) (#13401) - * Add missing full names when DEFAULT_SHOW_FULL_NAME is enabled (#13424) - * Replies to outdated code comments should also be outdated (#13217) (#13433) - * Fix panic bug in handling multiple references in commit (#13486) (#13487) - * Prevent panic on git blame by limiting lines to 4096 bytes at most (#13470) (#13491) - * Show original author's reviews on pull summary box (#13127) - * Update golangci-lint to version 1.31.0 (#13102) - * Fix line break for MS teams webhook (#13081) - * Fix Issue & Pull Request comment headers on mobile (#13039) - * Avoid setting the CONN_STR in queues unless it is meant to be set (#13025) - * Remove code-view class from diff view (#13011) - * Fix the color of PR comment hyperlinks. (#13009) - * (Re)Load issue labels when changing them (#13007) - * Fix Media links in org files not liked to media files (#12997) - * Always return a list from GetCommitsFromIDs (#12981) - * Only set the user password if the password field would have been shown (#12980) - * Fix admin/config page (#12979) - * Changed width of commit signature avatar (#12961) - * Completely quote AppPath and CustomConf paths (#12955) - * Fix handling of migration errors (#12928) - * Fix anonymous GL migration (#12862) - * Fix git open close bug (#12834) - * Fix markdown meta parsing (#12817) - * Add default storage configurations (#12813) - * Show PR settings on empty repos (#12808) - * Disable watch and star if not signed in (#12807) - * Whilst changing the character set to utf8mb4 we should set ROW_FORMAT=dynamic too (#12804) - * Set opengraph attributes on org pages (#12803) - * Return error when creating gitlabdownloader failed (#12790) - * Add migration for password algorithm change (#12784) - * Compare SSH_DOMAIN when parsing submodule URLs (#12753) - * Fix editor.commit_empty_file_text locale string (#12744) - * Fix wrong poster message for code comment on Pull view (#11721) - * Escape failed highlighted files (#12685) - * Ensure that all migration requests are cancellable (#12669) - * Ensure RepoPath is lowercased in gitea serv (#12668) - * Do not disable commit changes button on repost (#12644) - * Dark theme for line numbers in blame view (#12632) - * Fix message when deleting last owner from an organization (#12628) - * Use shellquote to unpack arguments to gitea serv (#12624) - * Fix signing.wont_sign.%!s() if Require Signing commits but not signed in. (#12581) - * Set utf8mb4 as the default charset on MySQL if CHARSET is unset (#12563) - * Set context for running CreateArchive to that of the request (#12555) - * Prevent redirect back to /user/events (#12462) - * Re-attempt to delete temporary upload if the file is locked by another process (#12447) - * Mirror System Notice reports are too frequent (#12438) - * Do not show arrows on comment diffs on pull comment pages (#12434) - * Fix milestone links (#12405) - * Increase size of the language column in language_stat (#12396) - * Use transaction in V102 migration (#12395) - * Only use --exclude on name-rev with git >= 2.13 (#12347) - * Add action feed for new release (#12324) - * Set NoAutoTime when updating is_archived (#12266) - * Support Force-update in Mirror and improve Tracing in mirror (#12242) - * Avoid sending "0 new commits" webhooks (#12212) - * Fix U2F button icon (#12167) - * models/repo_sign.go: break out of loops (#12159) - * Ensure that git commit tree continues properly over the page (#12142) - * Rewrite GitGraph.js (#12137) - * Fix repo API listing stability (#12057) - * Add team support for review request (#12039) - * Fix 500 error on repos with no tags (#11870) - * Fix nil pointer in default issue mail template (#11862) - * Fix commit search in all branches (#11849) - * Don't consider tag refs as valid for branch name (#11847) - * Don't add same line code comment box twice (#11837) - * Fix visibility of forked public repos from private orgs (#11717) - * Fix chardet test and add ordering option (#11621) - * Fix number of files, total additions, and deletions on Diff pages (#11614) - * Properly handle and return empty string for dangling commits in GetBranchName (#11587) - * Include query in sign in redirect (#11579) - * Fix Enter not working in SimpleMDE (#11564) - * Fix bug about can't skip commits base on base branch (#11555) -* ENHANCEMENTS - * Only Return JSON for responses (#13511) (#13565) - * Use existing analyzer module for language detection for highlighting (#13522) (#13551) - * Return the full rejection message and errors in flash errors (#13221) (#13237) - * Remove PAM from auth dropdown when unavailable (#13276) (#13281) - * Add HostCertificate to sshd_config in Docker image (#13143) - * Save TimeStamps for Star, Label, Follow, Watch and Collaboration to Database (#13124) - * Improve error feedback for duplicate deploy keys (#13112) - * Set appropriate `autocomplete` attributes on password fields (#13078) - * Adding visual cue for "Limited" & "Private" organizations. (#13040) - * Fix Pull Request merge buttons on mobile (#13035) - * Gitea serv, hooks, manager and the like should always display Fatals (#13032) - * CSS tweaks to warning/error segments and misc fixes (#13024) - * Fix formatting of branches ahead-behind on narrow windows (#12989) - * Add config option to make create-on-push repositories public by default (#12936) - * Disable migration items when mirror is selected (#12918) - * Add the checkbox quick button to the comment tool bar also (#12885) - * Support GH enterprise (#12863) - * Simplify CheckUnitUser logic (#12854) - * Fix background of signed-commits on arc-green of timeline commits (#12837) - * Move git update-server-info to hooks (#12826) - * Add ui style for "Open a blank issue" button (#12824) - * Use a simple format for the big number on ui (#12822) - * Make SVG size argument optional (#12814) - * Add placeholder text for bio profile text form (#12792) - * Set language via AJAX (#12785) - * Show git-pull-request icon for closed pull request (#12742) - * Migrate version parsing library to hashicorp/go-version (#12719) - * Only use async pre-empt hack if go < 1.15 (#12718) - * Inform user about meaning of an hourglass on reviews (#12713) - * Add a migrate service type switch page (#12697) - * Migrations: Gitlab Add Reactions Support for Issues & MergeRequests (#12695) - * Remove duplicate logic in initListSubmits (#12660) - * Set avatar image dimensions (#12654) - * Rename models.ProtectedBranchRepoID/PRID to models.EnvRepoID/PRID and ensure EnvPusherEmail is set (#12646) - * Set setting.AppURL as GITEA_ROOT_URL environment variable during pushes (#12752) - * Add postgres schema to the search_path on database connection (#12634) - * Git migration UX improvements (#12619) - * Add link to home page on swagger ui (#12601) - * hCaptcha Support (#12594) - * OpenGraph: use repo avatar if exist (#12586) - * Reaction picker display improvements (#12576) - * Fix emoji replacements, make emoji images consistent (#12567) - * Increase clickable area on files table links (#12553) - * Set z-index for sticky diff box lower (#12537) - * Report error if API merge is not allowed (#12528) - * LFS support to be stored on minio (#12518) - * Show 2FA info on Admin Pannel: Users List (#12515) - * Milestone Issue/Pull List: Add octicons type (#12499) - * Make dashboard newsfeed list length a configurable item (#12469) - * Add placeholder text for send testing email button in admin/config (#12452) - * Add SVG favicon (#12437) - * In issue comments, put issue participants also in completion list when hitting @ (#12433) - * Collapse Swagger UI tags by default (#12428) - * Detect full references to issues and pulls in commit messages (#12399) - * Allow common redis and leveldb connections (#12385) - * Don't use legacy method to send Matrix Webhook (#12348) - * Remove padding/border-radius on image diffs (#12346) - * Render the git graph on the server (#12333) - * Fix clone panel in wiki position not always align right (#12326) - * Rework 'make generate-images' (#12316) - * Refactor webhook payload conversion (#12310) - * Move jquery-minicolors to npm/webpack (#12305) - * Support use nvarchar for all varchar columns when using mssql (#12269) - * Update Octicons to v10 (#12240) - * Disable search box autofocus (#12229) - * Replace code fold icons with octicons (#12222) - * Ensure syntax highlighting is the same inside diffs (#12205) - * Auto-init repo on license, .gitignore select (#12202) - * Default to showing closed Issues/PR list when there are only closed issues/PRs (#12200) - * Enable cloning via Git Wire Protocol v2 over HTTP (#12170) - * Direct SVG rendering (#12157) - * Improve arc-green code colors (#12111) - * Allow admin to merge pr with protected file changes (#12078) - * Show description on individual milestone view (#12055) - * Update the wiki repository remote origin while update the mirror repository's Clone From URL (#12053) - * Server-side syntax highlighting for all code (#12047) - * Use Fomantic's fluid padded for blame full width (#12023) - * Use custom SVGs for commit signing lock icon (#12017) - * Make tabs smaller (#12003) - * Fix sticky diff stats container (#12002) - * Move fomantic and jQuery to main webpack bundle (#11997) - * Use enry language type to detect special languages (#11974) - * Use only first line of commit when creating referenced comment (#11960) - * Rename custom/conf/app.ini.sample to custom/conf/app.example.ini for better syntax light on editor (#11926) - * Fix double divider on issue sidebar (#11919) - * Shorten markdown heading anchors links (#11903) - * Add org avatar on top of internal repo icon (#11895) - * Use label to describe repository type (#11891) - * Make repository size unclickable on repo summary bar (#11887) - * Rework blame template and styling (#11885) - * Fix icon alignment for show/hide outdated link on resolved conversation (#11881) - * Vertically align review icons on repository sidebar (#11880) - * Better align items using flex within review request box (#11879) - * Only write to global gitconfig if necessary (#11876) - * Disable all typographic replacements in markdown renderer (#11871) - * Improve label edit buttons labels (#11841) - * Use crispEdges rendering for octicon-internal-repo (#11801) - * Show update branch item in merge box when it's necessary (#11761) - * Add compare link to releases (#11752) - * Allow site admin to disable mirrors (#11740) - * Export monaco editor on window.codeEditors (#11739) - * Add configurable Trust Models (#11712) - * Show full GPG commit status on PR commit history (#11702) - * Fix align issues and decrease avatar size on PR timeline (#11689) - * Replace jquery-datetimepicker with native date input (#11684) - * Change Style of Tags on Comments (#11668) - * Fix missing styling for shabox on PR commit history (#11625) - * Apply padding to approval icons on PR list (#11622) - * Fix message wrapping on PR commit list (#11616) - * Right-align status icon on pull request commit history (#11594) - * Add missing padding for multi-commit list on PR view (#11593) - * Do not show avatar for "{{user}} added X commits" (#11591) - * Fix styling and padding for commit list on PR view (#11588) - * Style code review comment for arc-green (#11572) - * Use default commit message for wiki edits (#11550) - * Add internal-repo octicon for public repos of private org (#11529) - * Fix dropzone color on arc-green (#11514) - * Insert ui divider directly in templates instead of from inside heatmap vue component (#11508) - * Move tributejs to npm/webpack (#11497) - * Fix text-transform on wiki revisions page (#11486) - * Do not show lock icon on repo list for public repos in private org (#11445) - * Include LFS when calculating repo size (#11060) - * Add check for LDAP group membership (#10869) - * When starting new stopwatch stop previous if it is still running (#10533) - * Add queue for code indexer (#10332) - * Move all push update operations to a queue (#10133) - * Cache last commit when pushing for big repository (#10109) - * Change/remove a branch of an open issue (#9080) - * Sortable Tables Header By Click (#7980) -* TESTING - * Use community codecov drone plugin (#12468) - * Add more tests for diff highlighting (#12467) - * Don't put integration test data outside of test folder (#11746) - * Add debug option to hooks (#11624) - * Log slow tests (#11487) -* TRANSLATION - * Translate two small lables on commit statutes list (#12821) - * Make issues.force_push_codes message shorter (#11575) -* BUILD - * Bump min required golang to 1.13 (#12717) - * Add 'make watch' (#12636) - * Extract Swagger CSS to its own file (#12616) - * Update eslint config (#12609) - * Avoid unnecessary system-ui expansion (#12522) - * Make the default PID file compile-time settable (#12485) - * Add 'watch-backend' (#12330) - * Detect version of sed in Makefile (#12319) - * Update gitea-vet to v0.2.1 (#12282) - * Add logic to build stable and edge builds for gitea snap (#12052) - * Fix missing CGO_EXTRA_FLAGS build arg for docker (#11782) - * Alpine 3.12 (#11720) - * Enable stylelint's shorthand-property-no-redundant-values (#11436) -* DOCS - * Change default log configuration (#13088) - * Add automatic JS license generation (#11810) - * Remove page size limit comment from swagger (#11806) - * Narrow down Edge version in browser support docs (#11640) - -## [1.12.5](https://github.com/go-gitea/gitea/releases/tag/v1.12.5) - 2020-10-01 - -* BUGFIXES - * Allow U2F with default settings for gitea in subpath (#12990) (#13001) - * Prevent empty div when editing comment (#12404) (#12991) - * On mirror update also update address in DB (#12964) (#12967) - * Allow extended config on cron settings (#12939) (#12943) - * Open transaction when adding Avatar email-hash pairs to the DB (#12577) (#12940) - * Fix internal server error from ListUserOrgs API (#12910) (#12915) - * Update only the repository columns that need updating (#12900) (#12912) - * Fix panic when adding long comment (#12892) (#12894) - * Add size limit for content of comment on action ui (#12881) (#12890) - * Convert User expose ID each time (#12855) (#12883) - * Support slashes in release tags (#12864) (#12882) - * Add missing information to CreateRepo API endpoint (#12848) (#12867) - * On Migration respect old DefaultBranch (#12843) (#12858) - * Fix notifications page links (#12838) (#12853) - * Stop cloning unnecessarily on PR update (#12839) (#12852) - * Escape more things that are passed through str2html (#12622) (#12850) - * Remove double escape on labels addition in comments (#12809) (#12810) - * Fix "only mail on mention" bug (#12775) (#12789) - * Fix yet another bug with diff file names (#12771) (#12776) - * RepoInit Respect AlternateDefaultBranch (#12746) (#12751) - * Fix Avatar Resize (resize algo NearestNeighbor -> Bilinear) (#12745) (#12750) -* ENHANCEMENTS - * gitea dump: include version & Check InstallLock (#12760) (#12762) - -## [1.12.4](https://github.com/go-gitea/gitea/releases/tag/v1.12.4) - 2020-09-02 - -* SECURITY - * Escape provider name in oauth2 provider redirect (#12648) (#12650) - * Escape Email on password reset page (#12610) (#12612) - * When reading expired sessions - expire them (#12686) (#12690) -* ENHANCEMENTS - * StaticRootPath configurable at compile time (#12371) (#12652) -* BUGFIXES - * Fix to show an issue that is related to a deleted issue (#12651) (#12692) - * Expire time acknowledged for cache (#12605) (#12611) - * Fix diff path unquoting (#12554) (#12575) - * Improve HTML escaping helper (#12562) - * models: break out of loop (#12386) (#12561) - * Default empty merger list to those with write permissions (#12535) (#12560) - * Skip SSPI authentication attempts for /api/internal (#12556) (#12559) - * Prevent NPE on commenting on lines with invalidated comments (#12549) (#12550) - * Remove hardcoded ES indexername (#12521) (#12526) - * Fix bug preventing transfer to private organization (#12497) (#12501) - * Keys should not verify revoked email addresses (#12486) (#12495) - * Do not add prefix on http/https submodule links (#12477) (#12479) - * Fix ignored login on compare (#12476) (#12478) - * Fix incorrect error logging in Stats indexer and OAuth2 (#12387) (#12422) - * Upgrade google/go-github to v32.1.0 (#12361) (#12390) - * Render emoji's of Commit message on feed-page (#12373) - * Fix handling of diff on unrelated branches when Git 2.28 used (#12370) - -## [1.12.3](https://github.com/go-gitea/gitea/releases/tag/v1.12.3) - 2020-07-28 - -* BUGFIXES - * Don't change creation date when updating Release (#12343) (#12351) - * Show 404 page when release not found (#12328) (#12332) - * Fix emoji detection in certain cases (#12320) (#12327) - * Reduce emoji size (#12317) (#12327) - * Fix double-indirection bug in logging IDs (#12294) (#12308) - * Link to pull list page on sidebar when view pr (#12256) (#12263) - * Extend Notifications API and return pinned notifications by default (#12164) (#12232) - -## [1.12.2](https://github.com/go-gitea/gitea/releases/tag/v1.12.2) - 2020-07-11 - -* BUGFIXES - * When deleting repository decrese user repository count in cache (#11954) (#12188) - * Return full commit message instead of summary in commits API (#12186) (#12187) - * Properly set HEAD when a repo is created with a default branch that is not named 'master' (#12135) (#12182) - * Ensure GPG Subkeys are verified (#12155) (#12168) - * Fix failing to cache last commit with key being to long (#12151) (#12161) - * Multiple small admin dashboard fixes (#12153) (#12156) - * Remove spurious logging of " Delete all repository archives" at startup (#12139) (#12148) - * Fix repository setup instructions when default branch is not named 'master' (#12122) (#12147) - * Move EventSource to SharedWorker (#12095) (#12130) - * Fix ui bug in wiki commit page (#12089) (#12125) - * Fix gitgraph branch continues after merge (#12044) (#12105) - * Set the base url when migrating from Gitlab using access token or username without password (#11852) (#12104) - * Ensure BlameReaders close at end of request (#12102) (#12103) - * Fix panic when adding review comment (#12058) -* ENHANCEMENTS - * Disable dropzone's timeout for file uploads (#12024) (#12032) - -## [1.12.1](https://github.com/go-gitea/gitea/releases/tag/v1.12.1) - 2020-06-21 - -* BUGFIXES - * Handle multiple merges in gitgraph.js (#11996) (#12000) - * Add serviceworker.js to KnownPublicEntries (#11992) (#11994) - * For language detection do not try to analyze big files by content (#11971) (#11975) -* ENHANCEMENTS - * Fix scrollable header on dropdowns (#11893) (#11965) - -## [1.11.8](https://github.com/go-gitea/gitea/releases/tag/v1.11.8) - 2020-06-21 - -* BUGFIXES - * Really fix __webpack_public_path__ for 1.11 (#11961) - -## [1.12.0](https://github.com/go-gitea/gitea/releases/tag/v1.12.0) - 2020-06-17 - -* BREAKING - * When using API CreateRelease set created_unix to the tag commit time (#11218) - * Enable ENABLE_HARD_LINE_BREAK by default for rendering markdown (#11162) - * Fix sanitizer config - multiple rules (#11133) - * Remove check on username when using AccessToken authentication for the API (#11015) - * Return 404 from Contents API when items don't exist (#10323) - * Notification API should always return a JSON object with the current count of notifications (#10059) - * Remove migration support from versions earlier than 1.6.0 (#10026) -* SECURITY - * Use -1 to disable key algorithm type in ssh.minimum_key_sizes (#11635) (#11662) -* FEATURES - * Improve config logging when WrappedQueue times out (#11174) - * Add branch delete to API (#11112) - * Use markdown frontmatter to provide Table of contents, language and frontmatter rendering (#11047) - * Add a way to mark Conversation (code comment) resolved (#11037) - * Handle yaml frontmatter in markdown (#11016) - * Cache PullRequest Divergence (#10914) - * Make `gitea admin auth list` formatting configurable (#10844) - * Add Matrix webhook (#10831) - * Add Organization Wide Labels (#10814) - * Allow to set protected file patterns for files that can not be changed under no conditions (#10806) - * Option to set default branch at repository creation (#10803) - * Add request review from specific reviewers feature in pull request (#10756) - * Add NextCloud oauth (#10562) - * System-wide webhooks (#10546) - * Relax sanitization as per https://github.com/jch/html-pipeline (#10527) - * Use media links for img in post-process (#10515) - * Add API endpoints to manage OAuth2 Application (list/create/delete) (#10437) - * Render READMEs in docs/ .gitea or .github from root (#10361) - * Add feishu webhook support (#10229) - * Cache last commit to accelerate the repository directory page visit (#10069) - * Implement basic app.ini and path checks to doctor cmd (#10064) - * Make WorkerPools and Queues flushable (#10001) - * Implement "embedded" command to extract static resources (#9982) - * Add API endpoint for repo transfer (#9947) - * Make archive prefixing configurable with a global setting (#9943) - * Add Unique Queue infrastructure and move TestPullRequests to this (#9856) - * Issue/PR Context Popups (#9822) - * Add "Update Branch" button to Pull Requests (#9784) - * Add require signed commit for protected branch (#9708) - * Mark PR reviews as stale at push and allow to dismiss stale approvals (#9532) - * Add API notification endpoints (#9488) - * Issue search support elasticsearch (#9428) - * Add API branch protection endpoint (#9311) - * Add a new command doctor to check if some wrong configurations on gitea instance (#9095) - * Add support for migrating from Gitlab (#9084) - * Add support for database schema in PostgreSQL (#8819) - * Add setting to set default and global disabled repository units. (#8788) - * Language statistics bar for repositories (#8037) - * Restricted users (#6274) -* BUGFIXES - * Fix commenting on non-utf8 encoded files (#11916) (#11950) - * Use google/uuid to instead satori/go.uuid (#11943) (#11946) - * Align show/hide outdated button on code review block (#11932) (#11944) - * Update to go-git v5.1.0 (#11936) (#11941) - * Use ID or Where to instead directly use Get when load object from database (#11925) (#11934) - * Update CommitsAhead CommitsBehind on Pull BaseBranch Change too (#11912) (#11915) - * Invalidate comments when file is shortened (#11882) (#11884) - * Rework api/user/repos for pagination (#11827) (#11877) - * Handle more pathological branch and tag names (#11843) (#11863) - * Add doctor check to set IsArchived false if it is null (partial #11853) (#11859) - * Prevent panic on empty HOST for mysql (#11850) (#11856) - * Use DEFAULT_PAGING_NUM instead of MAX_RESPONSE_ITEMS in ListOptions (#11831) (#11836) - * Fix reply octicon (#11821) (#11822) - * Honor DEFAULT_PAGING_NUM for API (#11805) (#11813) - * Ensure rejected push to refs/pull/index/head fails nicely (#11724) (#11809) - * In File Create/Update API return 404 if Branch does not exist (#11791) (#11795) - * Fix doer of rename repo (#11789) (#11794) - * Initialize SimpleMDE when making a code comment (#11749) (#11785) - * Fix timezone on issue deadline (#11697) (#11784) - * Fix to allow comment poster to edit or delete his own comments (#11671) (#11774) - * Show full 500 error in API when Gitea in dev mode (#11641) (#11753) - * Add missing templates for Matrix system webhooks (#11729) (#11748) - * Fix verification of subkeys of default gpg key (#11713) (#11747) - * Fix styling for commiter on diff view (#11715) (#11744) - * Properly truncate system notices (#11714) (#11742) - * Handle expected errors in FileCreate & FileUpdate API (#11643) (#11718) - * Fix missing authorization check on pull for public repos of private/limited org (#11656) (#11682) - * Doctor check & fix db consistency (#11111) (#11676) - * Exclude generated files from language statistics (#11653) (#11670) - * Return json on 500 error from API (#11574) (#11659) - * When must change password only show Signout (#11600) (#11637) - * Backport various styling fixes (#11619) - * Fix wrong milestone in webhook message (#11596) (#11611) - * Fix serviceworker output file and misc improvements (#11562) (#11610) - * When initialising repositories ensure that the user doing the creation is the initializer (#11601) (#11608) - * Prevent empty query parameter being set on dashboard (#11561) (#11604) - * Fix images in wiki edit preview (#11546) (#11602) - * Prevent (caught) panic on login (#11590) (#11597) - * Prevent transferring repos to invisible orgs (#11517) (#11549) - * Move serviceworker to workbox and fix SSE interference (#11538) (#11547) - * API PullReviewComment HTMLPullURL should return the HTMLURL (#11501) (#11533) - * Fix repo-list private and total count bugs (#11500) (#11532) - * Fix form action template substitutions on admin pages (backport #11519) (#11531) - * Fix a bug where the reaction emoji doesn't disappear. (#11489) (#11530) - * TrimSpace when reading InternalToken from a file (#11502) (#11524) - * Fix selected line color in arc-green (#11492) (#11520) - * Make localstorage read ssh or https correctly (#11483) (#11490) - * Check branch protection on IsUserAllowedToUpdate (#11448) - * Fix margin on attached segment headers when they are separated by other element (#11425) - * Fix webhook template when validation errors occur (#11421) - * Fix NPE in template due to missing signing key on commit page (#11392) - * Restore active background to Register button on Register page (#11390) - * Fix hook failure due to relative LFS_CONTENT_PATH (#11362) - * Correctly set the organization num repos (#11339) - * Prevent 500 with badly formed task list (#11328) - * Allow compare page to look up base, head, own-fork, forkbase-of-head (#11327) - * Handle panics that percolate up to the graceful module (#11291) - * Don't allow registration via the web form, when AllowOnlyExternalRegistration is True (#11248) - * Patch fomantic-ui to workaround build issue (#11244) - * Prevent panic during wrappedConn close at hammertime (#11219) - * On logout force redirect to start page (#11202) - * Fix creation of Organization repos by Users with max created personal repos (#11183) - * Add option to increase provided OAuth2 token maximum size (#11180) - * Log the indexer path on failure (#11172) - * Ensure that relative paths in edit preview work (#11143) - * Make API EditIssue and EditPullRequest issue notifications (#11123) - * Send 404 immediately for known public requests (#11117) - * Remove nil inserts in models (#11096) - * Add GetReviews() to RetryDownloader (#11093) - * Remove nonexistent serviceworker entries (#11091) - * Simplify and fix GetApprovalCounts (#11086) - * Fix wiki revision template and simplify some tmpl conditions (#11080) - * Make branch parameter optional for /api/v1/repos/{owner}/{repo}/contents/{filepath} (#11067) - * Align review-item svg octicons (#11065) - * Automatically remove Watches, Assignments, etc if user loses access due to being removed as collaborator or from a team (#10997) - * Users should not be able to prohibit their own login (#10970) - * Fix scrollbar issues in dropdowns (#10897) - * Change the order of issues.closed_by to list opening user first (#10876) - * Allow site admin to check /api/v1/orgs endpoints (#10867) - * Avoid logging []byte in queue failures - convert to string first (#10865) - * Use ErrKeyUnableToVerify if fail to calc fingerprint in ssh-keygen (#10863) - * Fix assignees double load bug (#10856) - * Handle push rejection in branch and upload (#10854) - * In authorized_keys use double-quote for windows compatibility (#10841) - * Fix milestone template (#10824) - * log.Fatal on failure to listen to SSH port (#10795) - * Fix forked repo has no icon and language stat. (#10791) - * Fix tag/release deletion (#10663) - * Fix webhook migration (#10641) - * Migration for deleting orphaned dependencies (#10617) - * Add migration to fix the old broken merge-bases (#10604) - * Update templates for Go 1.14 (#10596) - * Remove unnecessary parentheses in wiki/view template (#10583) - * Change default value of DefaultCommandExecutionTimeout to match docs (#10581) - * Handle panic in indexer initialisation better (#10534) - * Set correct content_type value for Gogs/Gitea webhooks (#9504) (#10456) - * Fixed wrong AppSubUrl in multiple templates (#10447) - * Fix profile page CSS (#10406) - * Inject SVG sprite via ajax (#10320) - * Fix migration information update bug when linked github account (#10310) - * Allow admin to check org membership by API for other users (#10201) - * Fix topics dropdown (#10167) - * Ensure DeleteUser is not allowed to Delete Orgs and visa versa (#10134) - * Fix IsErrPullClosed (#10093) - * Accept punctuation after simple+cross repository issue references (#10091) - * On merge of already closed PR redirect back to the pulls page (#10010) - * Fix crowdin update script (#9969) - * Fix pull view when head repository or head branch missed and close related pull requests when delete head repository or head branch (#9927) - * Add option to prevent LDAP from deactivating everything on empty search (#9879) - * Fix admin handling at merge of PR (#9749) - * err_admin_name_pattern_not_allowed String Clarification (#9731) - * Fix wrong original git service type on a migrated repository (#9693) - * Fix ref links in issue overviews for tags (#8742) -* ENHANCEMENTS - * Fix search form button overlap (#11840) (#11864) - * Make tabular menu styling consistent for arc-green (#11570) (#11798) - * Add option to API to update PullRequest base branch (#11666) (#11796) - * Increase maximum SQLite variables count to 32766 (#11696) (#11783) - * Update emoji dataset with skin tone variants (#11678) (#11763) - * Add logging to long migrations (#11647) (#11691) - * Change language statistics to save size instead of percentage (#11681) (#11690) - * Allow different HardBreaks settings for documents and comments (#11515) (#11599) - * Fix alignment for commits on dashboard (#11595) (#11680) - * Default MSSQL port 0 to allow automatic detection by default (#11642) (#11673) - * Handle expected errors in AddGPGkey API (#11644) (#11661) - * Close EventSource before unloading the page (#11539) (#11557) - * Ensure emoji render with regular font-weight (#11541) (#11545) - * Fix webpack chunk loading with STATIC_URL_PREFIX (#11526) (#11542) - * Tweak reaction buttons (#11516) - * Use more toned colors for selected line (#11493) (#11511) - * Increase width for authors on commit view (#11441) - * Hide archived repos by default in repo-list (#11440) - * Better styling for code review comment textarea (#11428) - * Support view individual commit for wiki pages (#11415) - * Fix yellow background on active elements in code review (#11414) - * Better styling for code review comment form (#11413) - * Change install description on homepage (#11395) - * Ensure search action button is coalesced to adjacent input (#11385) - * Switch code editor to Monaco (#11366) - * Add paging and archive/private repository filtering to dashboard list (#11321) - * Changed image of openid-connect logo for better look on arc-green theme (#11312) - * Load Repo Topics on blame view too (#11307) - * Change the style in admin notice content view from `

` to `

` (#11301)
-  * Allow log.xxx.default to set logging settings for the default logger only (#11292)
-  * Automatically attempt auto recovery of broken disk queues (Update lunny/levelqueue to 0.3.0) (#11285)
-  * Make sendmail a Process and have default timeout (#11256)
-  * Check value of skip-repository flag in dump command (#11254)
-  * Fix submit review form (#11252)
-  * Allow unauthenticated users to compare (#11240)
-  * Add EventSource support (#11235)
-  * Refactor Milestone related (#11225)
-  * Add pull review API endpoints (#11224)
-  * Add a 'this' to issue close/reopened messages (#11204)
-  * When migrating from Gitlab map Approvals to approving Reviews (#11147)
-  * Improve representation of attachments in issues (#11141)
-  * Protect default branch against deletion (#11115)
-  * Add X-Total-Count on /repos/{owner]/{repo}/pulls API endpoint (#11113)
-  * Fix status label on branches list vertical alignment (#11109)
-  * Add single release page and latest redirect (#11102)
-  * Add missing commit states to PR checks template (#11085)
-  * Change icon on title for merged PR to git-merge (#11064)
-  * Add MergePull comment type instead of close for merge PR (#11058)
-  * Upgrade jQuery to 3.5.0, remove jQuery-Migrate, fix deprecations (#11055)
-  * Consolidate author name across timeline (#11053)
-  * Refactor UpdateOAuth2Application (#11034)
-  * Support unicode emojis and remove emojify.js (#11032)
-  * Add git hook "warning" to admin panel (#11030)
-  * Add flash notify for email preference setting success (#11027)
-  * Remove package code.gitea.io/gitea/modules/git import out of models (#11025)
-  * Match arc-green code tag color to code blocks (#11023)
-  * Move syntax highlighting to web worker (#11017)
-  * Prevent merge of outdated PRs on protected branches (#11012)
-  * Add Get/Update for api/v1/user/applications/oauth2 (#11008)
-  * Upgrade to most recent bluemonday (#11007)
-  * Tweak code tags in markdown (#11000)
-  * Reject duplicate AccessToken names (#10994)
-  * Fix Ctrl-Enter shortcut for issues (#10986)
-  * Provide `OwnerName` field for README template (#10981)
-  * Prettify Timeline (#10972)
-  * Add issue subscription check to API (#10967)
-  * Use AJAX for notifications table (#10961)
-  * Adjust label padding (#10957)
-  * Avoiding directory execution on hook (#10954) (#10955)
-  * Migrate ActivityHeatmap to Vue SFC (#10953)
-  * Change merge strategy: do not check write access if user in merge white list (#10951)
-  * Enable GO111MODULE=on globally in Makefile (#10939)
-  * API endpoint to get single commit via SHA and Ref (#10915)
-  * Add accordion to release list and hide non-latest (#10910)
-  * Split dashboard elements into separate template files (#10885)
-  * Add more message on sidebar menus (#10872)
-  * Set MySQL rowtype to dynamic for new tables (#10833)
-  * Completely fix task-list checkbox styling (#10798)
-  * Hide gear icon for user who can't use them on sidebar (#10750)
-  * Refactor Cron and merge dashboard tasks (#10745)
-  * Change review status icons on pr view style to github style (#10737)
-  * Make pagination optional for API list notification endpoints (#10714)
-  * Fix tab indentation in code view (#10671)
-  * Fix task-list checkbox styling (#10668)
-  * Multiple LFS improvements (#10667)
-  * Make PR message on pushes configurable (#10664)
-  * Move dropzone.js to npm/webpack (#10645)
-  * Ensure Update button is enabled even when CI has failed (#10640)
-  * Add restricted user filter to LDAP authentication (#10600)
-  * Add Yandex OAuth2 provider (#8335) (#10564)
-  * Make avatar lookup occur at image request (#10540)
-  * Prevent accidental selection of language stats bar (#10537)
-  * Add fluid-icon (#10491)
-  * Inform participants on UI too (#10473)
-  * Build with go 1.14 (and raise minimum go version to 1.12) (#10467)
-  * Add max-file-size to LFS (#10463)
-  * Enable paggination for ListRepoTags API (#10454)
-  * Update JS dependencies (#10450)
-  * Show the username as a fallback on feeds if full name is blank (#10438)
-  * Various dark theme fixes (#10416)
-  * Display pull request head branch even the branch deleted or repository deleted (#10413)
-  * Prevent Firefox from using apple-touch-icon (#10402)
-  * Fix input[type=file] on dark theme (#10382)
-  * Improve mobile review-box sizing (#10297)
-  * Notification: queue ui.go notification-service (#10281)
-  * Add detected file language to code search (#10256)
-  * Index code and stats only for non-empty repositories (#10251)
-  * Add Approval Counts to pulls list (#10238)
-  * Limit label list height on edit issue page (#10216)
-  * Improve 404 error message (#10214)
-  * Tweak locale to respect singular conflicting file message in PR list (#10177)
-  * Fix commit view (#10169)
-  * Reorganize frontend files and tooling (#10168)
-  * Allow emoji on popup label (#10166)
-  * ListIssues add filter for milestones API (#10148)
-  * Show if a PR has conflicting files on the PR lists (#10130)
-  * Fix inconsistent label color format in API (#10129)
-  * Show download count info in release list (#10124)
-  * Add Octicon SVG spritemap (#10107)
-  * Update aria-fixed semantic-dropdown to fomantic master (#10096)
-  * Fix apple-touch-icon, regenerate images (#10065)(#10006)
-  * Style blockquote for default issue mail template (#10024)
-  * More expansions in template repositories (#10021)
-  * Allow list collaborators for users with Read access to repo (#9995)
-  * Add explicit dimensions to navbar avatar (#9986)
-  * Remove loadCSS and preload woff2 icon fonts (#9976)
-  * Fix commit view JS features, reimplement folding (#9968)
-  * Fix review avatar image (#9962)
-  * Improve notification pager (#9821)
-  * Move jquery and jquery-migrate to npm/webpack (#9813)
-  * Change font to Roboto to support more charsets (#9803)
-  * Move mailer to use a queue (#9789)
-  * Issue search on my related repositories (#9758)
-  * Add "before" query to ListIssueComments and ListRepoIssueComments API (#9685)
-  * Move tracked time api convert to convert package (#9665)
-  * Improve PR info in default merge message (#9635)
-  * Granular webhook events (#9626)
-  * Add Reviewed-on in commit message (#9623)
-  * Add top author stats to activity page (#9615)
-  * Allow repo admin to merge PR regardless of review status (#9611)
-  * Migrate reactions when migrating repository from github (#9599)
-  * API orgEditTeam make Fields optional (#9556)
-  * Move create/fork repository from models to modules/repository (#9489)
-  * Migrate reviews when migrating repository from github (#9463)
-  * Times API add filters (#9373)
-  * Move push commits from models to modules/repository (#9370)
-  * Add API endpoint to check notifications [Extend #9488] (#9595)
-  * Add GET /orgs API endpoint (#9560)
-  * API add/generalize pagination (#9452)
-  * Make create org repo API call same as github (#9186)
-* BUILD
-  * Turn off go modules for xgo and gxz (#10963)
-  * Add gitea-vet (#10948)
-  * Rename scripts to build and add revive command as a new build tool command (#10942)
-  * Add 'make lint', restructure 'compliance' pipeline (#10861)
-  * Move JS build dependencies to 'dependencies' (#10763)
-  * Use whitelist to find go files, run find only once (#10594)
-  * Move vue and vue-calendar-heatmap to npm/webpack (#10188)
-  * Move jquery.are-you-sure to npm/webpack (#10063)
-  * Move highlight.js to npm/webpack (#10011)
-  * Generate Bindata if TAGS="bindata" and not up-to-date (#10004)
-  * Move CSS build to webpack (#9983)
-  * Move fomantic target, update 'make help' (#9945)
-  * Add css extraction and minification to webpack (#9944)
-  * Misc webpack tweaks (#9924)
-  * Make node_modules a order-only prerequisite (#9923)
-  * Update documentation for the go module era (#9751)
-  * Move swagger-ui to webpack/npm and update it to 3.24.3 (#9714)
-  * Use npm to manage fomantic and only build needed components (#9561)
-* MISC
-  * Add gnupg to Dockerfile (#11365)
-  * Update snapcraft.yaml for core18 and latest features (#11300)
-  * Update JS dependencies, min Node.js version 10.13 (#11246)
-  * Change default charset for MySQL on install to utf8mb4 (#10989)
-  * Return issue subscription status from API subscribe (#10966)
-  * Fix queue log param (#10733)
-  * Add warning when using relative path to app.ini (#10104)
-
-## [1.11.7](https://github.com/go-gitea/gitea/releases/tag/v1.11.7) - 2020-06-18
-
-* BUGFIXES
-  * Use ID or Where to instead directly use Get when load object from database (#11925) (#11935)
-  * Fix __webpack_public_path__ for 1.11 (#11907)
-  * Fix verification of subkeys of default gpg key (#11713) (#11902)
-  * Remove unnecessary parentheses in wiki/view template (#11781)
-  * Doctor fix xorm.Count nil on sqlite error (#11741)
-
-## [1.11.6](https://github.com/go-gitea/gitea/releases/tag/v1.11.6) - 2020-05-30
-
-* SECURITY
-  * Fix missing authorization check on pull for public repos of private/limited org (#11656) (#11683)
-  * Use session for retrieving org teams (#11438) (#11439)
-* BUGFIXES
-  * Return json on 500 error from API (#11574) (#11660)
-  * Fix wrong milestone in webhook message (#11596) (#11612)
-  * Prevent (caught) panic on login (#11590) (#11598)
-  * Fix commit page js error (#11527)
-  * Use media links for img in post-process (#10515) (#11504)
-  * Ensure public repositories in private organizations are visible and fix admin organizations list (#11465) (#11475)
-  * Set correct Content-Type value for Gogs/Gitea webhooks (#9504) (#10456) (#11461)
-  * Allow all members of private orgs to see public repos (#11442) (#11459)
-  * Whenever the ctx.Session is updated, release it to save it before sending the redirect (#11456) (#11457)
-  * Forcibly clean and destroy the session on logout (#11447) (#11451)
-  * Fix /api/v1/orgs/* endpoints by changing parameter to :org from :orgname (#11381)
-  * Add tracked time fix to doctor (part of #11111) (#11138)
-  * Fix webpack chunk loading with STATIC_URL_PREFIX (#11526) (#11544)
-  * Remove unnecessary parentheses in wiki/revision.tmpl to allow 1.11 to build on go1.14  (#11481)
-
-## [1.11.5](https://github.com/go-gitea/gitea/releases/tag/v1.11.5) - 2020-05-09
-
-* BUGFIXES
-  * Prevent timer leaks in Workerpool and others (#11333) (#11340)
-  * Fix tracked time issues (#11349) (#11354)
-  * Add NotifySyncPushCommits to indexer notifier (#11309) (#11338)
-  * Allow X in addition to x in tasks (#10979) (#11335)
-  * When delete tracked time through the API return 404 not 500 (#11319) (#11326)
-  * Prevent duplicate records in organizations list when creating a repository (#11303) (#11325)
-  * Manage port in submodule refurl (#11305) (#11323)
-  * api.Context.NotFound(...) should tolerate nil (#11288) (#11306)
-  * Show pull request selection even when unrelated branches (#11239) (#11283)
-  * Repo: milestone: make /milestone/:id endpoint accessible (#11264) (#11282)
-  * Fix GetContents(): Dont't ignore Executables (#11192) (#11209)
-  * Fix submodule paths when AppSubUrl is not root (#11098) (#11176)
-  * Prevent clones and pushes to disabled wiki (#11131) (#11134)
-  * Remove errant third closing curly-bracket from account.tmpl and send account ID in account.tmpl (#11130)
-  * On Repo Deletion: Delete related TrackedTimes too (#11110) (#11125)
-  * Refresh codemirror on show pull comment tab (#11100) (#11122)
-  * Fix merge dialog on protected branch with missing required statuses (#11074) (#11084)
-  * Load pr Issue Poster on API too (#11033) (#11039)
-  * Fix release counter on API repository info (#10968) (#10996)
-  * Generate Diff and Patch direct from Pull head (#10936) (#10938)
-  * Fix rebase conflict detection in git 2.26 (#10929) (#10930)
-* ENHANCEMENT
-  * Fix 404 and 500 image size in small size screen (#11043) (#11049)
-  * Multiple Gitea Doctor improvements (#10943) (#10990) (#10064) (#9095) (#10991)
-
-## [1.11.4](https://github.com/go-gitea/gitea/releases/tag/v1.11.4) - 2020-04-01
-
-* BUGFIXES
-  * Only update merge_base if not already merged (#10909)
-  * Fix milestones too many SQL variables bug (#10880) (#10904)
-  * Protect against NPEs in notifications list (#10879) (#10883)
-  * Convert plumbing.ErrObjectNotFound to git.ErrNotExist in getCommit (#10862) (#10868)
-  * Convert plumbing.ErrReferenceNotFound to git.ErrNotExist in GetRefCommitID (#10676) (#10797)
-  * Account for empty lines in receive-hook message (#10773) (#10784)
-  * Fix bug on branch API (#10767) (#10775)
-  * Migrate to go-git/go-git v5.0.0 (#10735) (#10753)
-  * Fix hiding of fields in authorization source page (#10734) (#10752)
-  * Prevent default for linkAction (#10742) (#10743)
-
-## [1.11.3](https://github.com/go-gitea/gitea/releases/tag/v1.11.3) - 2020-03-10
-
-* BUGFIXES
-  * Prevent panic in stopwatch (#10670) (#10673)
-  * Fix bug on pull view when required status check no ci result (#10648) (#10651)
-  * Build explicitly with Go 1.13 (#10684)
-
-## [1.11.2](https://github.com/go-gitea/gitea/releases/tag/v1.11.2) - 2020-03-06
-
-* BREAKING
-  * Various fixes in login sources (#10428) (#10429)
-* SECURITY
-  * Ensure only own addresses are updated (#10397) (#10399)
-  * Logout POST action (#10582) (#10585)
-  * Org action fixes and form cleanup (#10512) (#10514)
-  * Change action GETs to POST (#10462) (#10464)
-  * Fix admin notices (#10480) (#10483)
-  * Change admin dashboard to POST (#10465) (#10466)
-  * Update markbates/goth (#10444) (#10445)
-  * Update crypto vendors (#10385) (#10398)
-* BUGFIXES
-  * Allow users with write permissions to modify issue descriptions and comments. (#10623) (#10626)
-  * Handle deleted base branch in PR (#10618) (#10619)
-  * Delete dependencies when deleting a repository (#10608) (#10616)
-  * Ensure executable bit is kept on the web editor (#10607) (#10614)
-  * Update mergebase in pr checker (#10586) (#10605)
-  * Fix release attachments being deleted while upgrading (#10572) (#10573)
-  * Fix redirection path if Slack webhook channel is invalid (#10566)
-  * Fix head.tmpl og:image picture location (#10531) (#10556)
-  * Fix 404 after activating secondary email (#10547) (#10553)
-  * Show Signer in commit lists and add basic trust (#10425 & #10511) (#10524)
-  * Fix potential bugs (#10513) (#10518)
-  * Use \[:space:\] instead of \\s (#10508) (#10509)
-  * Avoid mailing users that have explicitly unwatched an issue (#10475) (#10500)
-  * Handle push rejection message in Merge & Web Editor (#10373) (#10497)
-  * Fix SQLite concurrency problems by using BEGIN IMMEDIATE (#10368) (#10493)
-  * Fix double PR notification from API (#10482) (#10486)
-  * Show the username as a fallback on feeds if full name is blank (#10461)
-  * Trigger webhooks on issue label-change via API too (#10421) (#10439)
-  * Fix git reference type in webhooks (#10427) (#10432)
-  * Prevent panic on merge to PR (#10403) (#10408)
-  * Fix wrong num closed issues on repository when close issue via commit… (#10364) (#10380)
-  * Reading pull attachments should depend on read UnitTypePullRequests (#10346) (#10354)
-  * Set max-width on review-box comment box (#10348) (#10353)
-  * Prevent nil pointer in GetPullRequestCommitStatusState (#10342) (#10344)
-  * Fix protected branch status check settings (#10341) (#10343)
-  * Truncate long commit message header (#10301) (#10319)
-  * Set the initial commit status to Success otherwise it will always be Pending (#10317) (#10318)
-  * Don't manually replace whitespace during render (#10291) (#10315)
-* ENHANCEMENT
-  * Admin page for managing user e-mail activation (#10557) (#10579)
-
-## [1.11.1](https://github.com/go-gitea/gitea/releases/tag/v1.11.1) - 2020-02-15
-
-* BUGFIXES
-  * Repo name added to automatically generated commit message when merging (#9997) (#10285)
-  * Fix Workerpool deadlock (#10283) (#10284)
-  * Divide GetIssueStats query in smaller chunks (#10176) (#10282)
-  * Fix reply on code review (#10257)
-  * Stop hanging issue indexer initialisation from preventing shutdown (#10243) (#10249)
-  * Fix filter label emoji width (#10241) (#10244)
-  * Fix issue sidebar menus having an infinite height (#10239) (#10240)
-  * Fix commit between two commits calculation if there is only last commit (#10225) (#10226)
-  * Only check for conflicts/merging if the PR has not been merged in the interim (#10132) (#10206)
-  * Blacklist manifest.json & milestones user (#10292) (#10293)
-
-## [1.11.0](https://github.com/go-gitea/gitea/releases/tag/v1.11.0) - 2020-02-10
-
-* BREAKING
-  * Fix followers and following tabs in profile (#10202) (#10203)
-  * Make CertFile and KeyFile relative to CustomPath (#9868) (#9874)
-  * Remove unused endpoints (#9538)
-  * Prefix all user-generated IDs in markup (#9477)
-  * Enforce Gitea environment for pushes (#8982)
-  * Hide some user information via API if user have not enough permissions (#8655)
-  * Move startpage/homepage translation to crowdin (#8596)
-* SECURITY
-  * Never allow an empty password to validate (#9682) (#9683)
-  * Prevent redirect to Host (#9678) (#9679)
-  * Swagger hide search field (#9554)
-  * Add "search" to reserved usernames (#9063)
-  * Switch to fomantic-ui (#9374)
-  * Only serve attachments when linked to issue/release and if accessible by user (#9340)
-* FEATURES
-  * Webhooks should only show sender if it makes sense (#9601)
-  * Provide Default messages for merges (#9393)
-  * Add description to labels on create issue (#9392)
-  * Graceful Queues: Issue Indexing and Tasks (#9363)
-  * Default NO_REPLY_ADDRESS to DOMAIN (#9325)
-  * Allow FCGI over unix sockets (#9298)
-  * Graceful: Xorm, RepoIndexer, Cron and Others (#9282)
-  * Add API for Reactions (#9220)
-  * Graceful: Cancel Process on monitor pages & HammerTime (#9213)
-  * Graceful: Allow graceful restart for unix sockets (#9113)
-  * Graceful: Allow graceful restart for fcgi (#9112)
-  * Sign protected branches (#8993)
-  * Add Graceful shutdown for Windows and hooks for shutdown of goroutines (#8964)
-  * Add Gitea icon to Emojis (#8950)
-  * Expand/Collapse Files and Blob Excerpt while Reviewing/Comparing code (#8924)
-  * Allow Custom Reactions (#8886)
-  * Close/reopen issues by keywords in titles and comments (#8866)
-  * Allow incompletely specified Time Formats (#8816)
-  * Prevent upload (overwrite) of lfs locked file (#8769)
-  * Template Repositories (#8768)
-  * Add /milestones endpoint (#8733)
-  * Make repository management section handle lfs locks (#8726)
-  * Respect LFS File Lock on UI (#8719)
-  * Add team option to grant rights for all organization repositories (#8688)
-  * Enabling and disabling the commit button to prevent empty commits (web editor) (#8590)
-  * Add setting to disable BASIC authentication (#8586)
-  * Expose db.SetMaxOpenConns and allow non MySQL dbs to set conn pool params (#8528)
-  * Allow Protected Branches to Whitelist Deploy Keys (#8483)
-  * Push to create repo (#8419)
-  * Sign merges, CRUD, Wiki and Repository initialisation with gpg key (#7631)
-  * Add basic repository lfs management (#7199)
-* BUGFIXES
-  * Fix code-expansion arc-green theme bug (#10180) (#10185)
-  * Prevent double wait-group decrement (#10170) (#10175)
-  * Allow emoji on review head comments (#10159) (#10174)
-  * Fix issue/pull link (#10158) (#10173)
-  * Fix push-create SSH bugs (#10145) (#10151)
-  * Prevent DeleteUser API abuse (#10125) (#10128)
-  * Fix issues/pulls dashboard paging error (#10114) (#10115)
-  * Add button to revert SimpleMDE to plain textarea (#10099) (#10102)
-  * Fix branch page pull request title and link error (#10092) (#10097)
-  * Fix PR API: Only try to get HeadBranch if HeadRepo exist (#10029) (#10088)
-  * Update topics repo count when deleting repository (#10051) (#10081)
-  * Show pull icon on pull requests (#10061) (#10062)
-  * Fix milestone API state parameter unhandled (#10049) (#10052)
-  * Move to using a temporary repo for pushing new PRs (#10009) (#10042)
-  * Fix wiki raw view on sub path (#10002) (#10040)
-  * Ensure that feeds are appropriately restricted (#10018) (#10019)
-  * Sanitize credentials in mirror form (#9975) (#9991)
-  * Close related pull requests when deleting head repository or head branch (#9927) (#9974)
-  * Switch to use -f instead of -F for sendmail (#9961) (#9970)
-  * Fix file rename/copy not supported by indexer (#9965) (#9967)
-  * Fix repo indexer not updating upon push (#9957) (#9963)
-  * Don't convert ellipsis in markdown (#9905) (#9937)
-  * Fixed repo link in generated comment for cross repository dependency (#9863) (#9935)
-  * Check if diff actually contains sections when rendering (#9926) (#9933)
-  * Fix wrong hint when status checking is running on pull request view (#9886) (#9928)
-  * Fix RocketChat (#9908) (#9921)
-  * Do not try to recreate ldap user if they are already created (#9900) (#9919)
-  * Create terminated channel in queue_redis (#9910) (#9911)
-  * Prevent empty LDAP search result from deactivating all users (#9879) (#9896)
-  * Fix wrong permissions check when issues/prs shared operations (#9885) (#9889)
-  * Check user != nil before checking values (#9881) (#9883)
-  * Allow hyphen in language name (#9873) (#9880)
-  * Ensure that 2fa is checked on reset-password (#9857) (#9876)
-  * Fix issues/pulls dependencies problems (#9842) (#9864)
-  * Fix markdown anchor links (#9673) (#9840)
-  * Allow assignee on Pull Creation when Issue Unit is deactivated (#9836) (#9837)
-  * Fix download file wrong content-type (#9825) (#9834)
-  * Fix wrong poster identity on a migrated pull request when submit review (#9827) (#9830)
-  * Fix database dump when log directory is missing (#9818) (#9819)
-  * Fix compare (#9808) (#9814)
-  * Fix push-to-create (#9772) (#9797)
-  * Fix missing msteam webhook on organization (#9781) (#9794)
-  * Fix missing unlock in uniquequeue (#9790) (#9791)
-  * Fix add team on collaborator page when same name as organization (#9778)
-  * DeleteRepoFile incorrectly handles Delete to new branch (#9769) (#9775)
-  * Fix milestones page (#9771)
-  * Fix SimpleMDE quote reply (#9757) (#9768)
-  * Fix missing updated time on migrated issues and comments (#9744) (#9764)
-  * Move Errored PRs out of StatusChecking (#9675) (#9726)
-  * Make hook status printing configurable with delay (#9641) (#9725)
-  * ​Fix /repos​/issues​/search (#9698) (#9724)
-  * Silence fomantic error regarding tabs (#9713) (#9718)
-  * Remove unused lock (#9709) (#9710)
-  * Remove q.lock.Unlock() in setInternal to prevent panic (#9705) (#9706)
-  * Load milestone in API PR list (#9671) (#9700)
-  * Don't attempt to close issue if already closed (#9696) (#9699)
-  * Remove google font call (#9668) (#9681)
-  * Eliminate horizontal scroll caused by footer (#9674)
-  * Fix nil reference in repo generation (#9660) (#9666)
-  * Add HTML URL to API Issues (#9654) (#9661)
-  * Add PR review webhook to Telegram (#9653) (#9655)
-  * Use filepath.IsAbs instead of path.IsAbs (#9651) (#9652)
-  * Disable remove button on repository teams when have access to all (#9640)
-  * Clean up old references on branch delete (#9614)
-  * Hide public repos owned by private orgs (#9609)
-  * Fix access issues on milestone and issue overview pages. (#9603)
-  * Fix error logged when repos qs is empty (#9591)
-  * Dont trigger notification twice on issue assignee change (#9582)
-  * Fix mirror pushed commit actions (#9572)
-  * Allow only specific columns to be updated on issue via API (#9189) (#9539)
-  * Fix default avatar for ghost user (#9536)
-  * Fix download of release attachments with same name (#9529)
-  * Resolve deprecated INI conversion (#9525)
-  * Ignore empty avatars during database migration (#9520)
-  * Fix deleted branch isn't removed when push the branch again (#9516)
-  * Fix repository issues pagination bug when there are more than one label filter (#9512)
-  * Fix SetExpr failed (#9506)
-  * Remove obsolete file private/push_update.go (#9503)
-  * When recreating hooks, delete them first so they are recreated with the umask (#9502)
-  * Properly enforce gitea environment for pushes (#9501)
-  * Fix datarace on repo indexer queue (#9490)
-  * Add call to load repo prior to redirect in add/remove dependency code (#9484)
-  * Wrap the code indexer (#9476)
-  * Use Req.URL.RequestURI() to cope with FCGI urls (#9473)
-  * Set default ssh.minimum_key_sizes (#9466)
-  * Fixed issue with paging in /repos/{owner}/{repo}/git/trees/{sha} api (#9459)
-  * Fix wrong notification on merge (#9450)
-  * Issue with Migration rule v111 (#9449)
-  * Trigger webhook when deleting a branch after merging a PR (#9424)
-  * Add migration to sanitize repository original_url (#9423)
-  * Use OriginalURL instead of CloneAddr in migration logging (#9418)
-  * Push update after branch is restored (#9416)
-  * Fix wrong migration (#9381)
-  * Fix show repositories filter (#9234) (#9379)
-  * Fix Slack webhook payload title generation to work with Mattermost (#9378)
-  * Fix double webhook for new PR (#9375)
-  * AuthorizedKeysCommand should not query db directly (#9371)
-  * Fix missed change to GetManager() (#9361)
-  * Fix cache problem on dashboard (#9358)
-  * RepoIndexer: DefaultBranch needs to be prefixed by BranchPrefix (#9356)
-  * Fix protected branch using IssueID (#9348)
-  * Fix nondeterministic behavior (#9341)
-  * Fix PR/issue redirects when having external tracker (#9339)
-  * Remove release attachments which repository has been deleted (#9334)
-  * Fix issue indexer not triggered when migrating a repository (#9332)
-  * Add SyncTags to uploader interface (#9326)
-  * Fix bug that release attachment files not deleted when deleting repository (#9322)
-  * Only sync tags after all migration release batches are completed (#9319)
-  * File Edit: Author/Committer interchanged (#9297)
-  * prebuild CSS/JS before xgo release binaries (#9293)
-  * Log: Ensure FLAGS=none shows no flags (#9287)
-  * Make Diff Detail on Pull Request Changed File UI always on Top (#9280)
-  * Switch CSS minifier to cssnano (#9260)
-  * Fix latest docker image haven't include static files. (#9252)
-  * Don't link wiki revision to commit (#9244)
-  * Change review content column to type text in db (#9229)
-  * Fixed topic regex pattern and added search by topic links after save (#9219)
-  * Add language to user API response (#9215)
-  * Correct tooltip message blocked by dependencies (#9211)
-  * Add SimpleMDE and Fix Image Paste for Issue/Comment Editor (#9197)
-  * Fix panic when diff (#9187)
-  * Fix #9151 - smtp logger configuration sendTos should be an array (#9154)
-  * Fix max length check and limit in multiple repo forms (#9148)
-  * Always Show Password Field on Link Account Sign-in Page (#9147)
-  * Properly fix displaying virtual session provider in admin panel (#9137)
-  * Fix race condition on indexer (#9136)
-  * Fix team links in HTML rendering (#9127)
-  * Fix race condition in ReplaceSanitizer (#9123)
-  * Fix what information is shown about user in API (#9115)
-  * Fix nil context user for template repositories (#9099)
-  * Hide given credentials for migrated repos. (#9097)
-  * Fix reCAPTCHA API URL (#9083)
-  * Fix password checks on admin create/edit user (#9076)
-  * Update golang.org/x/crypto vendor to use acme v2 (#9056)
-  * Ensure Written is set in GZIP ProxyResponseWriter (#9018)
-  * Fix wrong system notice when repository is empty (#9010)
-  * Fix broken link to branch from issue list (#9003)
-  * Fix bug when pack js (#8992)
-  * New review approvals shouldn't require a message (#8991)
-  * Shadow password correctly for session config (#8984)
-  * Don't send notification on pending reviews (#8943)
-  * Fix Notify Create Ref Error on tag creation (#8936)
-  * Convert EOL to UNIX-style to render MD properly (#8925)
-  * Migrate temp_repo.go to use git.NewCommand  (#8918)
-  * Fix issue with user.fullname (#8902)
-  * Add Close() method to gogitRepository (#8901)
-  * Enable punctuations ending mentions (#8889)
-  * Fix password complexity check on registration (#8887)
-  * Fix require external registration password (#8885)
-  * Fix edit content button on migrated issue content (#8877)
-  * Fix permission checks for close/reopen from commit (#8875)
-  * Fix API Bug (fail on empty assignees) (#8873)
-  * Stop using git count-objects and use raw directory size for repository (#8848)
-  * Fix count for commit graph last page (#8843)
-  * Fix to close opened io resources as soon as not needed (#8839)
-  * Improve notification (#8835)
-  * Fix new user form for non-local users (#8826)
-  * Fix: remove duplicated signed commit icons (#8820)
-  * Fix (open/closed) issue count when label excluded (#8815)
-  * Fix SSH2 conditional in key parsing code (#8806)
-  * Fix 500 when edit hook (#8782)
-  * On windows set core.longpaths true (#8776)
-  * Fix commit expand button to not go to commit link (#8745)
-  * Avoid re-issuing redundant cross-references. (#8734)
-  * Fix milestone close timestamp function (#8728)
-  * Move webhook codes from service to webhook notification (#8712)
-  * Show zero lines on the line counter if the file empty (#8700)
-  * Fix deadline on update issue or PR via API (#8696)
-  * make call createMilestoneComment on newIssue func (#8678)
-  * Send tag create and push webhook when release created on UI (#8671)
-  * Prevent chrome download page as html with alt + click (#8669)
-  * Fix 500 when getting user as unauthenticated user (#8653)
-  * Graceful fixes (#8645)
-  * Add SubURL to redirect path (#8632) (#8634)
-  * Fix extra columns from `label` table (#8633)
-  * Add SubURL to redirect path for transferred/renamed repos (#8632)
-  * Fix bug when migrate from API (#8631)
-  * Allow to merge if file path contains " or \ (#8629)
-  * Prevent removal of non-empty emoji panel following selection of duplicate (#8609)
-  * Ensure default gpg settings not nil and found commits have reference to repo (#8604)
-  * Set webhook Content-Type for application/x-www-form-urlencoded (#8599)
-  * Fix #8582 by handling empty repos (#8587)
-  * Fix of the diff statistics view on pull request's (#8581)
-  * Fix bug on pull requests when transfer head repository (#8564)
-  * Fix template error on account page (#8562)
-  * Allow externalID to be UUID (#8551)
-  * Fix ignored error on editorconfig api (#8550)
-  * Fix user avatar name (#8547)
-  * Ensure that GitRepo is set on Empty repositories (#8539)
-  * Add missed close in ServeBlobLFS (#8527)
-  * Fix migrate mirror 500 bug (#8526)
-  * Fix password complexity regex for special characters (on master) (#8525)
-* ENHANCEMENTS
-  * Explicitly refer to PR in squash-merge commit message in case of external tracker (#9844) (#9855)
-  * Add a /user/login landing page option (#9622)
-  * Some more e-mail notification fixes (#9596)
-  * Add branch protection option to block merge on requested changes. (#9592)
-  * Add footer extra links template (#9576)
-  * Fix for a wrong URL in activity page of repository.  (#9571)
-  * Update default issue template (#9568)
-  * Change markdown rendering from blackfriday to goldmark  (#9533)
-  * Extend file create api with dates (#9464)
-  * Add ActionCommentPull action (#9456)
-  * Response for context on retry database connection (#9444)
-  * Refactor webhooks to reduce code duplication (#9422)
-  * update couchbase deps for new license (#9419)
-  * Add .ignore file for search tools (#9417)
-  * Remove unsued struct (#9405)
-  * Hide not allowed Reactions (#9387)
-  * Remove text from action-only webhooks (#9377)
-  * Move PushToBaseRepo from models to services/pull (#9352)
-  * Site admin could view org's members (#9346)
-  * Sleep longer if request speed is over github limitation (#9335)
-  * Refactor comment (#9330)
-  * Refactor code indexer (#9313)
-  * Remove SavePatch and generate patches on the fly (#9302)
-  * Move some pull request functions from models to services (#9266)
-  * Update JS dependencies (#9255)
-  * Show label list on label set (#9251)
-  * Redirect issue if repo has configured external tracker. (#9247)
-  * Allow kbd tags (#9245)
-  * Remove unused comment actions (#9222)
-  * Fixed errors logging in dump.go (#9218)
-  * Expose release counter to repo API response (#9214)
-  * Make consistent links to repository in the Slack/Mattermost notificiations (#9205)
-  * Expose pull request counter to repo API response (#9202)
-  * Extend TrackedTimes API (#9200)
-  * Extend StopWatch API (#9196)
-  * Move code indexer related code to a new package (#9191)
-  * Docker: ask s6 to stop all service when gitea stop (#9171)
-  * Variable expansion in repository templates (#9163)
-  * Add avatar and issue labels to template repositories (#9149)
-  * Show single review comments in the PR conversation tab (#9143)
-  * Extract createComment (#9125)
-  * Move PushUpdateOptions from models to repofiles (#9124)
-  * Alternate syntax for cross references (#9116)
-  * Add USE_SERVICE_WORKER setting (#9110)
-  * Only show part of members on orgnization dashboard and add paging for orgnization members page (#9092)
-  * Explore page: Add topic param to pagination (#9077) (#9078)
-  * Markdown: Sanitizier Configuration (#9075)
-  * Add password requirement info on error (#9074)
-  * Allow authors to use act keywords in PR content (#9059)
-  * Move modules/gzip to gitea.com/macaron/gzip (#9058)
-  * Branch protection: Possibility to not use whitelist but allow anyone with write access (#9055)
-  * Context menus for comments, add quote reply (#9043)
-  * Update branch API endpoint to show effective branch protection. (#9031)
-  * Move git graph from models to modules/graph (#9027)
-  * Move merge actions to notification (#9024)
-  * Move mirror sync actions to notification (#9022)
-  * Add retry for migration http/https requests (#9019)
-  * Rewrite delivery of issue and comment mails (#9009)
-  * Add review comments to mail notifications (#8996)
-  * Refactor pull request review (#8954)
-  * Githook highlighter (#8932)
-  * Add git hooks and webhooks to template repositories; move to services (#8926)
-  * Only view branch or tag if it match refType requested. (#8899)
-  * Drop Admin attribute based on LDAP when login (continue #1743) (#8849)
-  * Add additional periods to activity page (#8829)
-  * Update go-org to optimize code (#8824)
-  * Move some actions to notification/action (#8779)
-  * Webhook support custom proxy (#8760)
-  * Fix API deadline removal (#8759)
-  * Mark review comment as invalidated when file is deleted (#8751)
-  * Move pull list code to a separate file (#8748)
-  * Move webhook to a standalone package under modules (#8747)
-  * Multi repo select on issue page (#8741)
-  * apply exclude label on milestone issue list (#8739)
-  * Move issue notifications and assignee man (#8713)
-  * Move issue change content from models to service (#8711)
-  * Move issue change status from models to service (#8691)
-  * Move more issue assignee code from models to issue service (#8690)
-  * Create PR on Current Repository by Default (#8670)
-  * Improve Open Graph Protocol (#8637)
-  * Batch hook pre- and post-receive calls (#8602)
-  * Improve webhooks (#8583)
-  * Move transfer repository and rename repository on a service package and start action notification (#8573)
-  * Implement/Fix PR review webhooks (#8570)
-  * Rewrite markdown rendering to blackfriday v2 and rewrite orgmode rendering to go-org (#8560)
-  * Move some repositories' operations to a standalone service package (#8557)
-  * Allow more than 255 characters for tokens in external_login_user table (#8554)
-  * Move issue label operations to issue service package (#8553)
-  * Adjust error reporting from merge failures and use LC_ALL=C for git (#8548)
-  * Mail assignee when issue/pull request is assigned (#8546)
-  * Allow committing / adding empty files using the web ui (#8420) (#8532)
-  * Move sync mirror actions to mirror service package (#8518)
-  * Remove arrows on numeric inputs (#8516)
-  * Support inline rendering of CUSTOM_URL_SCHEMES (#8496)
-  * Recalculate repository access only for specific user (#8481)
-  * Add download button for rull request diff- and patch-file (#8470)
-  * Add single sign-on support via SSPI on Windows (#8463)
-  * Move change issue title from models to issue service package (#8456)
-  * Add included tag on  branch view (#8449)
-  * Make static resouces web browser cache time customized on app.ini (#8442)
-  * Enable Uploading/Removing Attachments When Editing an Issue/Comment (#8426)
-  * Add pagination to commit graph page (#8360)
-  * Use templates for issue e-mail subject and body (#8329)
-  * Move clearlabels from models to issue service (#8326)
-  * Move AddTestPullRequestTask to pull service package from models (#8324)
-  * Team permission to create repository in organization (#8312)
-  * Allows external rendering of other filetypes (#8300)
-  * Add 'Alt + click' feature to exclude labels (#8199)
-  * Configurable close and reopen keywords for PRs (#8120)
-  * Configurable URL for static resources (#7911)
-  * Unifies commit list in repository commit table and wiki revision page (#7907)
-  * Allow cross-repository dependencies on issues (#7901)
-  * Auto-subscribe user to repository when they commit/tag to it (#7657)
-  * Restore Graceful Restarting & Socket Activation (#7274)
-  * wiki - add 'write' 'preview' buttons to wiki edit like in issues (#7241)
-  * Change target branch for pull request (#6488)
-  * Display PR commits and diffs using base repo rather than forked (#3648)
-* TESTING
-  * Add debug option to serv to help debug problems (#9492)
-  * Fix the intermittent TestGPGGit failures (#9360)
-  * Testing: Update postgres sequences (#9304)
-  * Missed defer prepareTestEnv (#9285)
-  * Fix "data race" in testlogger (#9159)
-  * Yet another attempt to fix the intermittent failure of gpg git test (#9146)
-  * integrations: Fix Dropped Test Errors (#9040)
-  * services/mirror: fix dropped test errors (#9007)
-  * Fix intermittent GPG Git test failure (#8968)
-  * Update Github Migration Tests (#8893) (#8938)
-  * Update heatmap fixtures to restore tests (#8615)
-* TRANSLATION
-  * Fix Korean locales (#9761) (#9780)
-  * Fix placeholders in the error message (#9060)
-  * Fix spelling of admin.users.max_repo_creation (#8934)
-  * Improve german translation of homepage (#8549)
-* BUILD
-  * Fix webpack polyfills (#9735) (#9738)
-  * Update gitea.com/macaron to 1.4.0 (#9608)
-  * Upgrade lato fonts to v16. (#9498)
-  * Update alpine to 3.11 (#9440)
-  * Upgrade blevesearch (#9177)
-  * Remove built js/css files from git (#9114)
-  * Move semantic.dropdown.custom.js to webpack (#9064)
-  * Check compiled files during build (#9042)
-  * Enable lazy-loading of gitgraph.js (#9036)
-  * Pack web_src/js/draw.js to public/js/index.js (#8975)
-  * Modernize js and use babel (#8973)
-  * Move index.js to web_src and use webpack to pack them (#8598)
-  * Restrict modules/graceful to non-windows build and shim IsChild (#8537)
-  * Upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501)
-* DOCS
-  * Swagger info corrections (#9441) (#9558)
-  * Add ALLOW_ONLY_EXTERNAL_REGISTRATION to config cheat sheet (#8986)
-  * Rephrase comment about RuntimeDirectory option in systemd config (#8912)
-  * Explicitly indicate the socket unit to use the service unit "gitea.service" (#8804)
-  * Adjust the must-change-password help (#8755)
-  * Add notice to docs for migrating from more recent versions of Gogs (#8724)
-  * Add explicit info about customization of homepage (#8694)
-  * Change external asciidoctor tool to embedded mode (#8677)
-  * Add Docker fail2ban configuration (#8642)
-  * Correct some outdated statements in the contributing guidelines (#8612)
-  * Basic Design guidelines (describing different parts of the code) (#8601)
-  * Display Gitea logo in Readme (#8592)
-  * Fix building from source docs to ref AppWorkPath (#8567)
-  * Update the provided gitea.service to mention socket activation (#8531)
-  * Doc added how to setup email (#8520)
-* MISC
-  * Backport Locales [2020-01-14] (#9773)
-  * Add translatable Powered by Gitea text in footer (#9600)
-  * Add contrib/environment-to-ini (#9519)
-  * Remove unnecessary loading of settings in update hook (#9496)
-  * Update gitignore list (#9437)
-  * Update license list (#9436)
-  * Fix background reactions in the arc-green theme (#9421)
-  * Update and fix chardet import (#9351)
-  * Ensure LF on checkouts and in editors (#9259)
-  * Fixed topics margin (#9248)
-  * Add comment to exported function WindowsServiceName (make revive) (#9241)
-  * Remove empty lines on issues/pulls page (#9232)
-  * Fix Add Comment Button's "+" Position (#9140)
-  * Add first issue comment hashtag (#9052)
-  * Change some label colors (#9051)
-  * Fix double scroll in branch dropdown (#9048)
-  * Add comment highlight when target from url (#9047)
-  * Update display of reactions to issues and comments (#9038)
-  * Button tooltip formatting under Branches (#9034)
-  * Allow setting default branch via API (#9030)
-  * Update dashboard context for PR reviews (#8995)
-  * Show repository size in repo home page and settings (#8940)
-  * Allow to add and remove all repositories to/from team. (#8867)
-  * Show due date in dashboard issues list (#8860)
-  * Theme arc-green: reverse heatmap colors (#8840)
-  * Project files table style update (#8757)
-  * gitignore debugging file from vscode (#8740)
-  * Add API for Issue set Subscription (#8729)
-  * Make 100% width search bar (#8710)
-  * Update color theme for heatmap (#8709)
-  * Add margin to title_wip_desc (#8705)
-  * Improve visibility of "Pending" indicator (#8685)
-  * Improve accessibility of dropdown menus (#8638)
-  * Make /users/{username}/repos list private repos the current user has access to (#8621)
-  * Prevent .code-view from overriding font on icon fonts (#8614)
-  * Add id references on all issue events to allow internal linking (#8608)
-  * Upgrade xorm to v0.8.0 (#8536)
-  * Upgrade gopkg.in/ini.v1 (#8500)
-  * Update CodeMirror to version 5.49.0 (#8381)
-  * Wiki editor: enable side-by-side button (#7242)
-
-## [1.10.6](https://github.com/go-gitea/gitea/releases/tag/v1.10.6) - 2020-03-10
-
-This is a re-tag version of v1.10.5 and also explicitly built with Go 1.13.
-
-WARNING: v1.10.5 is incorrectly tagged targeting 1.12-dev and should __not__ be used.
-
-## [1.10.5](https://github.com/go-gitea/gitea/releases/tag/v1.10.5) - 2020-03-06
-
-* BUGFIXES
-  * Fix release attachments being deleted while upgrading (#10572) (#10574)
-
-## [1.10.4](https://github.com/go-gitea/gitea/releases/tag/v1.10.4) - 2020-02-16
-
-* FEATURE
-  * Prevent empty LDAP search from deactivating all users (#9879) (#9890)
-* BUGFIXES
-  * Fix reply on code review (#10261) (#10227)
-  * Fix branch page pull request title and link error (#10092) (#10098)
-  * Fix milestone API state parameter unhandled (#10049) (#10053)
-  * Fix wiki raw view on sub path (#10002) (#10041)
-  * Fix RocketChat Webhook (#9908) (#9921) (#9925)
-  * Fix bug about wrong dependencies permissions check and other wrong permissions check (#9884) (Partial backport #9842)
-  * Ensure that 2fa is checked on reset-password (#9857) (#9877)
-
-## [1.10.3](https://github.com/go-gitea/gitea/releases/tag/v1.10.3) - 2020-01-17
-
-* SECURITY
-  * Hide credentials when submitting migration (#9102) (#9704)
-  * Never allow an empty password to validate (#9682) (#9684)
-  * Prevent redirect to Host (#9678) (#9680)
-  * Hide public repos owned by private orgs (#9609) (#9616)
-* BUGFIXES
-  * Allow assignee on Pull Creation when Issue Unit is deactivated (#9836) (#9838)
-  * Fix download file wrong content-type (#9825) (#9835)
-  * Fix wrong identify poster on a migrated pull request when submit review (#9827) (#9831)
-  * Fix dump non-exist log directory (#9818) (#9820)
-  * Fix compare (#9808) (#9815)
-  * Fix missing msteam webhook on organization (#9781) (#9795)
-  * Fix add team on collaborator page when same name as organization (#9783)
-  * Fix cache problem on dashboard (#9358) (#9703)
-  * Send tag create and push webhook when release created on UI (#8671) (#9702)
-  * Branches not at ref commit ID should not be listed as Merged (#9614) (#9639)
-
-## [1.10.2](https://github.com/go-gitea/gitea/releases/tag/v1.10.2) - 2020-01-02
-
-* BUGFIXES
-  * Allow only specific Columns to be updated on Issue via API (#9539) (#9580)
-  * Add ErrReactionAlreadyExist error (#9550) (#9564)
-  * Fix bug when migrate from API (#8631) (#9563)
-  * Use default avatar for ghost user (#9536) (#9537)
-  * Fix repository issues pagination bug when there are more than one label filter (#9512) (#9528)
-  * Fix deleted branch not removed when push the branch again (#9516) (#9524)
-  * Fix missing repository status when migrating repository via API (#9511)
-  * Trigger webhook when deleting a branch after merging a PR (#9510)
-  * Fix paging on /repos/{owner}/{repo}/git/trees/{sha} API endpoint (#9482)
-  * Fix NewCommitStatus (#9434) (#9435)
-  * Use OriginalURL instead of CloneAddr in migration logging (#9418) (#9420)
-  * Fix Slack webhook payload title generation to work with Mattermost (#9404)
-  * DefaultBranch needs to be prefixed by BranchPrefix (#9356) (#9359)
-  * Fix issue indexer not triggered when migrating a repository (#9333)
-  * Fix bug that release attachment files not deleted when deleting repository (#9322) (#9329)
-  * Fix migration releases (#9319) (#9326) (#9328)
-  * Fix File Edit: Author/Committer interchanged (#9297) (#9300)
-
-## [1.10.1](https://github.com/go-gitea/gitea/releases/tag/v1.10.1) - 2019-12-05
-
-* BUGFIXES
-  * Fix max length check and limit in multiple repo forms (#9148) (#9204)
-  * Properly fix displaying virtual session provider in admin panel (#9137) (#9203)
-  * Upgrade levelqueue to 0.1.0 (#9192) (#9199)
-  * Fix panic when diff (#9187) (#9193)
-  * Smtp logger configuration sendTos should be an array (#9154) (#9157)
-  * Always Show Password Field on Link Account Sign-in Page (#9150)
-  * Create PR on Current Repository by Default (#8670) (#9141)
-  * Fix race on indexer (#9136) (#9139)
-  * Fix reCAPTCHA URL (#9119)
-  * Hide migrated credentials (#9098)
-  * Update golang.org/x/crypto vendor to use acme v2 (#9056) (#9085)
-  * Fix password checks on admin create/edit user (#9076) (#9081)
-  * Fix add search as a reserved username (#9063) (#9065)
-  * Fix permission checks for close/reopen from commit (#8875) (#9033)
-  * Ensure Written is set in GZIP ProxyResponseWriter (#9018) (#9025)
-  * Fix broken link to branch from issue list (#9003) (#9021)
-  * Fix wrong system notice when repository is empty (#9020)
-  * Shadow password correctly for session config (#8984) (#9002)
-
-## [1.10.0](https://github.com/go-gitea/gitea/releases/tag/v1.10.0) - 2019-11-13
-
-* BREAKING
-  * Fix deadline on update issue or PR via API (#8698)
-  * Hide some user information via API if user doesn't have enough permission (#8655) (#8657)
-  * Remove legacy handling of drone token (#8191)
-  * Change repo search to use exact match for topic search. (#7941)
-  * Add pagination for admin api get orgs and fix only list public orgs bug (#7742)
-  * Implement the ability to change the ssh port to match what is in the gitea config (#7286)
-* SECURITY
-  * Fix issue with user.fullname (#8903)
-  * Ignore mentions for users with no access (#8395)
-  * Be more strict with git arguments (#7715)
-  * Extract the username and password from the mirror url (#7651)
-  * reserve .well-known username (#7637)
-* FEATURES
-  * Org/Members: display 2FA members states + optimize sql requests (#7621)
-  * SetDefaultBranch on pushing to empty repository (#7610)
-  * Adds side-by-side diff for images (#6784)
-  * API method to list all commits of a repository (#6408)
-  * Password Complexity Checks  (#6230)
-  * Add option to initialize repository with labels (#6061)
-  * Add additional password hash algorithms (#6023)
-* BUGFIXES
-  * Allow to merge if file path contains " or \ (#8629) (#8771)
-  * On windows set core.longpaths true (#8776) (#8786)
-  * Fix 500 when edit hook (#8782) (#8789)
-  * Fix Checkbox at RepoSettings Protected Branch (#8799) (#8801)
-  * Fix SSH2 conditional in key parsing code (#8806) (#8810)
-  * Fix commit expand button to not go to commit link (#8745) (#8825)
-  * Fix new user form for non-local users (#8826) (#8828)
-  * Fix to close opened io resources as soon as not needed (#8839) (#8846)
-  * Fix edit content button on migrated issue content (#8877) (#8884)
-  * Fix require external registration password (#8885) (#8890)
-  * Fix password complexity check on registration (#8887) (#8888)
-  * Update Github Migration Tests (#8896) (#8938) (#8945)
-  * Enable punctuations ending mentions (#8889) (#8894)
-  * Add Close() method to gogitRepository (#8901) (#8956)
-  * Hotfix for review actions and notifications (#8965)
-  * Expose db.SetMaxOpenConns and allow non MySQL dbs to set conn pool params (#8528) (#8618)
-  * Fix milestone close timestamp (#8728) (#8730)
-  * Fix 500 when getting user as unauthenticated user (#8653) (#8663)
-  * Fix 'New Issue Missing Milestone Comment' (#8678) (#8681)
-  * Use AppSubUrl for more redirections (#8647) (#8651)
-  * Add SubURL to redirect path (#8632) (#8634)
-  * Fix template error on account page (#8562) (#8622)
-  * Allow externalID to be UUID (#8551) (#8624)
-  * Prevent removal of non-empty emoji panel following selection of duplicate (#8609) (#8623)
-  * Update heatmap fixtures to restore tests (#8615) (#8616)
-  * Ensure that diff stats can scroll independently of the diff (#8581) (#8621)
-  * Webhook: set Content-Type for application/x-www-form-urlencoded (#8600)
-  * Fix #8582 by handling empty repos (#8587) (#8594)
-  * Fix bug on pull requests when transfer head repository (#8564) (#8569)
-  * Add missed close in ServeBlobLFS (#8527) (#8542)
-  * Ensure that GitRepo is set on Empty repositories (#8539) (#8541)
-  * Fix migrate mirror 500 bug (#8526) (#8530)
-  * Fix password complexity regex for special characters (#8524)
-  * Prevent .code-view from overriding font on icon fonts (#8614) (#8627)
-  * Allow more than 255 characters for tokens in external_login_user table (#8554)
-  * Fix errors in create org UI regarding team access permission (#8506)
-  * Fix bug on FindExternalUsersByProvider (#8504)
-  * Create .ssh dir as necessary (#8486)
-  * IsBranchExist: return false if provided name is empty (#8485)
-  * Making openssh listen on SSH_LISTEN_PORT not SSH_PORT (#8477)
-  * Add check for empty set when dropping indexes during migration (#8471)
-  * LFS files are relative to LFS content path, ensure that when deleting they are made relative to this (#8455)
-  * Ensure Request Body Readers are closed in LFS server (#8454)
-  * Fix template bug on mirror repository setting page (#8438)
-  * Fix migration v96 to keep issue attachments (#8435)
-  * Update strk.kbt.io/projects/go/libravatar to latest (#8429)
-  * Singular form for files that has only one line (#8416)
-  * Check for either escaped or unescaped wiki filenames (#8408)
-  * Allow users with explicit read access to give approvals (#8382)
-  * Fix editor commit to new branch if PR disabled (#8375)
-  * readd .markdown class to all markup renderers (#8357)
-  * Upgrade xorm to v0.7.9 to fix some bugs (#8354)
-  * Fix column name ambiguity in GetUserIssueStats() (#8347)
-  * Change general form binding to gogs form (#8334)
-  * Fix pull request commit status in user dashboard list (#8321)
-  * Fix repo_admin_change_team_access always checked in org settings (#8319)
-  * Update to github.com/lafriks/xormstore@v1.3.0 (#8317)
-  * Show correct commit status in PR list (#8316)
-  * Bugfix for image compare and minor improvements to image compare (#8289)
-  * Update xorm (#8286)
-  * Fix API for edit and delete release attachment (#8285)
-  * Fix nil object access in some conditions when parsing cross references (#8281)
-  * Fix label count (#8267)
-  * Only show teams access for organization repositories on collaboration setting page (#8265)
-  * Test more reserved usernames (#8263)
-  * Rewrite reference processing code in preparation for opening/closing from comment references (#8261)
-  * Fix assets key on release webhook (#8253)
-  * Allow registration when button is hidden (#8237)
-  * Fix release API URL generation (#8234)
-  * Fix milestone num_issues (#8221)
-  * MS Teams webhook misses commit messages (#8209)
-  * Fix data race (#8204)
-  * Fix team user api (#8172)
-  * Fix pull merge 500 error caused by git-fetch breaking behaviors (#8161)
-  * Make show private icon when repo avatar set (#8144)
-  * Add reviewers as participants (#8121)
-  * Fix Go 1.13 private repository go get issue (#8112)
-  * feat: highlight issue references with : (#8101)
-  * Make AllowedUsers configurable in sshd_config (#8094)
-  * Strict name matching for Repository.GetTagID() (#8074)
-  * Avoid ambiguity of branch/directory names for the git-diff-tree command (#8066)
-  * Add change title notification for issues (#8061)
-  * [ssh] fix the config specification in the authorized_keys template (#8031)
-  * Fix reading git notes from nested trees (#8026)
-  * Fixes synchronize tags to releases for repository - makes sure we are only getting tag refs (#7990)
-  * Fix adding default Telegram webhook (#7972)
-  * Run CORS handler first for /api routes (#7967)
-  * Abort synchronization from LDAP source if there is some error. (#7960)
-  * Fix wrong sender when send slack webhook (#7918)
-  * Fix bug when migrating a private repository (#7917)
-  * Evaluate emojis in commit messages in list view (#7906)
-  * Fix upload file type check (#7890)
-  * lfs/lock: round locked_at timestamp to second (#7872)
-  * fix non existent milestone with 500 error instead of 404 (#7867)
-  * gpg/bugfix: Use .ExpiredUnix.IsZero to display green color of forever valid gpg key (#7846)
-  * Fix duplicate call of webhook (#7821)
-  * Enable switching to a different source branch when PR already exists (#7819)
-  * Convert files to utf-8 for indexing (#7814)
-  * Do not fetch all refs in pull-request compare (#7797)
-  * Fix multiple bugs with statuses endpoints at API (#7785)
-  * Restore functionality for early gits (#7775)
-  * Fix Slack webhook fork message (#7774)
-  * Rewrite existing repo units if setting is not included in api body (#7763)
-  * Fix rename failed when rewrite public keys (#7761)
-  * Fix approvals counting (#7757)
-  * Add migration step to remove old repo_indexer_status orphaned records (#7746)
-  * Fix repo_index_status lingering when deleting a repository (#7734)
-  * Remove camel case tokenization from repo indexer (#7733)
-  * Fix milestone completness calculation when migrating (#7725)
-  * Regression: Include "executable" files in the index, as they are not necessarily … (#7718)
-  * Fixes indexed repos keeping outdated indexes when files grow too large (#7712)
-  * Skip non-regular files (e.g. submodules) on repo indexing (#7711)
-  * Fix dropTableColumns sqlite implementation (#7710)
-  * Update gopkg.in/src-d/go-git.v4 to v4.13.1 (#7705)
-  * improve branches list performance and fix protected branch icon when no-login (#7695)
-  * Correct wrong datetime format for git (#7689)
-  * Move add to hook queue for created repo to outside xorm session. (#7675)
-  * sugestion to use range .Branches (#7674)
-  * Fix bug on migrating milestone from github (#7665)
-  * hide delete/restore button on archived repos (#7658)
-  * css: use flex to fix floating paginate (#7656)
-  * Fix syntax highlight initialization (#7617)
-  * Fix panic on push at - Merging pull request causes 500 error (#7615)
-  * Make PKCS8, PEM and SSH2 keys work (#7600)
-  * Fix mistake in arc-green.less split-diff css code. (#7587)
-  * Handle ErrUserProhibitLogin in http git (#7586)
-  * Fix bug create/edit wiki pages when code master branch protected (#7580)
-  * Fixes Malformed URLs in API git/commits response (#7565)
-  * Fix file header overflow in file and blame views (#7562)
-  * Improve SSH key parser to handle newlines in keys (#7522)
-  * Fix empty commits now showing in repo overview (#7521)
-  * Fix repository's pull request count error (#7518)
-  * Fix markdown invoke sequence (#7513)
-  * Remove duplicated webhook trigger (#7511)
-  * Update User.NumRepos atomically in createRepository (#7493)
-  * Fix settings page of repo you aren't admin print error - Settings pages giving UnitType error message (#7482)
-  * Fix redirection after file edit - Handles all redirects for Web UI File CRUD (#7478)
-  * cmd/serv: actually exit after fatal errors (#7458)
-  * Fix an issue with some pages throwing 'not defined' js exceptions (#7450)
-  * fix Dropzone.js integration (#7445)
-  * Fix regex for issues in commit messages (#7444)
-  * Diff: Fix indentation on unhighlighted code (#7435)
-  * Only show "New Pull Request" button if repo allows pulls (#7426)
-  * Upgrade macaron/captcha to fix random error problem (#7407)
-  * create class for inline positioned lists (#7393)
-  * Fetch refs for successful testing for tag (#7388)
-  * add missing template variable on organisation settings (#7385)
-  * fix post parameter - on issue list - unset assignee (#7380)
-  * fix/define autochecked checkboxes on issue list in firefox (#7320)
-  * only return head: null if source branch was deleted (#6705)
-* ENHANCEMENTS
-  * Add nofollow to sign in links (#8509)
-  * vendor: update mvdan.cc/xurls/v2 to v2.1.0 (#8495)
-  * Update milestone issues numbers when save milestone and other code improvements (#8411)
-  * Add extra user information when migrating release (#8331)
-  * Require overall success if no context is given for status check (#8318)
-  * Transaction-aware retry create issue to cope with duplicate keys (#8307)
-  * Change link on issue milestone (#8246)
-  * Alwaywas return local url for users avatar (#8245)
-  * Move some milestone functions to a standalone package (#8213)
-  * Move create issue comment to comments package (#8212)
-  * Disable max height property of comment textarea (#8203)
-  * Add 'Mentioning you' group to /issues page (#8201)
-  * oauth2 with remote Gitea (#8149)
-  * Reference issues from pull requests and other issues (#8137)
-  * Fix webhooks to use proxy from environment (#8116)
-  * Add merged commit id on pull view when it's merged (#8062)
-  * Add teams to repo on collaboration page. (#8045)
-  * Update swagger to 0.20.1  (#8010)
-  * Make link last commit massages in repository home page and commit tables (#8006)
-  * Add API endpoint for accessing repo topics (#7963)
-  * Include description in repository search (#7942)
-  * Use gitea forked macaron (#7933)
-  * Fix pull creation with empty changes (#7920)
-  * Allow token as authorization for accessing attachments (#7909)
-  * Retry create issue to cope with duplicate keys (#7898)
-  * Move git diff codes from models to services/gitdiff (#7889)
-  * migrate gplus to google oauth2 provider (#7885)
-  * Remove unique filter from repo indexer analyzer. (#7878)
-  * Detect delimiter in CSV rendering (#7869)
-  * Import topics during migration (#7851)
-  * Move CreateReview to modules/pull (#7841)
-  * vendor: update pdf.js to v2.1.266 (#7834)
-  * Support SSH_LISTEN_PORT env var in docker app.ini template (#7829)
-  * Add Ability for User to Customize Email Notification Frequency (#7813)
-  * Move database settings from models to setting (#7806)
-  * Display ui time with customize time location (#7792)
-  * Implement webhook branch filter (#7791)
-  * Restrict repository indexing by glob match (#7767)
-  * Api: advanced settings for repository (external wiki, issue tracker etc.) (#7756)
-  * Update migrated repositories' issues/comments/prs poster id if user has a github external user saved (#7751)
-  * deps: Upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#7749)
-  * Apply emoji on commit graph page (#7743)
-  * Add a lot of extension to language mappings for syntax highlights (#7741)
-  * Add SQL execution on log and indexes on table repository and comment (#7740)
-  * Set DB connection error level to error (#7724)
-  * Check commit message hashes before making links (#7713)
-  * remove unnecessary fmt on generate bindata (#7706)
-  * Fix specific highlighting (CMakeLists.txt ...) (#7686)
-  * Add file status on API (#7671)
-  * Add support for DEFAULT_ORG_MEMBER_VISIBLE (#7669)
-  * Provide links in commit summaries in commits table/view list (#7659)
-  * Change length of some repository's columns (#7652)
-  * Move commit repo action from models to repofiles package (#7645)
-  * fix wrong email when use gitea as OAuth2 provider (#7640)
-  * [Branch View] add download button (#7604)
-  * Update to xorm@v0.7.4 (#7596)
-  * use 403 instead of 401 for ErrUserProhibitLogin (#7591)
-  * Removed unnecessary conversions (#7557)
-  * Un-lambda base.FileSize (#7556)
-  * Added missing error checks in tests (#7554)
-  * Move create release from models to a standalone package (#7539)
-  * Make default branch name link to default branch (#7519)
-  * Added total count of contributions to heatmap (#7517)
-  * Move mirror to a standalone package from models (#7486)
-  * Move models.PushUpdate to repofiles.PushUpdate (#7485)
-  * Include thread related headers in issue/coment mail (#7484)
-  * Refuse merge until all required status checks success (#7481)
-  * convert all js var to let/const (#7464)
-  * Only create branches for opened pull requestes when migrating from github (#7463)
-  * jQuery 3 (#7425)
-  * Add notification placeholder (#7409)
-  * Search Commits via Commit Hash (#7400)
-  * Move status table to cron package (#7370)
-  * wiki - page revisions list  (#7369)
-  * Display original author and URL information when showing migrated issues/comments (#7352)
-  * Refactor filetype is not allowed errors (#7309)
-  * switch to use gliderlabs/ssh for builtin server (#7250)
-  * Remove setting dependency on modules/session (#7237)
-  * Move all mail related codes from models to services/mailer (#7200)
-  * Support git.PATH entry in app.ini (#6772)
-  * Support setting cookie domain (#6288)
-  * Move migrating repository from frontend to backend (#6200)
-  * Delete releases attachments if release is deleted (#6068)
-* TRANSLATION
-  * Latvian translation for home page (#8468)
-  * Add home template italian translation (#8352)
-  * fix misprint (#7452)
-* BUILD
-  * use go 1.13 (#8088)
-* MISC
-  * add file line count info on UI (#8396)
-  * Make issues page left menu 100% width and add reponame as title attribute (#8359)
-  * [arc-green] white on hover for active menu items (#8344)
-  * Move ref (branch or tag) location on issue list page (#8157)
-  * apply emoji on dashboard issue list labels (#8156)
-  * 1148: Take up the full width when viewing the diff in split view. (#8114)
-  * Display description of 'make this repo private' as help text, not as tooltip (#8097)
-  * Fixes deformed emoji in pull request reviews (#8047)
-  * Add strike to old header on comment (#8046)
-  * Add tooltip for the visibility checkbox in /repo/create (#8025)
-  * Update github.com/lafriks/xormstore and tidy up mod.go (#8020)
-  * keep blame view buttons sequence consistent with normal view when view a file (#8007)
-  * Use "Pull Request" instead of "Merge Request" (#8003)
-  * Move line number to :before attr to hide from search on browser (#8002)
-  * Changed black color to white for (read) number label on issue list page (#8000)
-  * [Branch View] show "New Pull Request" Button only if posible (#7977)
-  * Fix hook problem by only setting the git environment variables if we are passed them (#7854)
-  * Prevent Commit Status and Message From Overflowing On Branch Page (#7800)
-  * Fix global search result CSS, misc CSS tweaks (#7789)
-  * Tweak label border CSS (#7739)
-  * Fix create menu item widths (#7708)
-  * [Branch View] Delete duplicate protection symbol (#7624)
-  * [Branch View] Delete Table Header (#7622)
-  * [Branch View] icons to buttons (#7602)
-  * update js dependencies (#7462)
-  * Add Extra Info to Branches Page (#7461)
-  * Bump lodash from 4.17.11 to 4.17.14 (#7459)
-  * wiki history improvements (#7391)
-  * ui fixes - compare view and archieved repo issues (#7345)
-  * dark theme scrollbars (#7269)
-  * wiki - editor - add buttons 'inline code', 'empty checkbox', 'checked checkbox' (#7243)
-  * Fix Statuses API only shows first 10 statuses: Add paging and extend API GetCommitStatuses (#7141)
-
-## [1.9.6](https://github.com/go-gitea/gitea/releases/tag/v1.9.6) - 2019-11-13
-
-* BUGFIXES
-  * Allow to merge if file path contains " or \ (#8629) (#8772)
-  * Fix 500 when edit hook (#8782) (#8790)
-  * Fix issue with user.fullname (#8904)
-  * Update Github Migration Test (#8897) (#8946)
-  * Add Close() method to gogitRepository (#8901) (#8958)
-
-## [1.9.5](https://github.com/go-gitea/gitea/releases/tag/v1.9.5) - 2019-10-30
-
-* BREAKING
-  * Hide some user information via API if user doesn't have enough permission (#8655) (#8658)
-* BUGFIXES
-  * Fix milestone close timestamp (#8728) (#8731)
-  * Fix deadline on update issue or PR via API (#8699)
-  * Fix 'New Issue Missing Milestone Comment' (#8678) (#8682)
-  * Fix 500 when getting user as unauthenticated user (#8653) (#8662)
-  * Use AppSubUrl for more redirections (#8647) (#8652)
-  * Add SubURL to redirect path (#8632) (#8634) (#8640)
-  * Fix #8582 by handling empty repos (#8587) (#8593)
-  * Fix bug on pull requests when transfer head repository (#8571)
-  * Add missed close in ServeBlobLFS (#8527) (#8543)
-  * Return false if provided branch name is empty for IsBranchExist (#8485) (#8492)
-  * Create .ssh dir as necessary (#8369) (#8486) (#8489)
-  * Restore functionality for early gits (#7775) (#8476)
-  * Add check for empty set when dropping indexes during migration (#8475)
-  * Ensure Request Body Readers are closed in LFS server (#8454) (#8459)
-  * Ensure that LFS files are relative to the LFS content path (#8455) (#8458)
-* SECURITY
-  * Ignore mentions for users with no access (#8395) (#8484)
-* TESTING
-  * Update heatmap fixtures to restore tests (#8615) (#8617)
-
-## [1.9.4](https://github.com/go-gitea/gitea/releases/tag/v1.9.4) - 2019-10-08
-
-* BUGFIXES
-  * Highlight issue references (#8101) (#8404)
-  * Fix bug when migrating a private repository #7917 (#8403)
-  * Change general form binding to gogs form (#8334) (#8402)
-  * Fix editor commit to new branch if PR disabled (#8375) (#8401)
-  * Fix milestone num_issues (#8221) (#8400)
-  * Allow users with explicit read access to give approvals (#8398)
-  * Fix commit status in PR #8316 and PR #8321 (#8339)
-  * Fix API for edit and delete release attachment (#8290)
-  * Fix assets on release webhook (#8283)
-  * Fix release API URL generation (#8239)
-  * Allow registration when button is hidden (#8238)
-  * MS Teams webhook misses commit messages (backport v1.9) (#8225)
-  * Fix data race (#8206)
-  * Fix pull merge 500 error caused by git-fetch breaking behaviors (#8194)
-  * Fix the SSH config specification in the authorized_keys template (#8193)
-  * Fix reading git notes from nested trees (#8189)
-  * Fix team user api (#8172) (#8188)
-  * Add reviewers as participants (#8124)
-* BUILD
-  * Use vendored go-swagger (#8087) (#8165)
-  * Fix version-validation for GO 1.13 (go-macaron/cors) (#8389)
-* MISC
-  * Make show private icon when repo avatar set (#8144) (#8175)
-
-## [1.9.3](https://github.com/go-gitea/gitea/releases/tag/v1.9.3) - 2019-09-06
-
-* BUGFIXES
-  * Fix go get from a private repository with Go 1.13 (#8100)
-  * Strict name matching for Repository.GetTagID() (#8082)
-  * Avoid ambiguity of branch/directory names for the git-diff-tree command (#8070)
-  * Add change title notification for issues (#8064)
-  * Run CORS handler first for /api routes (#7967) (#8053)
-  * Evaluate emojis in commit messages in list view (#8044)
-  * Fix failed to synchronize tags to releases for repository (#7990) (#7994)
-  * Fix adding default Telegram webhook (#7972) (#7992)
-  * Abort synchronization from LDAP source if there is some error (#7965)
-  * Fix deformed emoji in commit message (#8071)
-* ENHANCEMENTS
-  * Keep blame view buttons sequence consistent with normal view when viewing a file (#8007) (#8009)
-
-## [1.9.2](https://github.com/go-gitea/gitea/releases/tag/v1.9.2) - 2019-08-22
-
-* BUGFIXES
-  * Fix wrong sender when send slack webhook (#7918) (#7924)
-  * Upload support text/plain; charset=utf8 (#7899)
-  * Lfs/lock: round locked_at timestamp to second (#7872) (#7875)
-  * Fix non existent milestone with 500 error (#7867) (#7873)
-* SECURITY
-  * Fix No PGP signature on 1.9.1 tag (#7874)
-  * Release built with go 1.12.9 to fix security fixes in golang std lib, ref: https://groups.google.com/forum/#!msg/golang-announce/oeMaeUnkvVE/a49yvTLqAAAJ
-* ENHANCEMENTS
-  * Fix pull creation with empty changes (#7920) (#7926)
-* BUILD
-  * Drone/docker: prepare multi-arch release + provide arm64 image (#7571) (#7884)
-
-## [1.9.1](https://github.com/go-gitea/gitea/releases/tag/v1.9.1) - 2019-08-14
-
-* BREAKING
-  * Add pagination for admin api get orgs and fix only list public orgs bug (#7742) (#7752)
-* SECURITY
-  * Be more strict with git arguments (#7715) (#7762)
-  * Release built with go 1.12.8 to fix security fixes in golang std lib, ref: https://groups.google.com/forum/#!topic/golang-nuts/fCQWxqxP8aA
-* BUGFIXES
-  * Fix local runs of ssh-requiring integration tests (#7855) (#7857)
-  * Fix hook problem (#7856) (#7754)
-  * Use .ExpiredUnix.IsZero to display green color of forever valid gpg key (#7850) (#7846)
-  * Do not fetch all refs (#7797) (#7837)
-  * Fix duplicate call of webhook (#7824) (#7821)
-  * Enable switching to a different source branch when PR already exists (#7823)
-  * Rewrite existing repo units if setting is not included in api body (#7811)
-  * Prevent Commit Status and Message From Overflowing On Branch Page (#7800) (#7808)
-  * API: fix multiple bugs with statuses endpoints (Backport #7785) (#7807)
-  * Fix Slack webhook fork message (1.9 release backport) (#7783)
-  * Fix approvals counting (#7757) (#7777)
-  * Fix rename failed when rewrite public keys (#7761) (#7769)
-  * Fix dropTableColumns sqlite implementation (#7710) (#7765)
-  * Fix repo_index_status lingering when deleting a repository (#7738)
-  * Fix milestone completness calculation when migrating (#7725) (#7732)
-  * Fixes indexed repos keeping outdated indexes when files grow too large (#7731)
-  * Skip non-regular files (e.g. submodules) on repo indexing (#7717)
-  * Improve branches list performance and fix protected branch icon when no-login (#7695) (#7704)
-  * Correct wrong datetime format for git (#7689) (#7690)
-
-## [1.9.0](https://github.com/go-gitea/gitea/releases/tag/v1.9.0) - 2019-07-30
-
-* BREAKING
-  * Better logging (#6038) (#6095)
-* SECURITY
-  * Shadow the password on cache and session config on admin panel (#7300)
-  * Fix markdown invoke sequence (#7513) (#7560)
-  * Reserve .well-known username (#7638)
-  * Do not leak secrets via timing side channel (#7364)
-  * Ensure that decryption of cookie actually succeeds (#7363)
-* FEATURES
-  * Content API for Creating, Updating, Deleting Files (#6314)
-  * Enable tls-alpn-01: Use certmanager provided TLSConfig for LetsEncrypt (#7229)
-  * Add command to convert mysql database from utf8 to utf8mb4 (#7144)
-  * Fixes #2738 - Adds the /git/tags API endpoint (#7138)
-  * Compare branches, commits and tags with each other (#6991)
-  * Show Pull Request button or status of latest PR in branch list (#6990)
-  * Repository avatars (#6986)
-  * Show git-notes (#6984)
-  * Add commit statuses reports on pull request view (#6845)
-  * Number of commits ahead/behind in branch overview (#6695)
-  * Add CLI commands to manage LDAP authentication source (#6681)
-  * Add support for MS Teams webhooks (#6632)
-  * OAuth2 Grant UI (#6625)
-  * Add SUBJECT_PREFIX mailer config option (#6605)
-  * Include custom configuration file in dump (#6516)
-  * Add API for manipulating Git hooks (#6436)
-  * Improve migrations to support migrating milestones/labels/issues/comments/pullrequests (#6290)
-  * Add option to blame files (#5721)
-  * Implement Default Webhooks (#4299)
-  * Telegram webhook (#4227)
-* BUGFIXES
-  * Send webhook after commit when creating issue with assignees (#7681) (#7684)
-  * Upgrade macaron/captcha to fix random error problem (#7407) (#7683)
-  * Move add to hook queue for created repo to outside xorm session. (#7682) (#7675)
-  * Show protection symbol if needed on default branch (#7660) (#7668)
-  * Hide delete/restore button on archived repos (#7660)
-  * Fix bug on migrating milestone from github (#7665) (#7666)
-  * Use flex to fix floating paginate (#7656) (#7662)
-  * Change length of some repository's columns (#7652) (#7655)
-  * Fix wrong email when use gitea as OAuth2 provider (#7640) (#7647)
-  * Fix syntax highlight initialization (#7617) (#7626)
-  * Fix bug create/edit wiki pages when code master branch protected (#7580) (#7623)
-  * Fix panic on push at #7611 (#7615) (#7618)
-  * Handle ErrUserProhibitLogin in http git (#7586, #7591) (#7590)
-  * Fix color of split-diff view in dark theme (#7587) (#7589)
-  * Fix file header overflow in file and blame views (#7562) (#7579)
-  * Malformed URLs in API git/commits response (#7565) (#7567)
-  * Fix empty commits now showing in repo overview (#7521) (#7563)
-  * Fix repository's pull request count error (#7518) (#7524)
-  * Remove duplicated webhook trigger (#7511) (#7516)
-  * Handles all redirects for Web UI File CRUD (#7478) (#7507)
-  * Fix regex for issues in commit messages (#7444) (#7466)
-  * cmd/serv: actually exit after fatal errors (#7458) (#7460)
-  * Fix an issue with some pages throwing 'not defined' js exceptions #7450 (#7453)
-  * Fix Dropzone.js integration (#7445) (#7448)
-  * Create class for inline positioned lists (#7439) (#7393)
-  * Diff: Fix indentation on unhighlighted code (#7435) (#7443)
-  * jQuery 3 (#7442) (#7425)
-  * Only show "New Pull Request" button if repo allows pulls (#7426) (#7432)
-  * Fix vendor references (#7394) (#7396)
-  * Only return head: null if source branch was deleted (#6705) (#7376)
-  * Add missing template variable on organisation settings (#7386) (#7385)
-  * Fix post parameter on issue list which had unset assignee (#7380) (#7383)
-  * Fix migration tests due to issue 7 being resolved (#7375) (#7381)
-  * Correctly adjust mirror url (#6593)
-  * Handle early git version's lack of get-url (#7065)
-  * Fix icon position in issue view (#7354)
-  * Cut timeline length with last element on issue view (#7355)
-  * Fix mirror repository webhooks (#7366)
-  * Fix api route for hooks (#7346)
-  * Fix bug conflict between SyncReleasesWithTags and InsertReleases (#7337)
-  * Fix pull view ui merge section (#7335)
-  * Fix 7303 - remove unnessesary buttons on archived repos (#7326)
-  * Fix topic bar to allow prefixes (#7325)
-  * Fixes #7152 - Allow create/update/delete message to be empty, use default message (#7324)
-  * Fixes #7238 - Annotated tag commit ID incorrect (#7321)
-  * Dark theme fixes (#7319)
-  * Gitea own dark codemirror theme (#7317)
-  * Fixes #7292 - API File Contents bug (#7301)
-  * Fix API link header (#7298)
-  * Fix extra newlines when copying from diff in Firefox (#7288)
-  * Make diff line-marker non-selectable (#7279)
-  * Fix Submodule dection in subdir (#7275)
-  * Fix error log when loading issues caused by a xorm bug (#7271)
-  * Add .fa icon margin like .octicon (#7258)
-  * Fix hljs unintenionally highlighting commit links (#7244)
-  * Only check and config git on web subcommand but not others (#7236)
-  * Fix migration panic when Head.User is not exist (#7226)
-  * Only warn on errors in deleting LFS orphaned files during repo deletion (#7213)
-  * Fix duplicated file on pull request conflicted files (#7211)
-  * Allow colon between fixing word and issue (#7207)
-  * Fix overflow issues in repo (#7190)
-  * API error cleanup (#7186)
-  * Add error for fork already existing (#7185)
-  * Fixes diff on merged pull requests (#7171)
-  * If milestone id is zero don't get it from database (#7169)
-  * Fix pusher name via ssh push (#7167)
-  * Fix database lock when use random repository fallback image (#7166)
-  * Various fixes for issue mail notifications (#7165)
-  * Allow archived repos to be (un)starred and (un)watched (#7163)
-  * Fix GCArgs load from ini (#7156)
-  * Detect noreply email address as user (#7133)
-  * Avoid arbitrary format strings upon calling fail() function (#7112)
-  * Validate External Tracker URL Format (#7089)
-  * Repository avatar fallback configuration (#7087)
-  * Fix #732: Add LFS objects to base repository on merging  (#7082)
-  * Install page - Handle invalid administrator username better (#7060)
-  * Workaround for posting single comments in split diff view (#7052)
-  * Fix possbile mysql invalid connnection error (#7051)
-  * Fix charset was not saved after installation finished (#7048)
-  * Handle insecure and ports in go get (#7041)
-  * Avoid bad database state after failed migration (#7040)
-  * Fix wrong init dependency on markup extensions (#7038)
-  * Fix default for allowing new organization creation for new users (#7017)
-  * Fix content download and /verify LFS handler expecting wrong content-type (#7015)
-  * Fix missing repo description when migrating (#7000)
-  * Fix LFS Locks over SSH (#6999)
-  * Do not attempt to return blob on submodule (#6996)
-  * Fix U2F for Chrome >= 74 (#6980)
-  * Fix index produces problem when issues/pulls deleted (#6973)
-  * Allow collaborators to view repo owned by private org (#6965)
-  * Stop running hooks on pr merge (#6963)
-  * Run hooks on merge/edit and cope with protected branches (#6961)
-  * Webhook Logs show proper HTTP Method, and allow change HTTP method in form (#6953)
-  * Stop colorizing log files by default (#6949)
-  * Rotate serv.log, http.log and hook logs and stop stacktracing in these (#6935)
-  * Fix plain text overflow line wrap (#6915)
-  * Fix input size for dependency select (#6913)
-  * Change drone token name to let users know to use oauth2 (#6912)
-  * Fix syntax highlight in blame view #6895 (#6909)
-  * Use AppURL for Oauth user link (#6894)
-  * Fixes #6881 - API users search fix (#6882)
-  * Fix 404 when send pull request some situation  (#6871)
-  * Enforce osusergo build tag for releases (#6862)
-  * Fix 500 when reviewer is deleted with integration tests (#6856)
-  * Fix v85.go (#6851)
-  * Make dropTableColumns drop columns on sqlite and constraints on all (#6849)
-  * Fix double-generation of scratch token (#6832) (#6833)
-  * When mirroring we should set the remote to mirror (#6824)
-  * Fix the v78 migration "Drop is_bare" on MSSQL #6707 (#6823)
-  * Change verbose flag in dump command to avoid colliding with global version flag (#6822)
-  * Fix #6813: Allow git.GetTree to take both commit and tree names (#6816)
-  * Remove `seen` map from `getLastCommitForPaths` (#6807)
-  * Show scrollbar only when needed (#6802)
-  * Restore IsWindows variable assignment (#6722) (#6790)
-  * Service worker js is a missing comma (#6788)
-  * Fix team edit API panic (#6780)
-  * Set user search base field optional in LDAP (simple auth) edit page (#6779)
-  * Ignore already existing public keys after ldap sync (#6766)
-  * Fix pulls broken when fork repository deleted (#6754)
-  * Fix missing return (#6751)
-  * Fix new team 500 (#6749)
-  * OAuth2 token can be used in basic auth (#6747)
-  * Fix org visibility bug when git cloning (#6743)
-  * Fix bug when sort repos on org home page login with non-admin (#6741)
-  * Stricter domain name pattern in email regex (#6739)
-  * Fix admin template error (#6737)
-  * Drop is_bare IDX only when it exists for MySQL and MariaDB (#6736)
-  * UI: Detect and restore encoding and BOM in content  (#6727)
-  * Load issue attributes when editing an issue with API (#6723)
-  * Fix team members API (#6714)
-  * Unfortunately MemProvider Init does not actually Init properly (#6692)
-  * Fix partial reversion of #6657 caused by #6314 (#6685)
-  * Prevent creating empty sessions (#6677)
-  * Fixes #6659 - Swagger schemes selection default to page's protocol (#6660)
-  * Update highlight.js to 9.15.6 (#6658)
-  * Properly escape on the redirect from the web editor (#6657)
-  * Fix #6655 - Don't EscapePound .Link as it is already escaped (#6656)
-  * Use ctx.metas for SHA hash links (#6645)
-  * Fix wrong GPG expire date (#6643)
-  * upgrade version of lib/pq to v1.1.0 (#6640)
-  * Fix forking an empty repository (#6637)
-  * Fix issuer of OTP URI should be URI-encoded. (#6634)
-  * Return a UserList from /api/v1/admin/users (#6629)
-  * Add json tags for oauth2 form (#6627)
-  * Remove extra slash from twitter card (#6619)
-  * remove bash requirement in makefile (#6617)
-  * Fix Open Graph og:image link (#6612)
-  * Fix cross-compile builds (#6609)
-  * Change commit summary to full message in API (#6591)
-  * Fix bug user search API pagesize didn't obey ExplorePagingNum (#6579)
-  * Prevent server 500 on compare branches with no common history (#6555)
-  * Properly escape release attachment URL (#6512)
-  * Delete local branch when repo branch is deleted (#6497)
-  * Fix bug when user login and want to resend register confirmation email (#6482)
-  * Fix upload attachments (#6481)
-  * Avoid multi-clicks in oauth2 login (#6467)
-  * Hacky fix for alignment of the create-organization dialog (#6455)
-  * Change order that PostProcess Processors are run (#6445)
-  * Clean up ref name rules (#6437)
-  * Fix Hook & HookList in Swagger (#6432)
-  * Fixed unitTypeCode not being used in accessLevelUnit (#6419)
-  * Display correct error for invalid mirror interval (#6414)
-  * Don't Unescape redirect_to cookie value (#6399)
-  * Fix dump table name error and add some test for dump database (#6394)
-  * Fix migrations 82 to ignore unsynced tags between database and git data and missing is_archived on repository table (#6387)
-  * Make sure units of a team are returned (#6379)
-  * Fix bug manifest.json will not request with cookie so that session will created every request (#6372)
-  * Disable benchmarking during tag events on DroneIO (#6365)
-  * Comments list performance optimization (#5305)
-* ENHANCEMENTS
-  * Update Drone docker generation to standard format (#7480) (#7496) (#7504)
-  * Add API Endpoint for Repo Edit (#7006)
-  * Add state param to milestone listing API (#7131)
-  * Make captcha and password optional for external accounts (#6606)
-  * Detect migrating batch size (#7353)
-  * Fix 7255 - wrap long texts on user profile info (#7333)
-  * Use commit graph files for listing pages (#7314)
-  * Add git command line commitgraph support global default true when git version >= 2.18 (#7313)
-  * Add LFS_START_SERVER option to control git-lfs support (#7281)
-  * Dark theme markdown fixes (#7260)
-  * Update go-git to v4.12.0 (#7249)
-  * Show lfs config on admin panel (#7220)
-  * Disable same user check for internal SSH (#7215)
-  * Add LastLogin to the User API (#7196)
-  * Add missing description of label on API (#7159)
-  * Use go method to calculate ssh key fingerprint (#7128)
-  * Enable Rust highlighting (#7125)
-  * Refactor submodule URL parsing (#7100)
-  * Change issue mail title. (#7064)
-  * Use batch insert on migrating repository to make the process faster (#7050)
-  * Improve github downloader on migrations (#7049)
-  * When git version >= 2.18, git command could run with git wire protocol version 2 param if enabled (#7047)
-  * Fix Erlang and Elixir highlight mappings (#7044)
-  * API Org Visibility (#7028)
-  * Improve handling of non-square avatars (#7025)
-  * Bugfix: Align comment label and actions to the right (#7024)
-  * Change UpdateRepoIndex api to include watchers (#7012)
-  * Move serv hook functionality & drop GitLogger (#6993)
-  * Add support of utf8mb4 for mysql (#6992)
-  * Make webhook http connections reusable (#6976)
-  * Move xorm logger bridge from log to models so that log module could be a standalone package (#6944)
-  * Refactor models.NewRepoContext to extract git related codes to modules/git (#6941)
-  * Remove macaron dependent on models (#6940)
-  * Add less linter via npx (#6936)
-  * Remove macaron dependent on modules/log (#6933)
-  * Remove macaron dependent on models/mail.go (#6931)
-  * Clean less files (#6921)
-  * Fix code overflow (#6914)
-  * Style orgs list in user profile (#6911)
-  * Improve description of branch protection (fix #6886) (#6906)
-  * Move sdk structs to modules/structs (#6905)
-  * update sdk to latest (#6903)
-  * Escape the commit message on issues update and title in telegram hook (#6901)
-  * SearchRepositoryByName improvements and unification (#6897)
-  * Change the color of issues/pulls list, merged is purple and closed is red (#6874)
-  * Refactor table width to have more info shown in file list (#6867)
-  * Monitor all git commands; move blame to git package and replace git as a variable (#6864)
-  * Fix config ui error about cache ttl (#6861)
-  * Improve localization of git activity stats (#6848)
-  * Generate access token in admin cli (#6847)
-  * Update github.com/urfave/cli to version 1.2.0 (#6838)
-  * Rename LFS_JWT_SECRET cli option to include OAUTH2 as well (#6826)
-  * internal/ssh: ignore env command totally (#6825)
-  * Allow Recaptcha service url to be configured (#6820)
-  * update github.com/mcuadros/go-version to v0.0.0-20190308113854-92cdf37c5b75 (#6815)
-  * Use modules/git for git commands (#6775)
-  * Add GET requests to webhook (#6771)
-  * Move PushUpdate dependency from models to repofiles (#6763)
-  * Tweak tab text and icon colors (#6760)
-  * Ignore non-standard refs in git push (#6758)
-  * Disable web preview for telegram webhook (#6719)
-  * Show full name if DEFAULT_SHOW_FULL_NAME setting enabled (#6710)
-  * Reorder file actions (#6706)
-  * README WordPress the code is overflowing #6679 (#6696)
-  * Improve issue reference on commit (#6694)
-  * Handle redirects for git clone commands (#6688)
-  * Fix one performance/correctness regression in #6478 found on Rails repository. (#6686)
-  * API OTP Context (#6674)
-  * Remove local clones & make hooks run on merge/edit/upload (#6672)
-  * Bump github.com/stretchr/testify from 1.2.2 to 1.3.0 (#6663)
-  * Bump gopkg.in/src-d/go-git.v4 from 4.8.0 to 4.10.0 (#6662)
-  * Fix dropdown icon padding (#6651)
-  * Add more title attributes on shortened names (#6647)
-  * Update UI for topics labels on projects (#6639)
-  * Trace Logging on Permission Denied & ColorFormat (#6618)
-  * Add .gpg url (match github behaviour) (#6610)
-  * Support for custom GITEA_CUSTOM env var in docker(#6608)
-  * Show "delete branch" button on closed pull requests (#6570) (#6601)
-  * Add option to disable refresh token invalidation (#6584)
-  * Fix new repo dropdown alignment (#6583)
-  * Fix mail notification when close/reopen issue (#6581)
-  * Pre-calculate the absolute path of git (#6575)
-  * Minor CSS cleanup for the navbar (#6553)
-  * Render SHA1 links as code blocks (#6546)
-  * Add username flag in create-user command (#6534)
-  * Unifies pagination template usage (#6531) (#6533)
-  * Fixes pagination width on mobile view (#5711) (#6532)
-  * Improve SHA1 link detection (#6526)
-  * Fixes #6446 - Sort team members and team's repositories (#6525)
-  * Use stricter boundaries for auto-link detection (#6522)
-  * Use regular line-height on frontpage entries (#6518)
-  * Fixes #6514 - New Pull Request on files and pulls pages the same (#6515)
-  * Make distinction between DisplayName and Username in email templates (#6495)
-  * Add X-Auto-Response-Suppress header to outgoing messages (#6492)
-  * Cleaned permission checks for API -> site admin can now do anything (#6483)
-  * Support search operators for commits search (#6479)
-  * Improve listing performance by using go-git (#6478)
-  * Fix repo sub_menu font color in arc-green (#6477)
-  * Show last commit status in pull request lists (#6465)
-  * Add signatures to webhooks (#6428)
-  * Optimize all images in public/img (#6427)
-  * Add golangci (#6418)
-  * Make "Ghost" not link to 404 page (#6410)
-  * Include more variables on admin/config page (#6378)
-  * Markdown: enable some more extensions (#6362)
-  * Include repo name in page title tag (#6343)
-  * Show locale string on timestamp (#6324)
-  * Handle CORS requests (#6289)
-  * Improve issue autolinks (#6273)
-  * Migration Tweaks (#6260)
-  * Add title attributes to all items in the repo list viewer (#6258)
-  * Issue indexer queue redis support (#6218)
-  * Add bio field for user (#6113)
-  * Make the version within makefile overwriteable (#6080)
-  * Updates to API 404 responses (#6077)
-  * Use Go1.11 module (#5743)
-  * UX + Security current user password reset (#5042)
-  * Refactor: append, build variable and type switch (#4940)
-  * Git statistics in Activity tab (#4724)
-  * Drop the bits argument when generating an ed25519 key (#6504)
-* TESTING
-  * Exclude pull_request from fetch-tags step, fixes #7108 (#7120)
-  * Refactor and improve git test (#7086)
-  * Fix TestSearchRepo by waiting till indexing is done (#7004)
-  * Add mssql migration tests (needs #6823) (#6852)
-  * Add tests for Org API (#6731)
-  * Context.ServerError and NotFound should log from their caller (#6550)
-* TRANSLATION
-  * Add french specific rule for translating plural texts (#6846)
-* BUILD
-  * Update mssql driver to last working version 20180314172330-6a30f4e59a44 (#7306)
-  * Alpine 3.10 (#7256)
-  * Use vfsgen instead of go-bindata (#7080)
-  * remove and disable package-lock (#6969)
-  * add make targets for js and css, add js linter (#6952)
-  * Added tags pull step to drone config to show correct version hashes i… (#6836)
-  * Make CustomPath, CustomConf and AppWorkPath configurable at build (#6631)
-  * chore: update drone format to 1.0 (#6602)
-  * Fix race in integration testlogger (#6556)
-  * Quieter Integration Tests (#6513)
-  * Drop the docker Makefile from the image (#6507)
-  * Add make version on gitea version (#6485)
-  * Fix #6468 - Uses space match and adds newline for all sed flavors (#6473)
-  * Move code.gitea.io/git to code.gitea.io/gitea/modules/git (#6364)
-  * Update npm dependencies and various tweaks (#7344)
-  * Fix updated drone file (#7336)
-  * Add 'npm' and 'npm-update' make targets and lockfile (#7246)
-* DOCS
-  * Add work path CLI option (#6922)
-  * Fix logging documentation (#6904)
-  * Some logging documentation (#6498)
-  * Fix link to Hacking on Gitea on From-Source doc page (#6471)
-  * Fix typos in docs command-line examples (#6466)
-  * Added docker example for backup (#5846)
-
-## [1.8.3](https://github.com/go-gitea/gitea/releases/tag/v1.8.3) - 2019-06-17
-
-* BUGFIXES
-  * Always set userID on LFS authentication (#7224) (Part of #6993)
-  * Fix LFS Locks over SSH (#6999) (#7223)
-  * Fix duplicated file on pull request conflicted files (#7211) (#7214)
-  * Detect noreply email address as user (#7133) (#7195)
-  * Don't get milestone from DB if ID is zero (#7169) (#7174)
-  * Allow archived repos to be (un)starred and (un)watched (#7163) (#7168)
-  * Fix GCArgs load from ini (#7156) (#7157)
-
-## [1.8.2](https://github.com/go-gitea/gitea/releases/tag/v1.8.2) - 2019-05-29
-
-* BUGFIXES
-  * Fix possbile mysql invalid connnection error (#7051) (#7071)
-  * Handle invalid administrator username on install page (#7060) (#7063)
-  * Disable arm7 builds (#7037) (#7042)
-  * Fix default for allowing new organization creation for new users (#7017) (#7034)
-  * SearchRepositoryByName improvements and unification (#6897) (#7002)
-  * Fix u2f registrationlist ToRegistrations() method (#6980) (#6982)
-  * Allow collaborators to view repo owned by private org (#6965) (#6968)
-  * Use AppURL for Oauth user link (#6894) (#6925)
-  * Escape the commit message on issues update (#6901) (#6902)
-  * Fix regression for API users search (#6882) (#6885)
-  * Handle early git version's lack of get-url (#7065) (#7076)
-  * Fix wrong init dependency on markup extensions (#7038) (#7074)
-
-## [1.8.1](https://github.com/go-gitea/gitea/releases/tag/v1.8.1) - 2019-05-08
-
-* BUGFIXES
-  * Fix 404 when sending pull requests in some situations (#6871) (#6873)
-  * Enforce osusergo build tag for releases (#6862) (#6869)
-  * Don't post process commit summary in templates (#6842) (#6868)
-  * Fix 500 when reviewer is deleted (#6856) (#6860)
-  * Fix v78 migration for MSSQL (#6823) (#6854)
-  * Added tags pull step to drone config to show correct version hashes (#6836) (#6839)
-  * Fix double-generation of scratch token (#6833) (#6835)
-  * When mirroring we should set the remote to mirror (#6824) (#6834)
-  * Show scrollbar only when needed (#6802) (#6803)
-  * Service worker js is missing a comma (#6788) (#6795)
-  * Set user search base field optional in LDAP (simple auth) edit page (#6779) (#6789)
-  * Fix team edit API panic (#6780) (#6785)
-  * Minor CSS cleanup for the navbar (#6553) (#6781)
-  * Stricter domain name pattern in email regex (#6739) (#6768)
-  * Detect and restore encoding and BOM in content (#6727) (#6765)
-  * Fix org visibility bug when git cloning (#6743) (#6762)
-  * OAuth2 token can be used in basic auth (#6747) (#6761)
-  * Fix missing return (#6751) (#6756)
-  * Fix sorting repos on org home page with non-admin login (#6741) (#6746)
-  * Drop is_bare IDX only when it exists for MySQL and MariaDB (#6736) (#6744)
-  * Fix team members API (#6714) (#6729)
-  * Load issue attributes when editing an issue with API (#6723) (#6725)
-  * Fix config ui error about cache ttl (#6861) (#6865)
-
-## [1.8.0](https://github.com/go-gitea/gitea/releases/tag/v1.8.0) - 2019-04-20
-
-* SECURITY
-  * Prevent remote code execution vulnerability with mirror repo URL settings (#6593) (#6594)
-  * Resolve 2FA bypass on API (#6676) (#6674)
-  * Prevent the creation of empty sessions for non-logged in users (#6690) (#6677)
-* BREAKING
-  * Add "ghost" and "notifications" to list of reserved user names. (#6208)
-  * Change sqlite DB path default to data directory (#6198)
-  * Adds MustChangePassword to user create/edit API (#6193)
-  * Disable redirect for i18n (#5910)
-  * Releases API paging (#5831)
-  * Allow Macaron to be set to log through to gitea.log (#5667)
-  * Don't close issues via commits on non-default branch (#5622)
-* FEATURES
-  * Add regenerate secret feature for oauth2 (#6291)
-  * Expose issue stopwatch toggling via API (#5970)
-  * Add other session providers (#5963)
-  * Pull request conflict files detection (#5951)
-  * Integrate OAuth2 Provider (#5378)
-  * Implement "conversation lock" for issue comments (#5073)
-  * Feature: Archive repos (#5009)
-  * Discord Oauth2 support (#4476)
-  * Allow to set organization visibility (public, internal, private) (#1763)
-  * Added URL mapping for Release attachments like on github.com (#1707)
-* ENHANCEMENTS
-  * Add support for client basic auth for exchanging access tokens (#6293)
-  * Add ability to sort issues by due date (#6206) (#6244)
-  * Style tweaks to issue selection (#6196)
-  * Increase Username and Orgname MaxSize 35 -> 40 (#6178)
-  * Coverage profile with multiple packages (#6167)
-  * Split setting.go to multiple files (#6154)
-  * Allow labels to contain emoji (#6063)
-  * Disable git fsck for mirrored repos by default (#6018)
-  * Add default time out for git operations (#6015)
-  * Split setting.go as multiple files (#6014)
-  * Make dashboard navbar and footer full-width (#6013)
-  * Add lang specific font stacks for CJK (#6007)
-  * Fix header menu misalignment (#6002)
-  * Enhance closed PR and Issue status in the list (#6000)
-  * Make navbar full width (#5998)
-  * Add option to close issues via commit on a non master branch (#5992)
-  * Support n as a line highlight prefix (#5987)
-  * Search for org repos (#3031) (#5986)
-  * Minor UI tweaks (#5980)
-  * Use native golang SSH library but ssh-keygen when enable built-in SSH server to remove dependent on that command lines (#5976)
-  * Dashboard tweaks (#5974)
-  * Fixes for repo topic editor (#5971)
-  * Display the branch name in the commit view (#5950)
-  * handle milestone events for issues and PR (#5947)
-  * Add label names as filter in issue search api (#5946)
-  * Repo header tweaks (#5945)
-  * Better support for long repo names (#5932)
-  * Fix wrapping long code lines (#5927)
-  * Change GPG Validation colors and remove inline CSS (#5404) (#5896)
-  * Fix "pulls.blocked_by_approvals" text (#5879)
-  * Rename reject to 'request changes' (#5858)
-  * Move input fields to add members to a team and repos to a team (#5853)
-  * Config option to disable automatic repo watching (#5852)
-  * New Issue ?body= query (#5851)
-  * Add API to list tags (#5850)
-  * Pagination for git tree API (#5838)
-  * Add InternalTokenURI to load InternalToken from an external file (#5812)
-  * Allow markdown files to read from the LFS (#5787)
-  * Add the ability to use multiple labels as filters (#5786)
-  * Adjust log settings when a user is not found. (#5771)
-  * Log IP of failed ssh connection (#5766)
-  * Moved defaults in defaults.go to setting.go (#5764)
-  * Make DB connect more robust (#5738)
-  * Add Default Pull Request Title (#5735)
-  * Refactor repo.isBare to repo.isEmpty #5629 (#5714)
-  * Add flag to skip repository dumping (#5695)
-  * Prioritize "readme.md" (#5691)
-  * Improve "Fork button" for guests by showing a pop up asking them to log in before forking (#5690)
-  * Allow for user specific themes (#5668)
-  * Display branch name in delete branch confirmation modal. (#5654)
-  * New API routes added (#5594)
-  * Refactor notification for indexer (#5111)
-  * Refactor mail notification (#5110)
-  * Show email if the authenticated user owns the profile page being requested for (#4981)
-  * Optimize pulls merging (#4921)
-  * Sort Repositories widget by most recently updated (#3963) (#4599)
-  * Allow markdown table to scroll (#4401)
-  * Automatically clear stopwatch on merging a PR (#4327)
-  * Add the Owner Name to differentiate when merging (#3807)
-  * Add title attributes to all items in the repo list viewer (#6258) (#6650)
-* BUGFIXES
-  * Fix dropdown icon padding (#6651) (#6654)
-  * Fix wrong GPG expire date (#6643) (#6644)
-  * Fix forking an empty repository (#6637) (#6653)
-  * Remove call to EscapePound .Link as it is already escaped (#6656) (#6666)
-  * Properly escape on the redirect from the web editor (#6657) (#6667)
-  * Allow resend of confirmation email when logged in (#6482) (#6486)
-  * Fix mail notification when close/reopen issue (#6581) (#6588)
-  * Change API commit summary to full message (#6591) (#6592)
-  * Add option to disable refresh token invalidation (#6584) (#6587)
-  * Fix bug user search API pagesize didn't obey ExplorePagingNum (#6579) (#6586)
-  * Fix new repo alignment (#6583) (#6585)
-  * Prevent server 500 on compare branches with no common history (#6555) (#6558)
-  * Properly escape release attachment URL (#6512) (#6523)
-  * Hacky fix for alignment of the create-organization dialog (#6455) (#6462)
-  * Disable benchmarking during tag events on DroneIO (#6365) (#6366)
-  * Make sure units of a team are returned (#6379) (#6381)
-  * Don't Unescape redirect_to cookie value (#6399) (#6401)
-  * Fix dump table name error and add some test for dump database (#6394) (#6402)
-  * Fix migration v82 to ignore unsynced tags between database and git data; Add missing is_archived column on repository table (#6387) (#6403)
-  * Display correct error for invalid mirror interval (#6414) (#6429)
-  * Clean up ref name rules (#6437) (#6439)
-  * Fix Hook & HookList in Swagger (#6432) (#6440)
-  * Change order that PostProcess Processors are run (#6445) (#6447)
-  * Clean up various use of escape/unescape functions for URL generation (#6334)
-  * Return 409 when creating repo if it already exists. (#6330)
-  * Add same changes from issues page to milestone->issues page (#6328)
-  * Fix ParsePatch function to work with quoted diff --git strings (#6323)
-  * Fix reported issue in repo description (#6306)
-  * Use url.PathEscape to escape the branchname (#6304)
-  * Add robots.txt as reserved username (#6272)
-  * Replace linkRegex with xurls library (#6261)
-  * Remove visitLinksForShortLinks features (#6257)
-  * Add unit types to repo action URL to correctly show 404 when archived (#6247)
-  * Check organization visibility before everything else (#6234) (#6235)
-  * Prevent double-close of issues (#6233)
-  * Override xorm type mapping for U2F counter (#6232)
-  * Add isAdmin to user API response (#6231)
-  * Update git vendor to fix wrong release commit id and add migrations (#6224)
-  * Fix fork button (#6223)
-  * Fix renames over redirects (#6216)
-  * Fix display dashboard even if require to change password (#6214)
-  * Create a repo redirect when transferring ownership (#6210) (#6211)
-  * Fix issue update race condition (#6194)
-  * Fix bug when migrate repository 500 when repo is existed (#6188)
-  * Fix scrollbar always present on page body (#6177)
-  * Fix bug when set indexer as db and add tests (#6173)
-  * Modify linkRegex to require http|https (#6171)
-  * Fix bug user could change private repository to public when force private enabled. (#6156)
-  * Fix admin list user/org API (#6143)
-  * Make repo creation for API similar to UI (#6142)
-  * Make document body a flexbox (#6139)
-  * Refactor issue indexer, add some testing and fix a bug (#6131)
-  * Load Issue attributes for API call (#6122)
-  * Fix bug when update owner team then visit team's repo return 404 (#6119)
-  * Fix heatmap and repository menu display in Internet Explorer 9+ (#6117)
-  * Show private organization for admin, fix #6111 (#6112)
-  * Fix prohibit login check on authorization (#6106)
-  * Move to ldap.v3 to fix #5928 (#6105)
-  * Remove use MakeAssigneeList in webhooks to fix deadlock (#6102)
-  * Allow display of LFS stored Readme.md on directory page (#6073) (#6099)
-  * Make sure labels are actually returned (#6053)
-  * Fix panic: template: repo/issue/list:210: unexpected "=" in operand (#6041)
-  * After deleting a repo on admin panel, UI should remember the last sort type (#6033)
-  * Default create repository on organisation on its dashboard (#6026)
-  * Swagger: Remove spaces in MergePullRequestOption enum (#6016)
-  * Fix metrics auth token detection (#6006)
-  * Fix repo header issues (#5995)
-  * Fix bug when deleting a linked account will removed all (#5989)
-  * Make organization dropdown scrollable when using mouse wheel (#5988)
-  * Fix empty ssh key importing in ldap (#5984)
-  * Admin config page mailertype setting option update (#5973)
-  * Fix redirect loop during forced password change (#5965)
-  * Show user who created the repository instead of the organisation in action feed (#5948)
-  * Remove all CommitStatus when a repo is deleted (#5940)
-  * Fix ssh deploy and user key constraints (#1357) (#5939)
-  * Fix log output (#5938)
-  * Set PusherName and PusherID to owner on deploy key to fix pushing with deploy keys (#5935)
-  * Fix compare button (#5929)
-  * Fix bug when read public repo lfs file (#5912)
-  * Only allow local login if password is non-empty (#5906)
-  * Recover panic in orgmode.Render if bad orgfile (#4982) (#5903)
-  * Provide better panic handling (#5902)
-  * Respect value of REQUIRE_SIGNIN_VIEW (#5901)
-  * Show a 404 not a 500 if a repo does not exist (#5900)
-  * Ensure repo is loaded in mailer (Completely fix #5891) (#5895)
-  * Ensure issue.Poster is loaded in mailIssueCommentToParticipants (#5891)
-  * Correct footer height if screen-width is to small (fixes #5878) (#5889)
-  * In gitea serv switch off console logger to fix #5866 (#5887)
-  * Don't allow pull requests to be created on an archived repository (#5883)
-  * Support reviews on a deleted file path (#5880)
-  * Fix compare button on upstream repo leading to 404 (#5877)
-  * Fix null pointer on not logged in attempt to Sudo (#5872)
-  * Fix new release creation API to allow empty target (#5870)
-  * Fix an error while adding a dependency via UI. (#5862)
-  * Fix failing migration v67 (#5849)
-  * Fix delete correct temp directory (#5839)
-  * Make sure .git/info is created before generating .git/info/sparse-che… (#5825)
-  * Fix topics saving internal error and disable for archived repos (#5821)
-  * Fix TLS errors when using acme/autocert for local connections (#5820)
-  * When creating new repository fsck option should be enabled (#5817)
-  * Request for public keys only if LDAP attribute is set  (#5816)
-  * Fix serving of raw wiki files other than .md (#5814)
-  * Fix migration 78 error mssql (#5791)
-  * Disallow empty titles (#5785)
-  * Fix the v78 migration script (#5776)
-  * Ensure valid git author names passed in signatures (#5774)
-  * Fix wrong assumption where a user is always said to have unassigned (her)himself (#5769)
-  * Upgrade go-sql-driver/mysql to fix invalid connection error (#5748)
-  * Fixing PostgreSQL dump creation (#5747)
-  * Add proper CORS preflight origin validation (#5740)
-  * Disable auto-migrate in docker container (#5730)
-  * In basic auth check for tokens before call UserSignIn (#5725)
-  * Pooled and buffered gzip implementation (#5722)
-  * Ensure that sessions are passed into queries that could use the database to prevent deadlocks (#5718)
-  * Keep file permissions during database migration (#5707)
-  * Use correct value for "MSpan Structures Obtained" #4742 (#5706)
-  * Refactor editor upload, update and delete to use git plumbing and add LFS support (#5702)
-  * Update xorm to fix issue #5659 and #5651 (#5680)
-  * Fix public will not be reused as public key after deleting as deploy key (#5671)
-  * When redirecting, clean the path (#5669)
-  * Don't list an issue on its own dependency list UI. (#5658)
-  * Fix commit page showing status for current default branch (#5649) (#5650)
-  * Only count users own actions for heatmap contributions (#5647)
-  * Fix sqlite deadlock when assigning to a PR (#5640)
-  * Refactor issue indexer (#5363)
-* TESTING
-  * Run benchmark at tag to track performances (#6035)
-  * Add test environment for MySQL8 (#5234)
-* BUILD
-  * Use go 1.12 for tests and deprecate go 1.9 (#6186)
-  * Makefile changes for Windows and easier development (#6103)
-  * Update bleve dependency to latest master revision (#6100)
-  * Switch to more recent build of xgo (#6070)
-  * Add autoprefixer to css build (#6029)
-  * Update the version of less (#6010)
-  * Make log mailer for testing (#5893)
-* DOCS
-  * Add more tests and docs for issue indexer, add db indexer type for searching from database (#6144)
-  * update default value of `--must-change-password` cli flag (#6032)
-  * Update and expand information about building Gitea (#6019)
-  * Update U2F Section of app.ini.sample (#5994)
-  * Update swagger for release API pagination (#5841)
-  * Added docs for the tree api (#5834)
-* MISC
-  * Add single commit API support (#5843)
-  * Add missing GET teams endpoints (#5382)
-  * Migrate database if app.ini found (#5290)
-
-## [1.7.6](https://github.com/go-gitea/gitea/releases/tag/v1.7.6) - 2019-04-12
-
-* SECURITY
-  * Prevent remote code execution vulnerability with mirror repo URL settings (#6593) (#6595)
-* BUGFIXES
-  * Allow resend of confirmation email when logged in (#6482) (#6487)
-
-## [1.7.5](https://github.com/go-gitea/gitea/releases/tag/v1.7.5) - 2019-03-27
-
-* BUGFIXES
-  * Fix unitTypeCode not being used in accessLevelUnit (#6419) (#6423)
-  * Fix bug where manifest.json was being requested without cookies and continuously creating new sessions (#6372) (#6383)
-  * Fix ParsePatch function to work with quoted diff --git strings (#6323) (#6332)
-
-## [1.7.4](https://github.com/go-gitea/gitea/releases/tag/v1.7.4) - 2019-03-12
-
-* SECURITY
-  * Fix potential XSS vulnerability in repository description. (#6306) (#6308)
-* BUGFIXES
-  * Fix wrong release commit id (#6224) (#6300)
-  * Fix panic on empty signed commits (#6292) (#6300)
-  * Fix organization dropdown not being scrollable when using mouse wheel (#5988) (#6246)
-  * Fix displaying dashboard even if required to change password (#6214) (#6215)
-
-## [1.7.3](https://github.com/go-gitea/gitea/releases/tag/v1.7.3) - 2019-02-27
-
-* BUGFIXES
-  * Fix server 500 when trying to migrate to an already existing repository (#6188) (#6197)
-  * Load Issue attributes for API /repos/{owner}/{repo}/issues/{index} (#6122) (#6185)
-  * Fix bug whereby user could change private repository to public when force private enabled. (#6156) (#6165)
-  * Fix bug when update owner team then visit team's repo return 404 (#6119) (#6166)
-  * Fix heatmap and repository menu display in Internet Explorer 9+ (#6117) (#6137)
-  * Fix prohibit login check on authorization (#6106) (#6115)
-  * Fix LDAP protocol error regression by moving to ldap.v3 (#6105) (#6107)
-  * Fix deadlock in webhook PullRequest (#6102) (#6104)
-  * Fix redirect loop when password change is required and Gitea is installed as a suburl (#5965) (#6101)
-  * Fix compare button regression (#5929) (#6098)
-  * Recover panic in orgmode.Render if bad orgfile (#4982) (#5903) (#6097)
-
-## [1.7.2](https://github.com/go-gitea/gitea/releases/tag/v1.7.2) - 2019-02-14
-
-* BUGFIXES
-  * Remove all CommitStatus when a repo is deleted (#5940) (#5941)
-  * Fix notifications on pushing with deploy keys by setting hook environment variables (#5935) (#5944)
-  * Silence console logger in gitea serv (#5887) (#5943)
-  * Handle milestone webhook events for issues and PR (#5947) (#5955)
-  * Show user who created the repository instead of the organization in action feed (#5948) (#5956)
-  * Fix ssh deploy and user key constraints (#1357) (#5939) (#5966)
-  * Fix bug when deleting a linked account will removed all (#5989) (#5990)
-  * Fix empty ssh key importing in ldap (#5984) (#6009)
-  * Fix metrics auth token detection (#6006) (#6017)
-  * Create repository on organisation by default on its dashboard (#6026) (#6048)
-  * Make sure labels are actually returned in API (#6053) (#6059)
-  * Switch to more recent build of xgo (#6070) (#6072)
-  * In basic auth check for tokens before call UserSignIn (#5725) (#6083)
-
-## [1.7.1](https://github.com/go-gitea/gitea/releases/tag/v1.7.1) - 2019-01-31
-
-* SECURITY
-  * Disable redirect for i18n (#5910) (#5916)
-  * Only allow local login if password is non-empty (#5906) (#5908)
-  * Fix go-get URL generation (#5905) (#5907)
-* BUGFIXES
-  * Fix TLS errors when using acme/autocert for local connections (#5820) (#5826)
-  * Request for public keys only if LDAP attribute is set (#5816) (#5819)
-  * Fix delete correct temp directory (#5840) (#5839)
-  * Fix an error while adding a dependency via UI (#5862) (#5876)
-  * Fix null pointer in attempt to Sudo if not logged in (#5872) (#5884)
-  * When creating new repository fsck option should be enabled (#5817) (#5885)
-  * Prevent nil dereference in mailIssueCommentToParticipants (#5891) (#5895) (#5894)
-  * Fix bug when read public repo lfs file (#5913) (#5912)
-  * Respect value of REQUIRE_SIGNIN_VIEW (#5901) (#5915)
-  * Fix compare button on upstream repo leading to 404 (#5877) (#5914)
-* DOCS
-  * Added docs for the tree api (#5835)
-* MISC
-  * Include Go toolchain to --version (#5832) (#5830)
-
-## [1.7.0](https://github.com/go-gitea/gitea/releases/tag/v1.7.0) - 2019-01-22
-
-* SECURITY
-  * Do not display the raw OpenID error in the UI (#5705) (#5712)
-  * When redirecting clean the path to avoid redirecting to external site (#5669) (#5679)
-  * Prevent DeleteFilePost doing arbitrary deletion (#5631)
-* BREAKING
-  * Restrict permission check on repositories and fix some problems (#5314)
-  * Show only opened milestones on issues page milestone filter (#5051)
-* FEATURES
-  * Implement git refs API for listing references (branches, tags and other) (#5354)
-  * Approvals at Branch Protection (#5350)
-  * Add raw blob endpoint to get objects by SHA ID (#5334)
-  * Add api for user to create org (#5268)
-  * Create AuthorizedKeysCommand (#5236)
-  * User action heatmap (#5131)
-  * Refactor heatmap to vue component (#5401)
-  * Webhook for Pull Request approval/rejection (#5027)
-  * Add command for migrating database (#4954)
-  * Search keyword by splitting provided values by , (#4939)
-  * Create Progressive Web App (#4730)
-  * Give user a link to create PR after push (#4716)
-  * Add rebase with merge commit merge style (#3844) (#4052)
-* BUGFIXES
-  * Disallow empty titles (#5785) (#5794)
-  * Fix sqlite deadlock when assigning to a PR (#5640) (#5642)
-  * Don't close issues via commits on non-default branch. (#5622) (#5643)
-  * Fix commit page showing status for current default branch (#5650) (#5653)
-  * Only count users own actions for heatmap contributions (#5647) (#5655)
-  * Update xorm to fix issue postgresql dumping issues (#5680) (#5692)
-  * Use correct value for "MSpan Structures Obtained" (#5706) (#5716)
-  * Fix bug on modifying sshd username (#5624)
-  * Delete tags in mirror which are removed for original repo. (#5609)
-  * Fix wrong text getting saved on editing second comment on an issue. (#5608)
-  * Fix nil pointer when adding a due date  (#5587)
-  * Fix type mismatch of format string (#5574)
-  * Fix bug on upload file name (#5571)
-  * Issue is not overdue when it is on the same date #5566 (#5568)
-  * Fix indexer reindex bug when gitea restart (#5563)
-  * Fix table name typo on SQL (#5562)
-  * Synchronize SSH keys on login with LDAP + Fix SQLite deadlock on ldap ssh key deletion (#5557)
-  * Fix makefile generate buildstep (#5556)
-  * Fix nil pointer base branch bug (#5555)
-  * Fix permission check on api create org (#5523)
-  * Fix detect force push failure on deletion of protected branches (#5522)
-  * Fix approvals limitation (#5521)
-  * Fix bug when a read perm user to edit his issue (#5516)
-  * Fix adding reaction fail for read permission user (#5515)
-  * Fixing MSSQL timestamp type (#5511)
-  * Fix forgot deletion of notification when delete repository (#5506)
-  * Fix empty wiki (#5504)
-  * Fix clone wiki failed via ssh (#5503)
-  * Fix code review on mssql (#5502)
-  * Fix lfs version check warning log when using ssh protocol (#5501)
-  * Fix topic name length on database (#5493)
-  * Ensure that the `closed_at` is set for closed issues (#5449)
-  * Admin should be able to delete repos via the API even if he is not a member of the organization (#5443)
-  * Word-Break the WebHook url to prevent a ui-break (#5432)
-  * Fix forgot removed records when deleting user (#5429)
-  * Fix repository deletion when there is large number of issues in it (#5426)
-  * Fix heatmap colors for Chrome/Safari (#5421)
-  * Fix password variable shadowing (#5405)
-  * Fix dependent issue searching when gitea is run in subpath (#5392)
-  * Don't force a password change for the admin user when creating an account via cli (#5391)
-  * API: '/orgs/:org/repos': return private repos with read access (#5383)
-  * Don't send assign webhooks when creating issue (#5365)
-  * Removing Labels via EditPullRequest API (#5348)
-  * Migration fixes for gogs (0.11.66) to gitea (1.6.0) #5318 (#5341)
-  * Fix bug when users have serval teams with different units on different repositories (#5307)
-  * Fix U2F if gitea is configured in subpath (#5302)
-  * Fix file edit change preview functionality (#5300)
-  * Update gitignore list (#5258)
-  * Fixed heatmap not working in mssql (#5248)
-  * Fixed wrong api request url for instances running in subfolders (#5247)
-  * Fix compatibility heatmap with mysql 8 (#5232)
-  * Fix data race on migrate repository (#5224)
-  * Fix sqlite and mssql lock (#5214)
-  * Fix sqlite lock (#5210)
-  * Fix: Accept web-command cli flags if web-command is committed (#5200)
-  * Fix: Add secret to all webhook's payload where it has been missing (#5199)
-  * Fix race on updatesize (#5190)
-  * Fix create team, update team missing units (#5188)
-  * Fix sqlite lock (#5184 & #5176)
-  * Fix showing pull request link when delete a branch (#5166)
-  * Fix JSON result of empty array in heatmap data array (#5154)
-  * Update build tags for sqlite_unlock notify (#5144)
-  * This commit will reduce join star, repo_topic, topic tables on repo search, so that fix extra columns problem on mssql (#5136)
-  * Fix deadlock when sqlite (#5118)
-  * Add comment replies (#5104)
-  * Fix home page template regression (#5102)
-  * Fix regex to support optional end line of old section in diff hunk (#5096)
-  * LDAP via simple auth separate bind user and search base (#5055)
-  * Fix markdown image with link (#4675)
-  * Fix to 3819 - Filtering issues by tags on main screen issues (#3824)
-* ENHANCEMENTS
-  * Delete organization endpoint added (#5601)
-  * Update Licenses (#5558)
-  * Support reverse proxy providing email (#5554)
-  * Add git protocol v2 support via SSH on Docker image (#5520)
-  * Add tests for api user orgs (#5494)
-  * Allow link verification for services like Mastodon (#5481)
-  * Improve team members and repositories settings UI (#5457)
-  * Remove the required class from optional ssh port in installation page (#5428)
-  * Explicitly disable Git credential helper (#5367)
-  * Setting Labels via EditPullRequest API (#5347)
-  * Implement pasting image from clipboard for browsers that supports that (#5317)
-  * Milestone issues and pull requests (#5293)
-  * Support envs on external render commands (#5278)
-  * Add option to disable automatic mirror syncing. (#5242)
-  * Remove unused db init on commands serv, update, hooks (#5225)
-  * Serve audio files using HTML5 audio tag (#5221)
-  * Pass link prefixes to external markup parsers (#5201)
-  * Add AutoHead functionality. (#5186)
-  * Fix emojis not showing in commit messages (#5168)
-  * Block registration based on email domain (#5157)
-  * Update vendor/go-sqlite3 (#5133 & #5162)
-  * Update x/net lib (#5169)
-  * Show review summary in pull requests (#5132)
-  * Use type switch (#5122)
-  * Remove duplicated if bodies (#5121)
-  * Remove check for negative length (#5120)
-  * Make switch more clear (#5119)
-  * Use named const instead of a raw string (#5115)
-  * Fix issue where ecdsa and other key types are not synced from LDAP (#5092) (#5094)
-  * Refactor: err != nil check, just return error instead (#5093)
-  * Add notification interface and refactor UI notifications (#5085)
-  * Use APP_NAME on home page (#5048)
-  * Explicitly decide whether to  use TLS in mailer's configuration (#5024)
-  * Generate random password (#5023)
-  * UX of link account (Step 1) (#5006)
-  * Make sure argsSet verifies string isn't empty too (#4980)
-  * Improve performance of dashboard (#4977)
-  * Keys API changes (#4960)
-  * Add must-change-password flag to cli for creating a user (#4955)
-  * Use native go method to get current user rather than environment variable (#4930)
-  * Make gitea serv use api/internal (#4886)
-  * Add support for search by uid (#4876)
-  * Allow to add organization members as collaborators on organization owned repositories (#4748)
-* TESTING
-  * Kill testing processes if the test takes too long (#5174)
-  * Update outdated Go toolchain version for .drone.yml (#5146)
-  * Increase the retry limit to 20 times and the interval to 200ms (#5134)
-  * Retry test-fixtures loading in case of transaction rollback (#5125)
-  * Added test environment for mssql (#4282)
-* BUILD
-  * Replace lint to revive (#5422)
-  * Update golang version in Dockerfile (#5246)
-* DOCS
-  * Typo in routers/api/v1/org/org.go fixed. (#5598)
-  * Update the docs for sqlite_unlock_notify (#5145)
-  * CN translation of docs part (#5049)
-  * Kubernetes deployment file (#5046)
-* MISC
-  * Upgrade alpine to 3.8 (#5423)
-  * Git-Trees API (#5403)
-  * Only chown directories during docker setup if necessary. Fix #4425 (#5064)
-
-## [1.6.4](https://github.com/go-gitea/gitea/releases/tag/v1.6.4) - 2019-01-15
-
-* BUGFIX
-  * Fix SSH key now can be reused as public key after deleting as deploy key (#5671) (#5685)
-  * When redirecting clean the path to avoid redirecting to external site (#5669) (#5703)
-  * Fix to use correct value for "MSpan Structures Obtained" (#5706) (#5715)
-
-## [1.6.3](https://github.com/go-gitea/gitea/releases/tag/v1.6.3) - 2019-01-04
-
-* SECURITY
-  * Prevent DeleteFilePost doing arbitrary deletion (#5631)
-* BUGFIX
-  * Fix wrong text getting saved on editing second comment on an issue (#5608)
-
-## [1.6.2](https://github.com/go-gitea/gitea/releases/tag/v1.6.2) - 2018-12-21
-
-* SECURITY
-  * Sanitize uploaded file names (#5571) (#5573)
-  * HTMLEncode user added text (#5570) (#5575)
-* BUGFIXES
-  * Fix indexer reindex bug when gitea restart (#5563) (#5564)
-  * Remove a double slash in the HTTPS redirect with Let's Encrypt (#5537) (#5539)
-  * Fix bug when a read perm user to edit his issue (#5516) (#5534)
-  * Detect force push failure on deletion of protected branches (#5522) (#5531)
-  * Let's Encrypt handler listens on correct port for certificate validation (#5525) (#5527)
-  * Fix forgot deletion of notification when delete repository (#5506) (#5514)
-  * Fix undeleted content when deleting user (#5429) (#5509)
-  * Fix empty wiki (#5504) (#5508)
-
-## [1.6.1](https://github.com/go-gitea/gitea/releases/tag/v1.6.1) - 2018-12-08
-
-* BUGFIXES
-  * Fix dependent issue searching when gitea is run in subpath (#5392) (#5400)
-  * API: '/orgs/:org/repos': return private repos with read access (#5393)
-  * Fix repository deletion when there is large number of issues in it (#5426) (#5434)
-  * Word-break the WebHook url to prevent a ui-break (#5445)
-  * Admin should be able to delete repos via the API even if they are not a member of the organization (#5443) (#5447)
-  * Ensure that the `closed_at` is set for closed (#5450)
-  * Fix topic name length on database (#5493) (#5495)
-
-## [1.6.0](https://github.com/go-gitea/gitea/releases/tag/v1.6.0) - 2018-11-22
-
-* BREAKING
-  * Respect email privacy option in user search via API (#4512)
-  * Simply remove tidb and deps (#3993)
-  * Swagger.v1.json template (#3572)
-* SECURITY
-  * Add CSRF checking to reqToken and add reqToken to admin API routes (#5272) (#5250)
-  * Improve URL validation for external wiki  and external issues (#4710)
-  * Make cookies HttpOnly and obey COOKIE_SECURE flag (#4706)
-  * Don't disclose emails of all users when sending out emails (#4664)
-  * Check that repositories can only be migrated to own user or organizations (#4366)
-* FEATURES
-  * Add comment replies (#5147) (#5104)
-  * Pull request review/approval and comment on code (#3748)
-  * Added dependencies for issues (#2196) (#2531)
-  * Add the ability to have built in themes in Gitea and provide dark theme arc-green (#4198)
-  * Add sudo functionality to the API (#4809)
-  * Add oauth providers via cli (#4591)
-  * Disable merging a WIP Pull request (#4529)
-  * Force user to change password (#4489)
-  * Add letsencrypt to Gitea (#4189)
-  * Add push webhook support for mirrored repositories (#4127)
-  * Add csv file render support defaultly (#4105)
-  * Add Recaptcha functionality to Gitea (#4044)
-* ENHANCEMENTS
-  * Fix milestones sorted wrongly (#4987)
-  * Allow api to create tags for releases if they don't exist (#4890)
-  * Fix #4877 to follow the OpenID Connect Audiences spec (#4878)
-  * Enforce token on api routes [fixed critical security issue #4357] (#4840)
-  * Update legacy branch and tag URLs in dashboard to new format (#4812)
-  * Slack webhook channel name cannot be empty or just contain an hashtag (#4786)
-  * Add whitespace handling to PR-comparison (#4683)
-  * Make reverse proxy auth optional (#4643)
-  * MySQL TLS (#4642)
-  * Make sure to set PR split view when creating/previewing a pull request  (#4617)
-  * Log user in after a successful sign up (#4615)
-  * Fix typo IsPullReuqestBroken -> IsPullRequestBroken (#4578)
-  * Allow admin toggle forcing a password change for newly created users (#4563)
-  * Update jQuery to v1.12.4 (#4551)
-  * Env var GITEA_PUSHER_EMAIL (#4516)
-  * Feat(repo): support search repository by topic name (#4505)
-  * Small improvements to dependency UI (#4503)
-  * Make max commits in graph configurable (#4498)
-  * Add valid for lfs oid (#4461)
-  * Add shortcut to save wiki page (#4452)
-  * Allow administrator to create repository for any organization (#4368)
-  * Fix repository last updated time update when delete a user who watched the repo (#4363)
-  * Switch plaintext scratch tokens to use hash instead (#4331)
-  * Increase default TOTP secret size to 320 bits (#4287)
-  * Keep preseeded database password (#4284)
-  * Implemented hover text showing user FullName (#4261)
-  * Add ability to delete a token (#4235)
-  * Fix typos in i18n variable names. (#4080)
-  * Api: repos/search: add parameters to control the sort order (#3964)
-  * Add missing path in the Docker app.ini template (#2181)
-  * Add file name and branch to page title (#4902)
-  * Offline use of google fonts (#4872)
-  * Add missing History link to directory listings v2 (#4829)
-  * Locale for Edit and Remove due date issue (#4802)
-  * Disable 'May Import Local Repository' when is disabled by setting (Is… (#4780)
-  * API /admin/users/{username} missing parameter (#4775)
-  * Display error when adding a user to a team twice (#4746)
-  * Remove UsePrivilegeSeparation from the Docker sshd_config, see #2876 (#4722)
-  * Focus title input when clicking helper link (#4696)
-  * Add vendor to user reserved words and format words list according alphabet (#4685)
-  * Add gitea/issues link to 500 page (#4654)
-  * Hide home button when landing page is not set to home (#4651)
-  * Remove link to GitHub issues in 404 template (#4639)
-  * Cmd/serve: pprof cpu and memory profile dumps to disk (#4560)
-  * Add flash message after an account has been successfully activated (#4510)
-  * Prevent html entity escaping on delete branch (#4471)
-  * Locale for button Edit on protected branch (#4442)
-  * Update notification icon (#4343)
-  * Added front-end topics validation (#4316)
-  * Don't display buttons if there are no system notifications (#4280)
-  * Issue due date api (#3890)
-* BUGFIXES
-  * dont' send assign webhooks when creating issue (#5365)
-  * Fix create team, update team missing units (#5188)
-  * Fix file edit change preview functionality (#5300)
-  * *ix bug when users have serval teams with different units on different repositories (#5307)
-  * Fix U2F if gitea is configured in subpath (#5302)
-  * Fix markdown image with link (#4675)
-  * Remove maxlines option for file logger (#5282)
-  * Fix wrong api request url for instances running in subfolders (#5261) (#5247)
-  * Accept web-command cli flags if web-command is committed (#5245) (#5200)
-  * Reduce join star, repo_topic, topic tables on repo search, to resolve extra columns problem on MSSQL (#5136) (#5229)
-  * Fix data race on migrate repository (#5224) (#5230)
-  * Add secret to all webhook's payload where it has been missing (#5208) (#5199)
-  * Fix sqlite and MSSQL lock (#5210) (#5223) (#5214) (#5218) (#5176) (#5179)
-  * Fix race on updatesize (#5190) (#5215)
-  * Fix filtering issues by tags on main screen issues (#5219) (#3824)
-  * Fix SQL quoting (#5137) (#5117)
-  * Fix regex to support optional end line of old section in diff hunk (#5097) (#5096)
-  * Fix release creation via API (#5076)
-  * Remove links from topics in edit mode  (#5026)
-  * Fix missing AppSubUrl in few more templates (fixup) (#5021)
-  * Fix missing AppSubUrl in some templates (#5020)
-  * Hide outdated comments in file view (#5017)
-  * Upgrade gopkg.in/testfixtures.v2 (#4999)
-  * Disable debug routes unless PPROF is enabled in configuration (#4995)
-  * Fix user menu item styling (#4985)
-  * Fix layout of the topics editing form (#4971)
-  * Fix null pointer dereference in ParseCommitWithSignature (#4962)
-  * Fix url in discord webhook (#4953)
-  * Detect charset and convert non UTF-8 files for display (#4950)
-  * Make sure to catch the right error so it is displayed on the UI (#4945)
-  * Fix(topics): don't redirect to explore page. (#4938)
-  * Fix bug forget to remove Stopwatch when remove repository (#4928)
-  * Fix bug when repo remained bare if multiple branches pushed in single push (#4923)
-  * Fix: Crippled diff (#4726) (#4900)
-  * Fix trimming of markup section names (#4863)
-  * Issues api allow pulls and fix #4832 (#4852)
-  * Do not autocreate directory for new users/orgs (#4828) (#4849)
-  * Fix redirect with non-ascii branch names (#4764) (#4810)
-  * Fix missing release title in webhook (#4783) (#4796)
-  * User shouldn't be able to approve or reject his/her own PR (#4729)
-  * Make sure to reset commit count in the cache on mirror syncing (#4720)
-  * Fixed bug where team with admin privilege type doesn't get any unit  (#4719)
-  * Fix incorrect caption of webhook setting (#4701) (#4717)
-  * Allow WIP marker to contains < or > (#4709)
-  * Hide org/create menu item in Dashboard if user has no rights (#4678) (#4680)
-  * Site admin could create repos even MAX_CREATION_LIMIT=0 (#4645)
-  * Fix custom templates being ignored (#4638)
-  * Fix starring icon after semantic ui update (#4628)
-  * Fix Split-View line adjustment (#4622)
-  * Fix integer constant overflows in tests (#4616)
-  * Push whitelist now doesn't apply to branch deletion (#4601) (#4607)
-  * Fix bugs when too many IN variables (#4594)
-  * Fix failure on creating pull request with assignees (#4419) (#4583)
-  * Fix panic issue on update avatar email (#4580) (#4581)
-  * Fix status code label for a successful webhook (#4540)
-  * An inactive user shouldn't be able to be added as a collaborator (#4535)
-  * Don't fail silently if trying to add a collaborator twice (#4533)
-  * Fix incorrect MergeWhitelistTeamIDs check in CanUserMerge function (#4519) (#4525)
-  * Fix out-of-transaction query in removeOrgUser (#4521) (#4522)
-  * Fix migration from older releases (#4495)
-  * Accept 'Data:' in commit graph (#4487)
-  * Update xorm to latest version and fix correct `user` table referencing in sql (#4473)
-  * Relative URLs for LibreJS page (#4460)
-  * Redirect to correct page after using scratch token (#4458)
-  * Fix column droping for MSSQL that need new transaction for that (#4440)
-  * Replace src with raw to fix image paths (#4377)
-  * Add default merge options when creating new repository (#4369)
-  * Fix docker build (#4358)
-  * Fixes repo membership check in API (#4341)
-  * Dep upgrade mysql lib (#4161)
-  * Fix some issues with special chars in branch names (#3767)
-  * Responsive design fixes (#4508)
-* TRANSLATION
-  * Fix punctuation in English translation (#4958)
-  * Fix translation (#4355)
-
-## [1.5.3](https://github.com/go-gitea/gitea/releases/tag/v1.5.3) - 2018-10-31
-
-* SECURITY
-  * Fix remote command execution vulnerability in upstream library (#5177) (#5196)
-
-## [1.5.2](https://github.com/go-gitea/gitea/releases/tag/v1.5.2) - 2018-10-09
-
-* SECURITY
-  * Enforce token on api routes (#4840) (#4905)
-* BUGFIXES
-  * Remove links from topics in edit mode (#5030)
-  * Detect charset and convert non UTF-8 files for display (#4950) (#4994)
-  * Fix layout of the topics editing form (#4971) (#4993)
-  * Fix null pointer dereference in ParseCommitWithSignature (#4964)
-  * Fix url in discord webhook (#4951)
-  * Fix font-cropping UI bug in diff (#4726) (#4929)
-  * Fix bug forget to remove Stopwatch when remove repository (#4933)
-  * Fix bug when repo remained bare if multiple branches pushed (#4927)
-  * Fix redirect with non-ascii branch names (#4764) (#4887)
-  * Fix issues api allow pulls (#4852) (#4862)
-  * Fix trimming of markup section names (#4864)
-
-## [1.5.1](https://github.com/go-gitea/gitea/releases/tag/v1.5.1) - 2018-09-03
-
-* SECURITY
-  * Don't disclose emails of all users when sending out emails (#4784)
-  * Improve URL validation for external wiki and external issues (#4710) (#4740)
-  * Make cookies HttpOnly and obey COOKIE_SECURE flag (#4706) (#4707)
-* BUGFIXES
-  * Fix missing release title in webhook (#4783) (#4800)
-  * Make sure to reset commit count in the cache on mirror syncing (#4770)
-  * Fixed bug where team with admin privilege type doesn't get any unit (#4759)
-  * Fix failure on creating pull request with assignees (#4583) (#4727)
-  * Hide org/create menu item in Dashboard if user has no rights (#4678) (#4686)
-* TRANSLATION
-  * Fix incorrect caption of webhook setting (#4701) (#4718)
-
-## [1.5.0](https://github.com/go-gitea/gitea/releases/tag/v1.5.0) - 2018-08-10
-
-* SECURITY
-  * Check that repositories can only be migrated to own user or organizations (#4366) (#4370)
-  * Limit uploaded avatar image-size to 4096px x 3072px by default (#4353)
-  * Do not allow to reuse TOTP passcode (#3878)
-* BUGFIXES
-  * Fix column droping for MSSQL that need new transaction for that (#4440) (#4484)
-  * Redirect to correct page after using scratch token (#4458) (#4472)
-  * Replace src with raw to fix image paths (#4377) (#4386)
-  * Fixes repo membership check in API (#4341) (#4379)
-  * Add default merge options when adding new repository (#4369) (#4373)
-  * Fix repository last updated time update when delete a user who watched the repo (#4363) (#4371)
-  * Fix html entity escaping in branch deletion message (#4471) (#4485)
-  * Fix out-of-transaction query in removeOrgUser (#4521) (#4524)
-  * Fix incorrect MergeWhitelistTeamIDs check in CanUserMerge function (#4519)
-  * Fix panic issue on update avatar email (#4580) (#4590)
-  * Fix bugs when too many IN variables (#4594) (#4597)
-  * Push whitelist now doesn't apply to branch deletion (#4601) (#4640)
-  * Site admin could create repos even MAX_CREATION_LIMIT=0 (#4645) (#4650)
-* FEATURES
-  * Add cli commands to regen hooks & keys (#3979)
-  * Add support for FIDO U2F (#3971)
-  * Added user language setting (#3875)
-  * LDAP Public SSH Keys synchronization (#1844)
-  * Add topic support (#3711)
-  * Multiple assignees (#3705)
-  * Add protected branch whitelists for merging (#3689)
-  * Global code search support (#3664)
-  * Add label descriptions (#3662)
-  * Add issue search via API (#3612)
-  * Add repository setting to enable/disable health checks (#3607)
-  * Emoji Autocomplete (#3433)
-  * Implements generator cli for secrets (#3531)
-* ENHANCEMENTS
-  * Add more webhooks support and refactor webhook templates directory (#3929)
-  * Add new option to allow only OAuth2/OpenID user registration (#3910)
-  * Add option to use paged LDAP search when synchronizing users (#3895)
-  * Symlink icons (#1416)
-  * Improve release page UI (#3693)
-  * Add admin dashboard option to run health checks (#3606)
-  * Add branch link in branch list (#3576)
-  * Reduce sql query times in retrieveFeeds (#3547)
-  * Option to enable or disable swagger endpoints (#3502)
-  * Add missing licenses (#3497)
-  * Reduce repo indexer disk usage (#3452)
-  * Enable caching on assets and avatars (#3376)
-  * Add repository search ordered by stars/forks. Forks column in admin repo list (#3969)
-  * Add Environment Variables to Docker template (#4012)
-  * LFS: make HTTP auth period configurable (#4035)
-  * Add config path as an optionial flag when changing pass via CLI (#4184)
-  * Refactor User Settings sections (#3900)
-  * Allow square brackets in external issue patterns (#3408)
-  * Add Attachment API (#3478)
-  * Add EnableTimetracking option to app settings (#3719)
-  * Add config option to enable or disable log executed SQL (#3726)
-  * Shows total tracked time in issue and milestone list (#3341)
-* TRANSLATION
-  * Improve English grammar and consistency (#3614)
-* DEPLOYMENT
-  * Allow Gitea to run as different USER in Docker (#3961)
-  * Provide compressed release binaries (#3991)
-  * Sign release binaries (#4188)
-
-## [1.4.3](https://github.com/go-gitea/gitea/releases/tag/v1.4.3) - 2018-06-26
-
-* SECURITY
-  * HTML-escape plain-text READMEs (#4192) (#4214)
-  * Fix open redirect vulnerability on login screen (#4312) (#4312)
-* BUGFIXES
-  * Fix broken monitoring page when running processes are shown (#4203) (#4208)
-  * Fix delete comment bug (#4216) (#4228)
-  * Delete reactions added to issues and comments when deleting repository (#4232) (#4237)
-  * Fix wiki URL encoding bug (#4091) (#4254)
-  * Fix code tab link when viewing tags (#3908) (#4263)
-  * Fix webhook type conflation (#4285) (#4285)
-
-## [1.4.2](https://github.com/go-gitea/gitea/releases/tag/v1.4.2) - 2018-06-04
-
-* BUGFIXES
-  * Adjust z-index for floating labels (#3939) (#3950)
-  * Add missing token validation on application settings page (#3976) #3978
-  * Webhook and hook_task clean up (#4006)
-  * Fix webhook bug of response info is not displayed in UI (#4023)
-  * Fix writer cannot read bare repo guide (#4033) (#4039)
-  * Don't force due date to current time (#3830) (#4057)
-  * Fix wiki redirects (#3919) (#4065)
-  * Fix attachment ENABLED (#4064) (#4066)
-  * Added deletion of an empty line at the end of file (#4054) (#4074)
-  * Use ResolveReference instead of path.Join (#4073)
-  * Fix #4081 Check for leading / in base before removing it (#4083)
-  * Respository's home page not updated after first push (#4075)
-
-## [1.4.1](https://github.com/go-gitea/gitea/releases/tag/v1.4.1) - 2018-05-03
-
-* BREAKING
-  * Add "error" as reserved username (#3882) (#3886)
-* SECURITY
-  * Do not allow inactive users to access repositories using private key (#3887) (#3889)
-  * Fix path cleanup in file editor, when initilizing new repository and LFS oids  (#3871) (#3873)
-  * Remove unnecessary allowed safe HTML (#3778) (#3779)
-  * Correctly check http git access rights for reverse proxy authorized users (#3721) (#3743)
-* BUGFIXES
-  * Fix to use only needed columns from tables to get repository git paths (#3870) (#3883)
-  * Fix GPG expire time display when time is zero (#3584) (#3884)
-  * Fix to update only issue last update time when adding a comment (#3855) (#3860)
-  * Fix repository star count after deleting user (#3781) (#3783)
-  * Use the active branch for the code tab (#3720) (#3776)
-  * Set default branch name on first push (#3715) (#3723)
-  * Show clipboard button if disable HTTP of git protocol (#3773) (#3774)
-
-## [1.4.0](https://github.com/go-gitea/gitea/releases/tag/v1.4.0) - 2018-03-25
-
-* BREAKING
-  * Drop deprecated GOGS\_WORK\_DIR use (#2946)
-  * Fix API status code for hook creation (#2814)
-* SECURITY
-  * Escape branch name in dropdown menu (#3691) (#3692)
-  * Refactor and simplify to correctly validate redirect to URL (#3674) (#3676)
-  * Fix escaping changed title in comments (#3530) (#3534)
-  * Escape search query (#3486) (#3488)
-  * Sanitize logs for mirror sync (#3057)
-* FEATURES
-  * Serve .patch and .diff for pull requests (#3305, #3293)
-  * Add repo-sync-releases admin command (#3254)
-  * Support default private when creating or migrating repository (#3239)
-  * Writable deploy keys (closes #671) (#3225)
-  * Add Pull Request merge options - Ignore white-space for conflict checking, Rebase, Squash merge (#3188)
-  * Added progressbar for issues with checkboxes (#1146). (#3171)
-  * Mention completion for issue editor. (#3136)
-  * Add 'mark all read' option to notifications (#3097)
-  * Git LFS lock api (#2938)
-  * Add reactions to issues/PR and comments (#2856)
-  * Add dingtalk webhook  (#2777)
-  * Responsive view (#2750)
-* BUGFIXES
-  * Fix wiki inter-links with spaces (#3560) (#3632)
-  * Fix query protected branch bug (#3563) (#3571)
-  * Fix remove team member issue (#3566) (#3570)
-  * Fix the protected branch panic issue (#3567) (#3569)
-  * If Mirrors repository no content is fetched, updated time should not be changed (#3551) (#3565)
-  * Bug fix for mirrored repository releases sorted (#3522) (#3555)
-  * Add issue closed time column to fix activity closed issues list (#3537) (#3540)
-  * Update markbates/goth library to support OAuth2 with new dropbox API (#3533) (#3539)
-  * Fixes missing avatars in offline mode (#3471) (#3477)
-  * Fix synchronization bug in repo indexer (#3455) (#3461)
-  * Fix rendering of wiki page list if wiki repo contains other files (#3454) (#3463)
-  * Fix webhook X-GitHub-* headers casing for better compatibility (#3429)
-  * Add content type and doctype to requests made with go-get (#3426, #3423)
-  * Fix SQL type error for webhooks (#3424)
-  * Fix PR merge error (#3421)
-  * Recognize more characters in crossreferenced repo name (#3413)
-  * Fix MSSQL bug on org (#3405)
-  * HTML escape all lines of the search result (#3402)
-  * Change local copy origin url after repository rename (#3399)
-  * Force-push to base repo's ref/pull/#/head (#3393)
-  * Fix bug when a user delete but assigned on issue (#3318)
-  * Use issue number/index instead of id for API URL. Fix #3297 (#3298)
-  * Fix repo-transfer-and-team-repo-count bug (#3241)
-  * Fix always-on SSL Mode checkbox in admin page (#3208)
-  * Fix source download link when no code unit allowed (#3166)
-  * Fix org owner cannot be removed if he is not in owner team (#3164)
-  * Fix run web with -p push failed (#3154)
-  * Fix gpg tmpl (#3153)
-  * Fix SSH auth lfs locks (#3152)
-  * Improvements for supporting UI Location (#3146)
-  * Fix new pull request link (#3133)
-  * Fix missing branch in release bug (#3108)
-  * Allow adding collaborators with (fullname) (#3103)
-  * Fix repo links (#3093)
-  * fix lfs url refs + keep path upper/lowercase in db. (#3092)
-  * Fix redis session failed (#3086)
-  * Fix bugs in issue dashboard stats (#3073)
-  * Fix avatar URLs (#3069)
-  * Fix ref parsing in commit messages (#3067)
-  * Fix issue list branch link broken (#3061)
-  * sendmail: correct option to set envelope-sender (#3044)
-  * Fix missing password length check when change password (#3039)
-  * Fix git lfs path (#3016)
-  * Fix API-Endpoint release (#3005) (#3012)
-  * Set OpenID support on by default when installing new instance (#3010)
-  * Various wiki bug fixes (#2996)
-  * Fix go-get, src and raw urls to new scheme (#2978)
-  * Fix error when add user has full name to team (#2973)
-  * Fix memcache support when value is returned as string always (#2924)
-* ENHANCEMENTS
-  * Use GiteaServer as the user agent for http requests (#3404)
-  * Delete indexer DB entries when (re)creating index (#3385)
-  * Change how merged PR commit info are prepared (#3368)
-  * Asynchronously populate the repo indexer (#3366)
-  * Make the default action for the gitea executable that of running the webserver (#3331)
-  * Templates for extra links in top navbar and repo tool tabs. (#3308)
-  * Fixed asterisk based tasklist items #3295 (#3296)
-  * Add more additional template snippets (#3286)
-  * Open external tracker in blank window, consistently with wiki (#3227)
-  * Fix repo links on user profile (#3197)
-  * Enable emoji for wiki view (#3158)
-  * Small improve on deleting attachements (#3145)
-  * Reduce overhead of upgrades for users with custom stylesheets/JS (#3051)
-  * Default log level to Info without hardcoding it in installer (#3041)
-  * Memory usage improvements (#3013)
-  * Add fingerprint to ssh key endpoints. (#3009)
-  * Improve memory usage when reaching diff limits (#2990)
-  * Expandable commit bodies (#2980)
-  * Update gitgraph.js to fix blurry commit graph on HiDPI screens (#2957)
-  * Fix language names (#2955)
-  * Remove render issue link (#2954)
-  * Page parameter for repo search API (#2915)
-  * Apply LANDING\_PAGE config options for logged in users (#2894)
-  * Enable admin to search by email (#2888)
-  * Hide add key button if SSH is disabled (#2873)
-  * Fix comment API paths (#2813)
-  * Add an option to allow redirect of http port 80 to https. (#1928)
-* MISC
-  * Fix organization profile on mobile devices (#3332)
-  * Fix guide link for webhooks in repository settings (#3291) (#3292)
-  * Enable Libravatar by default in new installations (#3287)
-  * Improve suppressed diff boxes (#3193)
-  * fix button heights on commits page (#3091)
-  * Minor copy changes (#3074)
-  * Sort repos in issues dashboard sidebar (#3072)
-  * Remove box-shadow from UI, fix dashboard issue (#3065)
-  * Adjust branch button size (#3063)
-  * Fix misalignment issue in repo header (#3062)
-  * Delete a user's public key via admin api (closes #3014) (#3059)
-  * Dashboard: Fix line height problem in issue titles (#3054)
-  * Remove duplicate "Max Diff Lines" from config view (#2987)
-  * Drop unmaintained gogs migration script (#2947)
-  * App restarts to quickly if it fails to start. (#2945)
-  * Add owner to delete repo message (#2886)
-
-## [1.3.1](https://github.com/go-gitea/gitea/releases/tag/v1.3.1) - 2017-12-08
-
-* BUGFIXES
-  * Sanitize logs for mirror sync (#3057, #3082) (#3078)
-  * Fix missing branch in release bug (#3108) (#3117)
-  * Fix repo indexer and submodule bug (#3107) (#3110)
-  * Fix legacy URL redirects (#3100) (#3106)
-  * Fix redis session failed (#3086) (#3089)
-  * Fix issue list branch link broken (#3061) (#3070)
-  * Fix missing password length check when change password (#3039) (#3071)
-
-## [1.3.0](https://github.com/go-gitea/gitea/releases/tag/v1.3.0) - 2017-11-29
-
-* BREAKING
-  * Make URL scheme unambiguous (#2408)
-* FEATURES
-  * Add branch overiew page (#2108)
-  * Code/repo search (#2582)
-  * Add Activity page to repository (#2674)
-  * Issue Timetracking (#2211)
-  * Add orgmode document type on file view and readme (#2525)
-  * Add external markup render support (#2570)
-  * Implementation of discord webhook (#2402)
-  * Webhooks for repo creation/deletion (#1663)
-  * Complete push webhooks (#2530)
-  * Add possibility to record branch information in an issue (#780)
-  * Create new branch from branch selection dropdown (#2130)
-  * Implementation of all repositories of a user from user->settings (#1740)
-  * Add LFS object verification step after upload (#2868)
-  * Configurable SSH cipher suite (#913)
-  * Disable custom Git Hooks globally via configuration file (#2450)
-  * Sync releases table with tags on push and for mirrors (#2459)
-* BUGFIXES
-  * Fix label comments for French locale (#3017)
-  * Remove duplicate "Max Diff Lines" from config view (#3001)
-  * Fix over-escaped characters (#2992)
-  * Fix go-get, src and raw urls to new scheme (#2986)
-  * Fix error when add user has full name to team (#2975)
-  * Fix files/commits of merged PRs (#2970)
-  * Update golang x/crypto dependencies - Fix SSH transport fail (#2951)
-  * Fix memcache support when value is returned as string always (#2950)
-  * Fix issue link rendering in commit messages (#2897)
-  * Fix adding a new authentication source after selecting OAuth (#2889)
-  * Fix new branch creation to new url scheme (#2884)
-  * Allow spaces in username for LDAP users (#2880)
-  * Fix LFS not returning correct content length when requesting a range … (#2864)
-  * Fix fork repository cycle to self (#2860)
-  * Fix click create pull request button 404 (#2859)
-  * Fix API raw file content access for default branch (#2849)
-  * Clean repository ROOT directory name with filepath.Clean (#2846)
-  * Fix API raw requests for commits and tags (#2841)
-  * Fix order of comments (#2835)
-  * Issue content should not be updated when closing with comment (#2833)
-  * Fix ordering in app.ini and fix run mode option (#2829)
-  * Fix redirect url of legacy commits route (#2825)
-  * Fix commits page url (#2823)
-  * Fix wrong translations (#2818)
-  * Fix dropdown menu position when explore repos (#2808)
-  * Fix Git LFS object/repo link storage in database and small refactoring (#2803)
-  * Use relative URLs for avatars on the dashboard (#2800)
-  * Add checks for commits with missing author and time (#2771)
-  * Fix emojify image URL (#2769)
-  * Hide unactive on explore users and some refactors (#2741)
-  * Fix IE unsupported javascript construction in branch dropdown (#2736)
-  * Only update mirror last update after successful sync (#2730)
-  * Fix semantic-ui style conflict with v-cloak (#2722)
-  * Fixing wrong translation on sort type oldest/latest (#2720)
-  * Fix PR, milestone and label functionality if issue unit is disabled (#2710)
-  * Fix plain readme didn't render correctly on repo home page (#2705)
-  * Fix organization removal from watch table migration (#2703)
-  * Fix repository search function (#2689)
-  * fix panic on gogs webhook creation (#2675)
-  * Fix orgnization user watch repository (#2670)
-  * GPG key email verification no longer case sensitive (#2661) (#2663)
-  * Fix index column deletion (#2651)
-  * table `pull_request` wasn't updated correctly (#2649)
-  * Fix go get response if only app URL is custom in configuration (#2634)
-  * Fix doubled issue tab introduced in migration v16 (#2611)
-  * Rewrite migrations to not depend on future code changes (#2604)
-  * Fix implementation of repo Home func (#2601)
-  * Fix translation upload to crowdin (#2599)
-  * Reduce usage of allcols on update (#2596)
-  * fix go get subpackage bug (#2584)
-  * Fix broken migration to add can_push field back to table (#2574)
-  * fix readme view bug (#2566)
-  * Fix sending mail with a non-latin display name. #2102 (#2559)
-  * Restricting access to fork functioanlity to users with Code access (#2534)
-  * fix updated update on public key (#2514)
-  * Added bucket name to s3 drone plugin (#2505)
-  * fixes 500 error on dashboard when using MSSQL (#2504)
-  * fix wrong rendering of commit detail page (#2503)
-  * Hotfix: Add time manually adds time in nanoseconds (#2499)
-  * Remove repository mirrors from "collaborative" list (#2497)
-  * fix release failed since the wrong token name (#2496)
-  * Fix slice out of bounds error in mailer (#2479)
-  * Fix #2470 (#2477)
-  * fix orgnization webhooks (#2422)
-  * fix webhook test (#2415)
-  * fix missing orgnization discord webhook (#2414)
-  * Fix route handler order (#2409)
-  * Prevent sending emails and notifications to inactive users (#2384)
-  * Move themes to plugin directory. Fixes #2372 (#2375)
-  * fix duplicated feed (#2370)
-  * Fix missing collabrative repos (#2367)
-  * Only check at least one email gpg key (#2266)
-  * don't check minimum key size when disabled (#1754)
-  * Fix run command race (#1470)
-  * fix .netrc authentication (#2700)
-  * Fix so that user can still fork his own repository to his organizations (#2699)
-  * Fix can_push value to false in protected_branch (#2560)
-  * Fix copy in email templates (#2801)
-  * Fix inconsistencies in user settings UI (#2901)
-  * Fix attachments icon size on zoom in/out (#2853)
-  * Fix ignored errors in API route (#2850)
-  * Fix activity css conflict with semantic ui (#2758)
-  * Fix notifications tabs according to semantic-ui docs (#2733)
-  * Fix typos in app.ini (#2732)
-  * Fix duplicated rel attribute (#2549)
-  * Fix tests code to prevent some runtime errors (#2381)
-* ENHANCEMENTS
-  * Memory usage improvements and lower minimal git requirement to 1.7.2 (#3013) (#3028)
-  * Set OpenID support on by default when installing new instance (#3010) (#3027)
-  * Use api.TrackedTime in API (#2807)
-  * Configurable SSH key exchange algorithm and MAC suite (#2806)
-  * Add Safari pinned tab icon (#2799)
-  * Improve force push detect when push (#2798)
-  * Add wrapping to long diff lines (#2789)
-  * Link members and repositories count to each page on org home. (#2787)
-  * Show Sendmail settings on admin config page (#2782)
-  * Add commit count caching (#2774)
-  * Use identicon image for default gravatar. (#2767)
-  * Add default ssh ciphers (#2761)
-  * Remove manual of unsupported option (#2757)
-  * Add search mode option to /api/repo/search (#2756)
-  * Move swagger-ui under /api/v1 (#2746)
-  * Add support for extra sendmail arguments (#2731)
-  * Use buffersize to reduce database connection when iterate (#2724)
-  * Render plain text README.txt monospaced (#2721)
-  * Integration test for activity page (#2704)
-  * Merge password and 2fa page on user settings (#2695)
-  * Allow custom SSH user in UI for built-in SSH server (#2617) (#2678)
-  * Refactor duplicated code in repo handlers (#2657)
-  * Replace deprecated Id method with ID (#2655)
-  * Remove redudant functions and code (#2652)
-  * hide navbar when only 1 sign-in method is available (#2444) (#2648)
-  * Change default sort order (#2647)
-  * Change pull description text (#2075) (#2646)
-  * Remove direct user adding to organization members (#2641)
-  * Use session when creating user (#2638)
-  * Use Semantic UI's Search component for user and repo search (#2636)
-  * Use AfterLoad instead of AfterSet on Structs (#2628)
-  * Remove redudant CheckUnit calls in router (#2627)
-  * Remove repo unit index (#2621)
-  * Remove redudant issue LoadAttributes() calls (#2614)
-  * Make indexer code more reusable (#2590)
-  * Use custom type and constants to hold available order by options (#2572)
-  * Use named ActionType constants in template helper (#2545)
-  * Make basic functionality work without JavaScript (#2541)
-  * Ctrl + Enter to submit forms (#2540)
-  * Automatically regenerate indexer for incompatible versions (#2524)
-  * Set default lfs content path to data/lfs (#2521)
-  * Convert spaces to tabs in footer.tmpl (#2520)
-  * Sort repository tree entries in natural way (#2506)
-  * Open external wiki in new window (#2489)
-  * Use created & updated instead BeforeInsert & BeforeUpdate (#2482)
-  * Hide branch on pull request view or create UI (#2454)
-  * improve protected branch to add whitelist support (#2451)
-  * some refactors for issue and comments (#2419)
-  * Restructure markup & markdown to prepare for multiple markup language… (#2411)
-  * Improve issue search (#2387)
-  * Add UseCompatSSHURI setting (#2356)
-  * Use custom search for each filter type in dashboard (#2343)
-  * Failed authentication are now properly logged (#2334)
-  * Add environment variable support for Docker image (#2201)
-  * Set session and indexers' data files rel to AppDataPath (#2192)
-  * Display commit status on landing page of repo (#1784)
-* TESTING
-  * Add integration test for logging out (#2892)
-  * Integration test for user deleting account (#2891)
-  * Use different directories for session files in integration tests (#2834)
-  * Add deleted_branch table fixture (#2832)
-  * Include HTTP method in test error message (#2815)
-  * Add repository search unit and integration tests (#2575)
-  * Expand fixtures (#2571)
-  * Fix /api/repo/search integration tests (#2550)
-  * Make integration tests more user-friendly (#2536)
-  * Fix unit test race condition (#2516)
-  * Add missing fixture to clean gpg_key table (#2494)
-  * Hotfix for integration testing (#2473)
-  * Make repo private to not interfere with other tests (#2467)
-  * Error message for integration test (#2410)
-  * Fix "index out of range" runtime error in repo_list tests (#2376)
-  * Add git clone test on integration test (#1682)
-* TRANSLATION
-  * Fix localization texts that contain semicolon (#2900)
-  * Fix activity locale (#2709)
-  * Update translation from crowdin (#2368)
-* BUILD
-  * change the email and name to GitBot account. (#2848)
-  * Fix removing backslash before quotes in translations (#2831)
-  * add gitea remote in drone. (#2817)
-  * add remote name for git push. (#2816)
-  * Launch Gitea with custom UID/GID for 'git' user (fixes #2286) (#2791)
-  * Download and pushing translations (#2727)
-  * Automatic update of translations (#2585)
-  * Add pre-build step for nodejs stuff (#2581)
-  * Compress css with nodejs (#2580)
-  * Remove go version check for make fmt (#2558)
-  * Fix lint errors (#2547)
-  * Always run fmt check in CI (#2546)
-  * Fix fmt errors (#2544)
-  * add codecov.io service. (#2493)
-  * Fix some tests : make coverage -> test (#2492)
-  * Fix fmt error in mailer (#2490)
-  * Allow changing integration test database connection using env variables (#2484)
-  * Add changelog config file for generate changelog (#2461)
-  * Changes for latest DroneCI (#2362)
-  * Use standard lessc and minify CSS using Node.js (#2337)
-* DOCS
-  * Update screenshots on README (#2910)
-  * Gogs -> Gitea (#2909)
-  * Update swagger documentation (#2899)
-  * Fix typo (#2810)
-  * Fix Polish language name spelling (#2766)
-  * Fix Various Grammar Issues and Adjust Unnatural Wording (#2737)
-  * Add maintainer label for docker file (#2658)
-  * Link to gitea-specific Vagrant example (#2624)
-  * add release notes of v1.1.4 (#2463)
-  * Wrap most paragraphs to 80 columns (#2396)
-  * Update CONTRIBUTING following #2329  discussion (#2394)
-  * Update hard-coded version to 1.3.0+dev (#2390)
-  * Clarify Translation Process. Also fix branch names (#2378)
-  * Admin grammar fixes and improvements (#2056)
-* MISC
-  * Sync MaxGitDiffLineCharacters with conf/app.ini (#2779)
-  * Dockerfile: Updated alpine image to 3.6. (#2486)
-  * Basic VSCode configuration for building and debugging (#2483)
-  * Added vendor dir for js/css libs; Documented sources (#1484) (#2241)
-
-## [1.2.3](https://github.com/go-gitea/gitea/releases/tag/v1.2.3) - 2017-11-03
-
-* BUGFIXES
-  * Only require one email when validating GPG key (#2266, #2467, #2663) (#2788)
-  * Fix order of comments (#2835) (#2839)
-
-## [1.2.2](https://github.com/go-gitea/gitea/releases/tag/v1.2.2) - 2017-10-26
-
-* BUGFIXES
-  * Add checks for commits with missing author and time (#2771) (#2785)
-  * Fix sending mail with a non-latin display name (#2559) (#2783)
-  * Sync MaxGitDiffLineCharacters with conf/app.ini (#2779) (#2780)
-  * Update vendor git (#2765) (#2772)
-  * Fix emojify image URL (#2769) (#2773)
-
-## [1.2.1](https://github.com/go-gitea/gitea/releases/tag/v1.2.1) - 2017-10-16
-
-* BUGFIXES
-  * Fix PR, milestone and label functionality if issue unit is disabled (#2710) (#2714)
-  * Fix plain readme didn't render correctly on repo home page (#2705) (#2712)
-  * Fix so that user can still fork his own repository to his organizations (#2699) (#2707)
-  * Fix .netrc authentication (#2700) (#2708)
-  * Fix slice out of bounds error in mailer (#2479) (#2696)
-
-## [1.2.0](https://github.com/go-gitea/gitea/releases/tag/v1.2.0) - 2017-10-10
-
-* SECURITY
-  * Sanitation fix from Gogs (#1461)
-* BREAKING
-  * Rename /forget_password url to /forgot_password (#1219)
-* FEATURES
-  * Logo: Add task to generate images from SVG and change to new logo (#2194)
-  * Status-API (#1332)
-  * Show commit status icon in commits table (#1688)
-  * Additional OAuth2 providers (#1010)
-  * GPG commit validation (#1150)
-  * Rework SSH key management UI to add GPG (#1293)
-  * Implement GPG api (#710)
-  * Login via OpenID-2.0 (#618)
-  * Add units to team (#947)
-  * Batch updates for issues (#926)
-  * Add Gitea Webhook (#1755)
-  * API: support '/orgs/:org/repos' (#2047)
-  * Display all organization from user settings (#1739)
-  * LDAP user synchronization (#1478)
-  * Adding #issuecomment to the URL in E-Mail notifications (#1674)
-  * Add download count field and unit testing for attachment. (#1512)
-  * Add repo mirror sync API endpoint (#1508)
-  * Add markup package to prepare for org markup format (#1493)
-  * Support for custom html meta  (#1423)
-  * Per issue/PR watch/unwatch (#1410)
-  * Allow ENABLE_OPENID_SIGNUP to depend on DISABLE_REGISTRATION (#1369)
-  * Repo size in admin panel (#1482)
-  * Show user OpenID URIs in their profile (#1314)
-  * Add change-password admin command (#1304)
-  * Only use issue and wiki on repo. (#1297)
-  * Allow push to init a wiki repo (#1279)
-* ENHANCEMENTS
-  * Make time diff translatable (#2057)
-  * Smaller watch, star, and fork buttons (#2052)
-  * Display config file path on admin panel (#2030)
-  * Only show SSH clone URL if signed in (#2169) (#2170)
-  * Only show "No Description" to repo admins (#2167)
-  * Always return valid go-get meta, even if unauthorized (#2010)
-  * Enable assignee e-mail notification (#2003)
-  * Let not-logged-in users view releases (#1999)
-  * No highlighting for .txt files (#1922)
-  * Make side nav on dashboard stackable (#1778)
-  * Setting to disable authorized_keys backup (#1856)
-  * Hide the create organization button (in dashboard/organization section) (#1705)
-  * LFS: Return 404 for unimplemented endpoints (#1330)
-  * Show a link to password reset from user settings requiring a password (#862)
-  * Reserve the "explore" user/org name (#1222)
-  * Send notifications to participants in issue comments (#1217)
-  * Improve style of user OpenID setting page (#1324)
-  * Use font-awesome OpenID icon more (#1320)
-  * Use readonly input form to show the validated OpenID URI (#1308)
-  * Add captcha support to OpenID based signup (#1307)
-  * Minor improvements on commit graph UI (#1380)
-  * Mirror sync interval specified as duration string (#1407)
-  * Make issue in commit graph "clickable" (#1392)
-  * Use whole button (commit graph) as link (#1390)
-  * Autofocus on 2fa passcode fields (#1460)
-  * Sort on repo size in admin panel (#1654)
-  * Improve dashboard repo search (#1652)
-  * Use a better default MAX_GIT_DIFF_LINE_CHARACTERS (#1845)
-  * Adds Parent property to the repo API (#1687)
-  * Add configuration option for default permission to create Organizations (#1686)
-  * Remove sha1 hash display in repository table (#1678)
-  * Download files to their original filename (#1676)
-  * Exposes in API the Repo entity's Size and IsBare property (#1668)
-  * Change two factor code entry box from text to number (#1733)
-  * Directly show error if user hit repository limit  (#1767)
-  * Generate small and large logos at 4x resolution (#2233)
-  * Tags listed in releases tab (#2389) (#2424)
-* BUGFIXES
-  * Fix adding branch as protected to not allow pushing to it (#2556)
-  * Orgs: fix org page title when full name is not defined (#1495)
-  * Fix double borders on edit page (#1152) (#1153)
-  * Search bar fixes for #1187 and #1205 (#1207)
-  * Fix upgrade failed after ever rollback (#1194)
-  * Fix FCGI (over TCP) support (#1368)
-  * Backport of migration fixes (#2604) (#2677)
-  * fix panic on gogs webhook creation (#2675) (#2676)
-  * Backport: Fixes 500 error on dashboard when using MSSQL (#2504) (#2662)
-  * Fix go get response if only app URL is custom in configuration (#2634) (#2640)
-  * Fix deletion of unprotected branches (#2630)
-  * Backport of 2611 / Fix doubled issue tab introduced in migration v16 (#2622)
-  * v38 migration used an outdated version of RepoUnit model (#2602)
-  * fix go get subpackage bug (#2584) (#2589)
-  * Backport: Sync releases table with tags on push and for mirrors (#2459) (#2554)
-  * Backport: Restricting access to fork functioanlity to users with Code access (#2542)
-  * Fix migration from pre-v15 to 1.2.0 (#2460) (#2465)
-  * Fix migration from pre-v15 to 1.2.0 (#2460)
-  * fix duplicated feed (#2370) (#2413)
-  * Fix releases to be counted from database not tags (#2389)
-  * Fix missing collabrative repos (#2367) (#2382)
-  * Add more test for login links and fix a bug on action retrieve (#2361)
-  * Fix SQL condition bug in GetFeeds(..) (#2360)
-  * fix bug on create repo link on dashboard (#2359)
-  * Fix order of elements in dashboard html (#2344)
-  * Fix repo-search template errors for go1.7 (#2336)
-  * Add missing forks key for dashboard repository component (#2325)
-  * fix template error on explore repos (#2319)
-  * Trigger sync webhooks on UI commit (#2302)
-  * fix 500 error when view an issue which's milestone deleted (#2297)
-  * Only update needed columns when update user (#2296)
-  * Fix rendering of external links (#2292)
-  * Fix and improve dashboard repo UI (#2285)
-  * Make short link pattern greedy (#2259)
-  * Temporarily patch go-ini/ini with fork (#2255)
-  * Convert xorm literal queries to method calls (#2253)
-  * update code.gitea.io/git in vendor to fix delete branch fails (#2250)
-  * Replace calls to xorm UseBool with Where (#2237)
-  * rhel7 has a git version with four digits (1.8.3.1) (#2236)
-  * Fix internal requests when gitea listens to unix socket or only external IP (#2234)
-  * Check for access in /repositories/:id (#2227)
-  * Fixed robots.txt 404 error (#2226)
-  * Fix counts on issues dashboard (#2215)
-  * Fix unclosed session bug (#2214)
-  * Add collaborative repositories to the dashboard (#2205)
-  * Fix issue updated_unix bug (#2204)
-  * Fix Commits nil pointer dereference (#2203)
-  * Fix bare-repo bugs (#2199)
-  * Fix PR nil-dereference bug (#2195)
-  * Allow only single fork per user/organization (#2193)
-  * Fix key usage time update if the key is used in parallel for multiple operations (#2185)
-  * Only allow token authentication with 2FA enabled (#2184)
-  * Fix profile update for non-local users (#2178)
-  * Fix compiling without sqlite and gcc (#2177)
-  * Make compare button URL aware if current repo is a fork (#2162) (#2163)
-  * Remove unit types commits and settings (#2161)
-  * Fix OpenID registration route (#2160)
-  * Fix repository settings collobration list display (#2151)
-  * Ignore invalid issue numbers in commit messages. Fixes  #2022 (#2150)
-  * Fix SHA1 hash linking (#2143)
-  * Fix repo API bug (#2133)
-  * Use POSIX complaint ! operator in find (#2132)
-  * Fix GET /users/:username/repos endpoint (#2125)
-  * Fix username rendering bug (#2122)
-  * Fix wiki preview links (#2119)
-  * vendor: update sqlite to fix "database is locked" errors (#2116)
-  * Fix unchecked error bug (#2110)
-  * Fix missing-return bug (#2109)
-  * Fix API for branches with slashes (#2096)
-  * Fix git hooks update to receive required arguments (#2095)
-  * upgrade git source code. (#2094)
-  * Fix SQL bug in models.PullRequests (#2092)
-  * Don't ignore gravatar error (#2083)
-  * Fix release display and correct paging (#2080)
-  * remove unnecessary blank lines and wrong error log (#2079)
-  * Check for valid renamed usernames (#2077)
-  * Update git module (#2074)
-  * Fix org hooks UI (#2072)
-  * Fix #1271: Call location.reload after XHR finishes (#2071)
-  * Fix default ghost assignee bug (#2069)
-  * Fix bug in issue labels API (#2048)
-  * Load label ID in NewLabels (#2045)
-  * Fix: `http: multiple response.WriteHeader calls` (#2038)
-  * Pagination on releases page (#2035)
-  * repo/editor: fix breadcrumb path cuts parent dirs (#3859) (#2032)
-  * Fix displaying commits and files of PR created from now deleted fork (#2023)
-  * Fix #2001 and fix issue comments hidden (#2016)
-  * Update code.gitea.io/git (#2014)
-  * Keep sort when switching page (#2013)
-  * Important: wrong PR merge commit ID saved (#2007)
-  * Don't show non-comments in comments API (#2001)
-  * Fix "Dashboard shows deleted comments" (#1995)
-  * Make branch deletion URL more like GitHub's, fixes #1397 (#1994)
-  * Fix fast-forward PR bug (#1989)
-  * Fix GPG email checking to be case insensitive (#1988)
-  * fix bug for normal user visit public repo (#1984)
-  * fix collborators lack of units on orgnization repositories (#1968)
-  * Fix diff of renamed and modified file (#1967)
-  * Fix uppercase default branch bug (#1965)
-  * Fix bug in Action.loadRepo() (#1959)
-  * Fix deleted milestone bug (#1942)
-  * Fix engine bug in getIssueByID (#1934)
-  * Switch to keybase go-crypto (for some elliptic curve key) + test (#1925)
-  * Fix setting.AppPath for integration tests (#1923)
-  * Fix search by issue type (#1914)
-  * Fix ghost user bug (#1913)
-  * Require token before checking membership/ownership (#1905)
-  * Bug fixes for org member API (#1904)
-  * A missing / to provide a correct endpoint (#1903)
-  * Fix 500 in public activity page (#1901)
-  * Center-aligned login topbar (#1880)
-  * Migration to fix existing owner team units (#1873)
-  * Fix paginater length (#1866)
-  * Fix bug in removeOrgRepo (#1858)
-  * Display draft releases (#1854)
-  * Fix 404 for external tracking issues (#1852)
-  * Update code.gitea.io/git (#1849)
-  * Fix user profile activity feed (#1848)
-  * Don't ignore error in getMergeCommit (#1843)
-  * Fix locking bug in removeOrgRepo (#1842)
-  * Fix status table race condition (#1835)
-  * Fix PR template error (#1834)
-  * Fix pull request compare link (#1832)
-  * Use ghost users in issues/PRs (#1831)
-  * Commitless repos should be bare (#1829)
-  * Update code.gitea.io/git (#1824)
-  * Fix invalid reference in feeds template (#1820)
-  * fix bug to deny to add orgnization as a member of an orgnization or team (#1815)
-  * xxx_active_code_live setting in printed in hours and minutes instead … (#1814)
-  * Fix deadlock in updateRepository (#1813)
-  * Give all units to owner team (#1812)
-  * Fix 500 for GET /teams/:id endpoints (#1811)
-  * fix bug not to trim space of login username (#1796)
-  * Fix renaming bug (#1786)
-  * Fix activity feed (#1779)
-  * Make navbar scroll on overflow (#1777)
-  * Delete repo redirects on repo deletion (#1776)
-  * Fix unloaded owner bug (#1770)
-  * Admin should always be allowed to create repositories even if hit limit (#1765)
-  * Update HighlightJS and fix YAML files highlighting (#1764)
-  * fix: #1757 fix set MAX_CREATION_LIMIT as zero. (#1762)
-  * fix admin lost permission caused by #947 (#1753)
-  * More fixes for dashboard search (#1750)
-  * fixes wrong after field in webhook payload (#1746)
-  * fix avatar update bug (#1729)
-  * Fix FOUC on Firefox (#1728)
-  * Fix changes introduce by update of go-swagger. (#1727)
-  * Fix #1719 (#1722)
-  * Correct flash after sending password reset email (#1718)
-  * Fix and test for delete user (#1713)
-  * Fix rendering of issue checkboxes (#1709)
-  * Enforce netgo build tag while cross-compilation (#1690)
-  * fix bug when push a branch name with / & fix an integration test bug (#1689)
-  * fix potential sqlite lock (#1680)
-  * Fix commit sha1 URL rendering in markdown (#1677)
-  * Fix static files permission under public/ (#1675)
-  * fix: tag contain character ) will http 500 on release page (#1670)
-  * Fix CSS for code in wiki markdown (#1660)
-  * fix multiple readme file rendering and fix #1657 (#1658)
-  * Add primary key and index to external login user table (#1656)
-  * fix #1643 and improve integration test (#1645)
-  * Fix version in Makefile (#1636)
-  * Handle display of GPG key without end date (#1628)
-  * fix bug on issue view when not login (#1624)
-  * bug fixed for API to get user's repos (#1622)
-  * fix lost text color on button on set as primary email (#1621)
-  * Add create_at and updated_at in PR json (#1616)
-  * update git and fix #1133 (#1614)
-  * fix bug on status API (#1533)
-  * Do not show empty collaborators segment (#1531)
-  * Fix markdown rendering (#1530)
-  * fix go get sub package and add domain on installation to let go get work defaultly (#1518)
-  * fix #1501 ssh hangs caused by #1461 (#1513)
-  * Fix empty file download (#1506)
-  * Fix broken v27 migration - change mirror interval from int to bigint (#1504)
-  * Do not allow committing to protected branch from online editor (#1502)
-  * Add internal routes for ssh hook comands (#1471)
-  * Fix races within code.gitea.io/git.(*Command).RunInDirTimeoutPipeline (#1465)
-  * Simple quick fix for #1418 (#1456)
-  * fix gpg API panic when no verification (#1451)
-  * fix migrate failed and org dashboard failed on MSSQL database (#1448)
-  * Optimize and fix autolink function (#1442) (#1444)
-  * Fix and simplify repo branches (settings) UI (#1435)
-  * Fix disabled fields in repo settings UI (#1431)
-  * fixes pull request hanging when it contains normal and LFS files (#1425)
-  * Fix races in the log module by using syncmap (#1421)
-  * Add length check for the return string (#1420)
-  * Fix "Error: No issue number specified"  when pushing (#1393)
-  * Corrected Mirror.NextUpdate not set (#1388)
-  * fix: remove `str2html` from org full name (#1360)
-  * Correct broken unaligned load/store in armv5 (#1355)
-  * Remove href on first/last link when on first/last page (#1345)
-  * Fix broken table layout (#1344)
-  * LFS: Fix SSH authentication for trailing arguments (#1328)
-  * Remove empty file (#1326)
-  * Fix delete user failed on sqlite (#1321)
-  * Fix inconsistency in layout (#1316)
-  * Fix gpg wrong column types (#1303)
-  * Fix wiki bugs (#1294)
-  * Fix missing less sources for oauth (#1288)
-  * Make sure both scripts/ can live side by side (#1264)
-  * Fix nil-dereference bug (#1258)
-  * rewrite pre-commit, post-commit and options hooks (fixes #1250) (#1257)
-  * Commit search appearance fixes (#1254)
-  * Fix forget migration for wiki hooks (#1227)
-  * Fix repo settings external tracker failed and check external urls (#1215)
-  * Fix 500 caused by branches settings introduced by #1198 (#1214)
-  * fix #1189, commit messages containing a pipe (#1203)
-  * Bug fixed for delete repo failed (#1193)
-  * Fix migration failed when authorized_keys is not exist (#1180)
-  * Fix ini format incomiptable with crowdin (#1177)
-* TESTING
-  * Integration tests for issues API (#2059)
-  * Add integration tests for signin (#2363)
-  * Add INTERNAL_TOKEN to integration .ini file (#2346)
-  * Add public links check (#2323)
-  * Fix hooks for integration repo (#2216)
-  * More integration tests for comment API (#2156)
-  * Cache session cookies in tests (#2128)
-  * Less verbose integration tests (#2123)
-  * Fix improper setup for integration tests (#2050)
-  * Improve integration test helper functions (#2049)
-  * Add integration test for issue creating (#2002)
-  * Use testing/benchmark interface (#1993)
-  * Add integration test for repository migration (#1983)
-  * Consolidate boilerplate in integration tests (#1979)
-  * Set console to debug for integration tests (#1976)
-  * Add pull-create integration test (#1972)
-  * Coverage reports for integration tests (#1960)
-  * Add integration test for pull-request merge (#1912)
-  * Add integration test for file editing (#1907)
-  * Add integration test for repository forking (#1896)
-  * Run unused test (#1875)
-  * Don't recreate database in integration tests (#1697)
-  * remove sqlite tag when integration test with mysql/postgres and recreate database when init integration test (#1693)
-  * MySQL, Postgres integration tests in drone (#1638)
-  * improve integration test to resue models/fixtures and store git repos with tests (#1627)
-  * Improve govendor testing (#1623)
-  * Integration test framework (#1290)
-  * Unit tests for issue_list (#1209)
-  * Add integration test for signup (#1135)
-* TRANSLATION
-  * update translation from crowdin (#2368) (#2380)
-  * Small fixes (#2144)
-  * Missing signed commit display translations (#2134)
-  * Sync latest translations from crowdin (#2104)
-  * Add make command update-translations for update translations from crodwin (#2097)
-  * Fix some mistakes (#1833)
-  * Improve clarity between is_activated and prohibit_login (#1788)
-  * Improve grammar (#1775)
-  * Fix bad grammar and wordiness (#1741)
-  * Make strings translatable (#1188) (#1198)
-* BUILD
-  * Dockerfile for aarch64 (#1128) (#1130)
-  * backport from v1.2 branch: add secrets for github release (#2588) (#2598)
-  * Add secrets for github release to fix drone failed (#2588)
-  * Backport changes for latest drone (#2586)
-  * Removing .drone.yml.sig (#2579)
-  * Fix drone for tags (#2573) (#2576)
-  * Backport: Remove go version check for make fmt (#2558) (#2561)
-  * Backport: Fix lint, fmt and integration testing errors (#2553)
-  * update latest xorm version to vendor (#2353)
-  * Remove integration test executables on `make clean` (#2340)
-  * refactor(Makefile): allow overriding default go program (#2310)
-  * Revert to upstream ini dependency (#2304)
-  * Use /dev/urandom to create random password (#2298)
-  * update drone sig file. (#2262)
-  * go get github.com/wadey/gocovmerge when needed (#2235)
-  * fix typo (#2145)
-  * Revert "Reduce number of layer" (#2086)
-  * Reduce number of layer (#2078)
-  * Skip sqlite integration in CI (#2058)
-  * fix golint error and rename func for suggestion. (#1997)
-  * fix misspell (#1996)
-  * update drone sig file (#1981)
-  * send notification if status changed (#1973)
-  * switch gitter to discord for drone. (#1971)
-  * Fix missing backslash in Dockerfile.rpi (#1952)
-  * Don't run 'make release' on PRs (#1908)
-  * Update code.gitea.io/git (#1892)
-  * Use production version of vuejs (#1869)
-  * Add a variable for docker tag (#1825)
-  * resign drone and fix #1816 (#1819)
-  * Separate generate swagger + fix sed os specific (#1791)
-  * Only run coverage on merges/pushes to master (#1783)
-  * Remove stale rule from Makefile (#1782)
-  * feat: upgrade drone docker image to support multi-stage build. (#1732)
-  * Really don't cache apk index (#1694)
-  * Limit clone depth when drone-building (#1644)
-  * Refactor Dockerfile (#1632)
-  * Check if missing/modified/unused deps in vendor and fix errors (#1468)
-  * Add GOFLAGS and EXTRA_GOFLAGS (#1438)
-  * Include formatting check to the `make test` (and thus also `check`) rule (#1366)
-* DOCS
-  * fix wrong changelog title (#2395)
-  * fix webhook link (#2289)
-  * Improve swagger doc (#2274)
-  * Add link to forum in issue template (#2070)
-  * add missing lfs config on example file (#2039)
-  * Add discourse link (#2027)
-  * Fix wording (#2024)
-  * Fix typo (#1974)
-  * Swagger docs for list/create forks (#1941)
-  * Update links to Discord server (#1940)
-  * [ci skip] update discord badge. (#1930)
-  * Change join chat from gitter to discord (#1929)
-  * Update changelog with v1.1.1 (#1926)
-  * Correct grammar in APIEmpty documentation (#1748)
-  * Add swagger comment for MirrorSync (#1747)
-  * Add "Table of Contents" in CONTRIBUTING.md (#1634)
-  * Fix service description in Debian init file (#1538)
-  * Use MAINTAINERS file in repository in CONTRIBUTING (#1489)
-  * Generate swagger json (#1402)
-  * Changed text when password reset disabled. (#1364)
-  * Removed email copyright year (#1348)
-  * Specify that time interval units are seconds (#1311)
-  * Gitea OpenID-2.0 login has been tested with livejournal.com too (#1306)
-  * Make wording of commit search more clear (#1291)
-  * Add notice that LFS mirroring is not supported (#1251)
-  * Fix typos in models/ and modules/ (#1248)
-  * Refactor and fix incorrect comment (#1247)
-  * Fix migration comment (#1241)
-  * Update locale_en-US.ini (#1235)
-  * Add LibreJS support (#1201)
-  * rename OSX to macOS (#1176)
-  * add mssql to app.ini db config comment (#1172)
-  * Add MSSQL to issues template (#1171)
-* MISC
-  * Add badge and link to the Matrix room (#2348)
-  * ignore coverage steps. (#2257)
-  * Use sqlite3 database as default for Docker image (#2182)
-  * update drone discord plugin to 0.0.4 version (#1992)
-  * fix typo (#1990)
-  * Move 3rd party js/css into `public/vendor` and document sources (#2383)
-  * Prevent conflicting TOTP accounts by adding AppURL to issuer parameter (#2335)
-  * Fix variable name typo (#2327)
-  * Make use of Vue more universal (#2318)
-  * Remove (almost) server side data rendering from repo-search component (#2317)
-  * Add OpenID configuration in install page (#2276)
-  * More tweaks to repo top panel (#2267)
-  * File path tweaks in UI (#2264)
-  * Make SHOW_USER_EMAIL also apply to profiles (#2258)
-  * EnableUnit() -> UnitEnabled() (#2242)
-  * Prevent selection of diff line numbers (#2240)
-  * Remove unused variable on makefile (#2225)
-  * No error log entries for repo 404 (#2200)
-  * Refactor vue delimeters to use es6 template delimeters (#2171)
-  * Replace tmp with TMPDIR. (#2152)
-  * Remove unused files (#2124)
-  * Improve org error handling (#2117)
-  * Absolute path for setting.CustomConf (#2085)
-  * remove deprecated code for Gogs compatible (#2041)
-  * Refactor session close as xorm already does everything needed internally  (#2020)
-  * SQLite has a query timeout. Hopefully fixes most 'database locked' errors (#1961)
-  * Use monospace font in githook editor (#1958)
-  * Fix import order (#1951)
-  * Gracefully handle bare repositories on API operations. (#1932)
-  * Fix errors caused by force push (#1927)
-  * Display URLs in integration test logs (#1924)
-  * Set TMPDIR environment variable for dump command (#1915)
-  * Cache ctx.User in retrieveFeeds (#1902)
-  * Make `LocalCopyPath` a setting instead of a hard-coded path (#1881)
-  * Add check misspelling (#1877)
-  * Fix misspelled variables (#1874)
-  * Gofmt (#1868, #1710, #1662)
-  * Rename misnamed migration (#1867)
-  * Support CRLF when splitting code lines for display (#1862)
-  * Add convert less css file step. (#1861)
-  * Prevent accidental selection of line numbers in code view (#1860)
-  * Delete Public SSH Key tmp file after calculating fingerprint (#1855)
-  * Remove annoying difference in button heights. (#1853)
-  * Only run test coverage on master branch. (#1838)
-  * Error from mktemp command in MacOS. (#1837)
-  * Use writeTmpKeyFile in calcFingerprint (#1828)
-  * ROOT_URL setting use the default as shown in conf/app.ini (#1823)
-  * Rename RepoCreationNum -> MaxCreationLimit (#1766)
-  * Add button to admin ui (#1738)
-  * Correct spelling mistakes (#1703)
-  * Make openid support default false for compatible with v1.1 (#1650)
-  * Send mails as HTML as default. Setting for send as plain text. (#1648)
-  * fix potential lock when sqlite (#1647)
-  * Optimize png images via Google zopflipng [ci skip] (#1639)
-  * Upgrade alpine to v3.5 in Dockerfile (#1633)
-  * remove unused vendor packages (#1620)
-  * markup: microoptimise for many short filenames in directory (#1534)
-  * support health check via / and fix #969 (#1520)
-  * Remove env user salt since no need to use (#1515)
-  * Drop db operations from hook commands (#1514)
-  * Better URL validation (#1507)
-  * Migrate WatchInfo struct to api (#1492)
-  * refactor: show command help message. (#1486)
-  * refactor update ssh key use time (#1466)
-  * Set VERSION from git once, in a variable (#1447)
-  * Remove unused mutex field (#1440)
-  * Simplify settings pages with item list (#1389)
-  * Clean-up PostgreSQL Tests (#1361)
-  * refactor: remove workaround after the golang 1.7 release. (#1349)
-  * Delete the useless code (#1335)
-  * Run "make fmt" with go-1.6 (#1333)
-  * Refactor admin/auth/new.tmpl (#1277)
-  * Refactor repo/issue/view_content.tmpl (#1276)
-  * Cleaner ui for admin, repo settings, and user settings page (#1269) (#1270)
-  * Cleaner UI for explore page (#1253) (#1255)
-  * Synced licenses with github repo (#1246)
-  * Synced gitignores with github repo (#1245)
-  * Simplify RepositoryList.loadAttributes() (#1211)
-  * Move user_follow to separate file (#1210)
-  * Reduce conditionals in signin/signup inner forms (#1138)
-
-## [1.1.4](https://github.com/go-gitea/gitea/releases/tag/v1.1.4) - 2017-09-04
-
-* BUGFIXES
-  * Fix rendering of external links (#2292) (#2315)
-  * Fix deleted milestone bug (#1942) (#2300)
-  * fix 500 error when view an issue which's milestone deleted (#2297) (#2299)
-  * Fix SHA1 hash linking (#2143) (#2293)
-  * back port from #1709 (#2291)
-
-## [1.1.3](https://github.com/go-gitea/gitea/releases/tag/v1.1.3) - 2017-08-03
-
-* BUGFIXES
-  * Fix PR template error (#2008)
-  * Fix markdown rendering (fix #1530) (#2043)
-  * Fix missing less sources for oauth (backport #1288) (#2135)
-  * Don't ignore gravatar error (#2138)
-  * Fix diff of renamed and modified file (#2136)
-  * Fix fast-forward PR bug (#2137)
-  * Fix some security bugs
-
-## [1.1.2](https://github.com/go-gitea/gitea/releases/tag/v1.1.2) - 2017-06-13
-
-* BUGFIXES
-  * Enforce netgo build tag while cross-compilation (Backport of #1690) (#1731)
-  * fix update avatar
-  * fix delete user failed on sqlite (#1321)
-  * fix bug not to trim space of login username (#1806)
-  * Backport bugfixes #1220 and #1393 to v1.1 (#1758)
-
-## [1.1.1](https://github.com/go-gitea/gitea/releases/tag/v1.1.1) - 2017-05-04
-
-* BUGFIXES
-  * Markdown Sanitation Fix [#1646](https://github.com/go-gitea/gitea/pull/1646)
-  * Fix broken hooks [#1376](https://github.com/go-gitea/gitea/pull/1376)
-  * Fix migration issue [#1375](https://github.com/go-gitea/gitea/pull/1375)
-  * Fix Wiki Issues [#1338](https://github.com/go-gitea/gitea/pull/1338)
-  * Forgotten migration for wiki githooks [#1237](https://github.com/go-gitea/gitea/pull/1237)
-  * Commit messages can contain pipes [#1218](https://github.com/go-gitea/gitea/pull/1218)
-  * Verify external tracker URLs [#1236](https://github.com/go-gitea/gitea/pull/1236)
-  * Allow upgrade after downgrade [#1197](https://github.com/go-gitea/gitea/pull/1197)
-  * 500 on delete repo with issue [#1195](https://github.com/go-gitea/gitea/pull/1195)
-  * INI compat with CrowdIn [#1192](https://github.com/go-gitea/gitea/pull/1192)
-
-## [1.1.0](https://github.com/go-gitea/gitea/releases/tag/v1.1.0) - 2017-03-09
-
-* BREAKING
-  * The SSH keys can potentially break, make sure to regenerate the authorized keys
-* FEATURES
-  * Git LFSv2 support [#122](https://github.com/go-gitea/gitea/pull/122)
-  * API endpoints for repo watching [#191](https://github.com/go-gitea/gitea/pull/191)
-  * Search within private repos [#222](https://github.com/go-gitea/gitea/pull/222)
-  * Hide user email address on explore page [#336](https://github.com/go-gitea/gitea/pull/336)
-  * Protected branch system [#339](https://github.com/go-gitea/gitea/pull/339)
-  * Sendmail for mail delivery [#355](https://github.com/go-gitea/gitea/pull/355)
-  * API endpoints for org webhooks [#372](https://github.com/go-gitea/gitea/pull/372)
-  * Enabled MSSQL support [#383](https://github.com/go-gitea/gitea/pull/383)
-  * API endpoints for org teams [#370](https://github.com/go-gitea/gitea/pull/370)
-  * API endpoints for collaborators [#375](https://github.com/go-gitea/gitea/pull/375)
-  * Graceful server restart [#416](https://github.com/go-gitea/gitea/pull/416)
-  * Commitgraph / timeline on commits page [#428](https://github.com/go-gitea/gitea/pull/428)
-  * API endpoints for repo forks [#509](https://github.com/go-gitea/gitea/pull/509)
-  * API endpoints for releases [#510](https://github.com/go-gitea/gitea/pull/510)
-  * Folder jumping [#511](https://github.com/go-gitea/gitea/pull/511)
-  * Stars tab on profile page [#519](https://github.com/go-gitea/gitea/pull/519)
-  * Notification system [#523](https://github.com/go-gitea/gitea/pull/523)
-  * Push and pull through reverse proxy basic auth [#524](https://github.com/go-gitea/gitea/pull/524)
-  * Search for issues and pull requests [#530](https://github.com/go-gitea/gitea/pull/530)
-  * API endpoint for stargazers [#597](https://github.com/go-gitea/gitea/pull/597)
-  * API endpoints for subscribers [#598](https://github.com/go-gitea/gitea/pull/598)
-  * PID file support [#610](https://github.com/go-gitea/gitea/pull/610)
-  * Two factor authentication (2FA) [#630](https://github.com/go-gitea/gitea/pull/630)
-  * API endpoints for org users [#645](https://github.com/go-gitea/gitea/pull/645)
-  * Release attachments [#673](https://github.com/go-gitea/gitea/pull/673)
-  * OAuth2 consumer [#679](https://github.com/go-gitea/gitea/pull/679)
-  * Add ability to fork your own repos [#761](https://github.com/go-gitea/gitea/pull/761)
-  * Search repository on dashboard [#773](https://github.com/go-gitea/gitea/pull/773)
-  * Search bar on user profile [#787](https://github.com/go-gitea/gitea/pull/787)
-  * Track label changes on issue view [#788](https://github.com/go-gitea/gitea/pull/788)
-  * Allow using custom time format [#798](https://github.com/go-gitea/gitea/pull/798)
-  * Redirects for renamed repos [#807](https://github.com/go-gitea/gitea/pull/807)
-  * Track assignee changes on issue view [#808](https://github.com/go-gitea/gitea/pull/808)
-  * Track title changes on issue view [#841](https://github.com/go-gitea/gitea/pull/841)
-  * Archive cleanup action [#885](https://github.com/go-gitea/gitea/pull/885)
-  * Basic Open Graph support [#901](https://github.com/go-gitea/gitea/pull/901)
-  * Take back control of Git hooks [#1006](https://github.com/go-gitea/gitea/pull/1006)
-  * API endpoints for user repos [#1059](https://github.com/go-gitea/gitea/pull/1059)
-* BUGFIXES
-  * Fixed counting issues for issue filters [#413](https://github.com/go-gitea/gitea/pull/413)
-  * Added back default settings for SSH [#500](https://github.com/go-gitea/gitea/pull/500)
-  * Fixed repo permissions [#513](https://github.com/go-gitea/gitea/pull/513)
-  * Issues cannot be created with labels [#622](https://github.com/go-gitea/gitea/pull/622)
-  * Add a reserved wiki paths check to the wiki [#720](https://github.com/go-gitea/gitea/pull/720)
-  * Update website binding MaxSize to 255 [#722](https://github.com/go-gitea/gitea/pull/722)
-  * User can see the private activity on public history [#818](https://github.com/go-gitea/gitea/pull/818)
-  * Wrong pages number which includes private repositories [#844](https://github.com/go-gitea/gitea/pull/844)
-  * Trim whitespaces for search keyword [#893](https://github.com/go-gitea/gitea/pull/893)
-  * Don't rewrite non-gitea public keys [#906](https://github.com/go-gitea/gitea/pull/906)
-  * Use fingerprint to check instead content for public key [#911](https://github.com/go-gitea/gitea/pull/911)
-  * Fix random avatars [#1147](https://github.com/go-gitea/gitea/pull/1147)
-* ENHANCEMENTS
-  * Refactored process manager [#75](https://github.com/go-gitea/gitea/pull/75)
-  * Restrict rights to create new orgs [#193](https://github.com/go-gitea/gitea/pull/193)
-  * Added label and milestone sorting [#199](https://github.com/go-gitea/gitea/pull/199)
-  * Make minimum password length configurable [#223](https://github.com/go-gitea/gitea/pull/223)
-  * Speedup conflict checking on pull requests [#276](https://github.com/go-gitea/gitea/pull/276)
-  * Added button to delete merged pull request branches [#441](https://github.com/go-gitea/gitea/pull/441)
-  * Improved issue references within markdown [#471](https://github.com/go-gitea/gitea/pull/471)
-  * Dutch translation for the landingpage [#487](https://github.com/go-gitea/gitea/pull/487)
-  * Added Gogs migration script [#532](https://github.com/go-gitea/gitea/pull/532)
-  * Support a .gitea folder for issue templates [#582](https://github.com/go-gitea/gitea/pull/582)
-  * Enhanced diff-view coloring [#584](https://github.com/go-gitea/gitea/pull/584)
-  * Added ETag header to avatars [#721](https://github.com/go-gitea/gitea/pull/721)
-  * Added option to config to disable local path imports [#724](https://github.com/go-gitea/gitea/pull/724)
-  * Allow custom public files [#782](https://github.com/go-gitea/gitea/pull/782)
-  * Added pprof endpoint for debugging [#801](https://github.com/go-gitea/gitea/pull/801)
-  * Added `X-GitHub-*` headers [#809](https://github.com/go-gitea/gitea/pull/809)
-  * Fill SSH key title automatically [#863](https://github.com/go-gitea/gitea/pull/863)
-  * Display Git version on admin panel [#921](https://github.com/go-gitea/gitea/pull/921)
-  * Expose URL field on issue API [#982](https://github.com/go-gitea/gitea/pull/982)
-  * Statically compile the binaries [#985](https://github.com/go-gitea/gitea/pull/985)
-  * Embed build tags into version string [#1051](https://github.com/go-gitea/gitea/pull/1051)
-  * Gitignore support for FSharp and Clojure [#1072](https://github.com/go-gitea/gitea/pull/1072)
-  * Custom templates for static builds [#1087](https://github.com/go-gitea/gitea/pull/1087)
-  * Add ProxyFromEnvironment if none set [#1096](https://github.com/go-gitea/gitea/pull/1096)
-* MISC
-  * Replaced remaining Gogs references
-  * Added more tests on various packages
-  * Use Crowdin for translations again
-  * Resolved some XSS attack vectors
-  * Optimized and reduced number of database queries
-
-## [1.0.2](https://github.com/go-gitea/gitea/releases/tag/v1.0.2) - 2017-02-21
-
-* BUGFIXES
-  * Fixed issue counter [#882](https://github.com/go-gitea/gitea/pull/882)
-  * Fixed XSS vulnerability on wiki page [#955](https://github.com/go-gitea/gitea/pull/955)
-  * Add data dir without session to dump [#587](https://github.com/go-gitea/gitea/pull/587)
-  * Fixed wiki page renaming [#958](https://github.com/go-gitea/gitea/pull/958)
-  * Drop default console logger if not required [#960](https://github.com/go-gitea/gitea/pull/960)
-  * Fixed docker docs link on install page [#972](https://github.com/go-gitea/gitea/pull/972)
-  * Handle SetModel errors [#957](https://github.com/go-gitea/gitea/pull/957)
-  * Fixed XSS vulnerability on milestones [#977](https://github.com/go-gitea/gitea/pull/977)
-  * Fixed XSS vulnerability on alerts [#981](https://github.com/go-gitea/gitea/pull/981)
-
-## [1.0.1](https://github.com/go-gitea/gitea/releases/tag/v1.0.1) - 2017-01-05
-
-* BUGFIXES
-  * Fixed localized `MIN_PASSWORD_LENGTH` [#501](https://github.com/go-gitea/gitea/pull/501)
-  * Fixed 500 error on organization delete [#507](https://github.com/go-gitea/gitea/pull/507)
-  * Ignore empty wiki repo on migrate [#544](https://github.com/go-gitea/gitea/pull/544)
-  * Proper check access for forking [#563](https://github.com/go-gitea/gitea/pull/563)
-  * Fix SSH domain on installer [#506](https://github.com/go-gitea/gitea/pull/506)
-  * Fix missing data rows on admin UI [#580](https://github.com/go-gitea/gitea/pull/580)
-  * Do not delete tags with releases by default [#579](https://github.com/go-gitea/gitea/pull/579)
-  * Fix missing session config data on admin UI [#578](https://github.com/go-gitea/gitea/pull/578)
-  * Properly show the version within footer on the UI [#593](https://github.com/go-gitea/gitea/pull/593)
-
-## [1.0.0](https://github.com/go-gitea/gitea/releases/tag/v1.0.0) - 2016-12-23
-
-* BREAKING
-  * We have various changes on the API, scripting against API must be updated
-* FEATURES
-  * Show last login for admins [#121](https://github.com/go-gitea/gitea/pull/121)
-* BUGFIXES
-  * Fixed sender of notifications [#2](https://github.com/go-gitea/gitea/pull/2)
-  * Fixed keyword hijacking vulnerability [#20](https://github.com/go-gitea/gitea/pull/20)
-  * Fixed non-markdown readme rendering [#95](https://github.com/go-gitea/gitea/pull/95)
-  * Allow updating draft releases [#169](https://github.com/go-gitea/gitea/pull/169)
-  * GitHub API compliance [#227](https://github.com/go-gitea/gitea/pull/227)
-  * Added commit SHA to tag webhook [#286](https://github.com/go-gitea/gitea/issues/286)
-  * Secured links via noopener [#315](https://github.com/go-gitea/gitea/issues/315)
-  * Replace tabs with spaces on wiki title [#371](https://github.com/go-gitea/gitea/pull/371)
-  * Fixed vulnerability on labels and releases [#409](https://github.com/go-gitea/gitea/pull/409)
-  * Fixed issue comment API [#449](https://github.com/go-gitea/gitea/pull/449)
-* ENHANCEMENTS
-  * Use proper import path for libravatar [#3](https://github.com/go-gitea/gitea/pull/3)
-  * Integrated DroneCI for tests and builds [#24](https://github.com/go-gitea/gitea/issues/24)
-  * Integrated dependency manager [#29](https://github.com/go-gitea/gitea/issues/29)
-  * Embedded bindata optionally [#30](https://github.com/go-gitea/gitea/issues/30)
-  * Integrated pagination for releases [#73](https://github.com/go-gitea/gitea/pull/73)
-  * Autogenerate version on every build [#91](https://github.com/go-gitea/gitea/issues/91)
-  * Refactored Docker container [#104](https://github.com/go-gitea/gitea/issues/104)
-  * Added short-hash support for downloads [#211](https://github.com/go-gitea/gitea/issues/211)
-  * Display tooltip for downloads [#221](https://github.com/go-gitea/gitea/issues/221)
-  * Improved HTTP headers for issue attachments [#270](https://github.com/go-gitea/gitea/pull/270)
-  * Integrate public as bindata optionally [#293](https://github.com/go-gitea/gitea/pull/293)
-  * Integrate templates as bindata optionally [#314](https://github.com/go-gitea/gitea/pull/314)
-  * Inject more ENV variables into custom hooks [#316](https://github.com/go-gitea/gitea/issues/316)
-  * Correct LDAP login validation [#342](https://github.com/go-gitea/gitea/pull/342)
-  * Integrate conf as bindata optionally [#354](https://github.com/go-gitea/gitea/pull/354)
-  * Serve video files in browser [#418](https://github.com/go-gitea/gitea/pull/418)
-  * Configurable SSH host binding [#431](https://github.com/go-gitea/gitea/issues/431)
-* MISC
-  * Forked from Gogs and renamed to Gitea
-  * Catching more errors with logs
-  * Fixed all linting errors
-  * Made the go linter entirely happy
-  * Really integrated vendoring
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b72ac4849a..718285ae09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,1386 +1,14 @@
 # Changelog
 
-This changelog goes through the changes that have been made in each release
+This changelog goes through all the changes that have been made in each release
 without substantial changes to our git log; to see the highlights of what has
 been added to each release, please refer to the [blog](https://blog.gitea.com).
 
-## [1.24.0](https://github.com/go-gitea/gitea/releases/tag/1.24.0) - 2025-05-26
-
-* BREAKING
-  * Make Gitea always use its internal config, ignore `/etc/gitconfig` (#33076)
-  * Improve log format (#33814)
-  * Fix markdown render behaviors (#34122)
-  * Add package version api endpoints (#34173)
-
-* FEATURES
-  * Enforce two-factor auth (2FA: TOTP or WebAuthn) (#34187)
-  * Add fullscreen mode as a more efficient operation way to view projects (#34081)
-  * Add anonymous access support for private/unlisted repositories (#34051)
-  * Support public code/issue access for private repositories (#33127)
-  * Add middleware for request prioritization (#33951)
-  * Add cli flags LDAP group configuration (#33933)
-  * Add file tree to file view page (#32721)
-  * Add material icons for file list (#33837)
-  * Artifacts download api for artifact actions v4 (#33510)
-  * Support choose email when creating a commit via web UI (#33432)
-  * Add basic auth support to rss/atom feeds (#33371)
-  * Add sorting by exclusive labels (issue priority) (#33206)
-  * Add sub issue list support (#32940)
-  * Private README.md for organization (#32872)
-  * Email option to embed images as base64 instead of link (#32061)
-  * Option to delay conflict checking of old pull requests until page view (#27779)
-  * Worktime tracking for the organization level (#19808)
-
-* PERFORMANCE
-  * Add cache for common package queries (#22491)
-  * Move issue pin to an standalone table for querying performance (#33452)
-  * Improve commits list performance to reduce unnecessary database queries (#33528)
-  * Optimize total count of feed when loading activities in user dashboard. (#33841)
-  * Optimize heatmap query (#33853)
-  * Only use prev and next buttons for pagination on user dashboard (#33981)
-  * Improve pull request list API performance (#34052)
-  * Cache GPG keys, emails and users when list commits (#34086)
-  * Refactor Git Attribute & performance optimization (#34154)
-  * Performance optimization for tags synchronization (#34355) #34522
-
-* ENHANCEMENTS
-  * Code
-    * Display when a release attachment was uploaded (#34261)
-    * Support creating relative link to raw path in markdown (#34105)
-    * Improve code block readability and isolate copy button (#34009)
-    * Improve repository commit view (#33877)
-    * Full-file syntax highlighting for diff pages (#33766)
-    * Clone repository with Tea CLI (#33725)
-    * Improve sync fork behavior (#33319)
-    * Make git clone URL could use current signed-in user (#33091)
-    * Add submodule diff links (#33097)
-    * Link to tree views of submodules if possible (#33424)
-    * Only keep popular licenses (#33832)
-    * De-emphasize signed commits (#31160)
-
-  * Actions
-    * Add flat-square action badge style (#34062)
-    * Update action status badge layout (#34018)
-    * Download actions job logs from API (#33858)
-    * Always show the "rerun" button for action jobs (#33692)
-    * Add auto-expanding running actions step (#30058)
-    * Update status check for all supported on.pull_request.types in Gitea (#33117)
-    * Workflow_dispatch use workflow from trigger branch (#33098)
-    * Add action auto-scroll (#30057)
-    * Add workflow_job webhook (#33694)
-    * Add a button editing action secret (#34462)
-
-  * Pull Request
-    * Auto expand "New PR" form (#33971)
-    * Mark parent directory as viewed when all files are viewed (#33958)
-    * Show info about maintainers are allowed to edit a PR (#33738)
-    * Automerge supports deleting branch automatically after merging (#32343)
-    * Add additional command hints for PowerShell & CMD (#33548)
-
-  * Issues
-    * Allow filtering issues by any assignee (#33343)
-    * Show warning on navigation if currently editing comment or title (#32920)
-    * Make tracked time representation display as hours (#33315)
-    * Add No Results Prompt Message on Issue List Page (#33699)
-    * Add sort option recentclose for issues and pulls (#34525) #34539
-
-  * Packages
-    * Link to nuget dependencies (#26554)
-    * Add composor source field (#33502)
-
-  * Administration
-    * Improve navbar: add "admin" tip, add "active" style (#32927)
-    * Add a option "--user-type bot" to admin user create, improve role display (#27885)
-    * Improve admin user view page (#33735)
-    * Support performance trace (#32973)
-    * Change pprof labels to be prometheus compatible (#32865)
-    * Allow admins and org owners to change org member public status (#28294)
-    * Optimize the installation page (#32994)
-    * Make public URL generation configurable (#34250)
-    * Add a --fullname arg to gitea admin user create. (#34241)
-
-  * Others
-    * Improve oauth2 error handling (#33969)
-    * Fail mirroring more gracefully (#34002)
-    * Align User Details Page Header Layout with Design Specifications (#34192)
-    * Webhook add X-Gitea-Hook-Installation-Target-Type Header (#33752)
-    * Optimize the dashboard (#32990)
-    * Improve button layout on small screens (#33633)
-    * Add cropping support when modifying the user/org/repo avatar (#33498)
-    * Make ROOT_URL support using request Host header (#32564)
-    * Add `show more` organizations icon in user's profile (#32986)
-    * Introduce `--page-space-bottom` at 64px (#30692)
-    * Improve theme display (#30671)
-    * Add alphabetical project sorting (#33504)
-    * Add global lock for migrations to make upgrade more safe with multiple replications (#33706)
-    * Add descriptions for private repo public access settings and improve the UI (#34057)
-
-* API
-  * Actions Runner rest api (#33873)
-  * Inclusion of rename organization api (#33303)
-  * Add API to support link package to repository and unlink it (#33481)
-  * Add API endpoint to request contents of multiple files simultaniously (#34139)
-  * Actions artifacts API list/download check status upload confirmed (#34273)
-  * Add API routes to lock and unlock issues (#34165)
-  * Fix some user name usages (#33689)
-  * Allow filtering /repos/{owner}/{repo}/pulls by target base branch queryparam (#33684)
-  * Improve swagger generation (#33664)
-  * Support Ephemeral action runners (#33570)
-  * Support workflow event dispatch via API (#33545)
-  * Support workflow event dispatch via API (#32059)
-  * Added Description Field for Secrets and Variables  (#33526)
-  * Reject star-related requests if stars are disabled (#33208)
-  * Let API create and edit system webhooks, attempt 2 (#33180)
-  * Use `Project-URL` metadata field to get a PyPI package's homepage URL (#33089)
-  * Add `last_committer_date` and `last_author_date` for file contents API (#32921)
-
-* REFACTORS
-  * Remove context from git struct (#33793)
-  * Refactor admin/common.ts (#33788)
-  * Refactor repo-settings.ts (#33785)
-  * Refactor repo-issue.ts (#33784)
-  * Small refactor to reduce unnecessary database queries and remove duplicated functions (#33779)
-  * Refactor initRepoBranchTagSelector to use new init framework (#33776)
-  * Refactor buttons to use new init framework (#33774)
-  * Refactor markup and pdf-viewer to use new init framework (#33772)
-  * Refactor error system (#33771)
-  * Refactor mail code (#33768)
-  * Update TypeScript types (#33799)
-  * Refactor older tests to use testify (#33140)
-  * Move notifywatch to service layer (#33825)
-  * Decouple context from repository related structs (#33823)
-  * Remove context from mail struct (#33811)
-  * Refactor dropdown ellipsis (#34123)
-  * Refactor functions to reduce repopath expose (#33892)
-  * Refactor repo-diff.ts (#33746)
-  * Refactor web route handler (#33488)
-  * Refactor user & avatar (#33433)
-  * Refactor user package (#33423)
-  * Refactor decouple context from migration structs (#33399)
-  * Refactor context flash msg and global variables (#33375)
-  * Refactor response writer & access logger (#33323)
-  * Refactor ref type (#33242)
-  * Refactor context repository (#33202)
-  * Refactor legacy JS (#33115)
-  * Refactor legacy line-number and scroll code (#33094)
-  * Refactor env var related code (#33075)
-  * Move SetMerged to service layer (#33045)
-  * Merge updatecommentattachment functions (#33044)
-  * Refactor pull-request compare&create page (#33071)
-  * Refactor repo-new.ts (#33070)
-  * Refactor pagination (#33037)
-  * Refactor tests (#33021)
-  * Refactor markup render to fix various path problems (#34114)
-  * Refactor Branch struct in package modules/git (#33980)
-  * Don't create duplicated functions for code repositories and wiki repositories (#33924)
-  * Move git references checking to gitrepo packages to reduce expose of repository path (#33891)
-  * Refactor cache-control (#33861)
-  * Decouple diff stats query from actual diffing (#33810)
-  * Move part of updating protected branch logic to service layer (#33742)
-  * Decouple Batch from git.Repository to simplify usage without requiring the creation of a Repository struct. (#34001)
-  * Refactor tmpl and blob_excerpt (#32967)
-  * Refactor template & test related code (#32938)
-  * Refactor db package and remove unnecessary `DumpTables` (#32930)
-  * Refactor pprof labels and process desc (#32909)
-  * Refactor repo-projects.ts (#32892)
-  * Refactor getpatch/getdiff functions and remove unnecessary fallback (#32817)
-  * Uniform all temporary directories and allow customizing temp path (#32352)
-  * Remove context from retry downloader (#33871)
-  * Refactor global init code and add more comments (#33755)
-  * Remove some unnecessary template helpers (#33069)
-  * Move and rename UpdateRepository (#34136)
-  * Move hooks function to gitrepo and reduce expose repopath (#33890)
-  * Add abstraction layer to delete repository from disk (#33879)
-  * Add abstraction layer to check if the repository exists on disk (#33874)
-  * Move ParseCommitWithSSHSignature to service layer (#34087)
-  * Move duplicated functions (#33977)
-  * Extract code to their own functions for push update (#33944)
-  * Move gitgraph from modules to services layer (#33527)
-  * Move commits signature and verify functions to service layers (#33605)
-  * Use `CloseIssue` and `ReopenIssue` instead of `ChangeStatus` (#32467)
-  * Refactor arch route handlers (#32993)
-  * Refactor "string truncate" (#32984)
-  * Refactor arch route handlers (#32972)
-  * Clarify path param naming (#32969)
-  * Refactor request context (#32956)
-  * Move some errors to their own sub packages (#32880)
-  * Move RepoTransfer from models to models/repo sub package (#32506)
-  * Move delete deploy keys into service layer (#32201)
-  * Refactor webhook events (#33337)
-  * Move some Actions related functions from `routers` to `services` (#33280)
-  * Refactor RefName (#33234)
-  * Refactor context RefName and RepoAssignment (#33226)
-  * Refactor repository transfer (#33211)
-  * Refactor error system (#33626)
-  * Refactor error system (#33610)
-  * Refactor package (routes and error handling, npm peer dependency) (#33111)
-  * Use test context in tests and new loop system in benchmarks (#33648)
-  * Some small refactors (#33144)
-  * Simplify context ref name (#33267)
-
-* BUGFIXES
-  * Fix some dropdown problems on the issue sidebar (#34308) #34327
-  * Do not return archive download URLs in API if downloads are disabled (#34324) #34338
-  * Fix LFS files being editable in web UI (#34356) #34362
-  * Fix only text/* being viewable in web UI (#34374) #34378
-  * Fix LFS file not stored in LFS when uploaded/edited via API or web UI (#34367)
-  * Grey out expired artifact on Artifacts list (#34314) #34404
-  * Fix incorrect divergence cache after switching default branch (#34370) #34406
-  * Refactor commit message rendering and fix bugs (#34412) #34414
-  * Merge and tweak markup editor expander CSS (#34409) #34415
-  * Fix GetUsersByEmails (#34423) #34425
-  * Only git operations should update last changed of a repository (#34388) #34427
-  * Fix comment textarea scroll issue in Firefox (#34438) #34446
-  * Fix repo broken check (#34444) #34452
-  * Fix remove org user failure on mssql (#34449) #34453
-  * Fix Workflow run Not Found page (#34459) #34466
-  * When updating comment, if the content is the same, just return and not update the database (#34422) #34464
-  * Fix project board view (#34470) #34475
-  * Fix get / delete runner to use consistent http 404 and 500 status (#34480) #34488
-  * Fix url validation in webhook add/edit API (#34492) #34496
-  * Fix edithook api can not update package, status and workflow_job events (#34495) #34499
-  * Fix ephemeral runner deletion (#34447) #34513
-  * Don't display error log when .git-blame-ignore-revs doesn't exist (#34457)
-  * Only allow admins to rename default/protected branches (#33276)
-  * Improve "lock conversation" UI (#34207)
-  * Fix incorrect file links (#34189)
-  * Optimize Overflow Menu (#34183)
-  * Check user/org repo limit instead of doer (#34147)
-  * Make markdown render match GitHub's behavior (#34129)
-  * Fix team permission (#34128)
-  * Correctly handle submodule view and avoid throwing 500 error (#34121)
-  * Fix users being able bypass limits with repo transfers (#34031)
-  * Avoid creating unnecessary temporary cat file sub process (#33942)
-  * Refactor organization menu (#33928)
-  * Fix various Fomantic UI and htmx problems (#33851)
-  * Fix 500 error when error occurred in migration page (#33256)
-  * Validate that the tag doesn't exist when creating a tag via the web (#33241)
-  * Add missed transaction on setmerged (#33079)
-  * Rework create/fork/adopt/generate repository to make sure resources will be cleanup once failed (#31035)
-  * Valid email address should only start with alphanumeric (#28174)
-  * Fix webhook url (#34186)
-  * Fix "toAbsoluteLocaleDate" test when system locale is not en-US (#33939)
-  * Fix file name could not be searched if the file was not a text file when using the Bleve indexer (#33959)
-  * Fix cannot delete runners via the modal dialog (#33895)
-  * Fix unpin hint on the pinned pull requests (#33207)
-  * Fix parentCommit invalid memory address or nil pointer dereference. (#33204)
-  * Fix comment header padding (#33377)
-  * Fix some migration and repo name problems (#33986)
-  * Fix various trivial frontend problems (#34263)
-  * Fix Set Email Preference dropdown and button placement (#34255)
-  * Fix quoted replies incorrectly render user input as part of the quote (#34216)
-  * Fix button alignments and remove unnecessary styles (#34206)
-  * Restore form inputs on organization create error (#34201)
-  * Try to fix ACME (3rd) (#33807)
-  * Fix incorrect ref "blob" (#33240)
-  * Fix dynamic content loading init problem (#33748)
-  * Fix git empty check and HEAD request (#33690)
-  * Fix Untranslated Text on Actions Page (#33635)
-  * Fix issue label delete incorrect labels webhook payload (#34575)
-  * Fix incorrect page navigation with up and down arrow on last item of dashboard repos (#34570)
-  * Fix/improve avatar sync from LDAP (#34573)
-  * Fix some trivial problems (#34579)
-  * Retain issue sort type when a keyword search is introduced (#34559)
-  * Always use an empty line to separate the commit message and trailer (#34512)
-  * Fix line-button issue after file selection in file tree (#34574)
-  * Fix doctor deleting orphaned issues attachments (#34142)
-  * Add webhook assigning test and fix possible bug (#34420)
-  * Fix possible nil description of pull request when migrating from CodeCommit (#34541)
-  * Refactor commit reader (#34542)
-  * Fix possible pull request broken when leave the page immediately after clicking the update button #34509
-  * Ignore "Close" error when uploading container blob (#34620)
-  * Fix missed merge commit sha and time when migrating from codecommit (#34645)
-  * Fix GetUsersByEmails (#34643)
-  * Misc CSS fixes (#34638)
-  * Add codecommit to supported services in api docs (#34626)
-  * Validate hex colors when creating/editing labels (#34623)
-  * Fix possible pull request broken when leave the page immediately after clicking the update button (#34509)
-  * Fix margin issue in markup paragraph rendering (#34599)
-  * Fix migration pull request title too long (#34577)
-  * Fix footnote jump behavior on the issue page. (#34621)
-  * Fix "oras" OCI client compatibility (#34666)
-  * Fix last admin check when syncing users (#34649)
-  * Fix skip paths check on tag push events in workflows (#34602) #34670
-
-* MISC
-
-  * Bump to alpine 3.22 (#34613)
-  * Make pull request and issue history more compact (#34588)
-  * Run integration tests against postgres 14 (#34514) #34536
-  * Enable addtional linters (#34085)
-  * Enable testifylint rules (#34075)
-  * Enable staticcheck QFxxxx rules (#34064)
-  * Improve Actions test (#32883)
-  * Drop fomantic build (#33845)
-  * Go1.24 (#33562)
-  * Run yamllint with strict mode, fix issue (#33551)
-  * Disable cron task to update license (#33486)
-  * Optimize makefile help information generation (#33390)
-  * Convert github.com/xanzy/go-gitlab into gitlab.com/gitlab-org/api/client-go (#33126)
-  * Add missed changelogs (#33649)
-  * Update .changelog file to add performance label group (#33472)
-  * Add missing POPULATE_SQUASH_COMMENT_WITH_COMMIT_MESSAGES in app.example.ini (#33363)
-  * Update README screenshots (#33347)
-  * Update unrs-resolver (#34279)
-  * Update go&js dependencies (#34262)
-  * Optimize the calling code of queryElems (#34235)
-  * Update protected_branch.tmpl (#34193)
-  * Feat/optimize span svg layout (#34185)
-  * Set MERMAID_MAX_SOURCE_CHARACTERS to 50000 (#34152)
-  * Update JS and PY deps (#34143)
-  * Add Chinese translations for README files (#34132)
-  * Use `overflow-wrap: anywhere` to replace `word-break: break-all` (#34126)
-  * Clarify ownership in password change error messages (#34092)
-  * Add toggleClass function in dom.ts (#34063)
-  * Update to golangci-lint v2 (#34054)
-  * Update Makefile test comments (#34013)
-  * Update go mod dependencies (#33988)
-  * Use filepath.Join instead of path.Join for file system file operations (#33978)
-  * Prepare common tmpl functions in a middleware (#33957)
-  * Remove unused or abused styles (#33918)
-  * Update JS and PY deps, misc tweaks (#33903)
-  * Try to figure out attribute checker problem (#33901)
-  * Add lock for a repository pull mirror (#33876)
-  * Fine tune push mirror UI (#33866)
-  * Improve issue & code search (#33860)
-  * Use pullrequestlist instead of []*pullrequest (#33765)
-  * Upgrade act to 0.261.4 and actions-proto-go to v0.4.1 (#33760)
-  * Align sidebar gears to the right (#33721)
-  * Update Go dependencies (skip blevesearch, meilisearch) (#33655)
-  * Add migrations and doctor fixes (#33556)
-  * Remove "class-name" from svg icon (#33540)
-  * Update MAINTAINERS (#33529)
-  * Add "No data available" display when list is empty (#33517)
-  * Use `git diff-tree` for `DiffFileTree` on diff pages (#33514)
-  * Give organisation members access to organisation feeds (#33508)
-  * Update feishu icon (#33470)
-  * Hide/disable unusable UI elements when a repository is archived (#33459)
-  * Update `@github/text-expander-element` to 2.9.0 (#33435)
-  * Do not access GitRepo when a repo is being created (#33380)
-  * Fix incorrect ref usages (#33301)
-  * Prepare for support performance trace (#33286)
-  * Enable Typescript `noImplicitThis` (#33250)
-  * Remove unused CSS styles and move some styles to proper files (#33217)
-  * Add .run to gitignore (#33175)
-  * Fix typo in gitea downloader test and add missing codebase in `ToGitServiceType` (#33146)
-  * Remove extended glob pattern from branch protection UI (#33125)
-  * Clean up legacy form CSS styles (#33081)
-  * Unset XDG_HOME_CONFIG as gitea manages configuration locations (#33067)
-  * Add IntelliJ Gateway's .uuid to gitignore (#33052)
-  * User facing messages for AGit errors (#33012)
-  * Always show assignees on right (#33006)
-  * Fix eslint (#33002)
-  * Update JS dependencies (#32914)
-  * Bump x/net (#32896) (#32900)
-  * Only activity tab needs heatmap data loading (#34652)
-
-## [1.23.8](https://github.com/go-gitea/gitea/releases/tag/1.23.8) - 2025-05-11
-
-* SECURITY
-  * Fix a bug when uploading file via lfs ssh command (#34408) (#34411)
-  * Update net package (#34228) (#34232)
-* BUGFIXES
-  * Fix releases sidebar navigation link (#34436) #34439
-  * Fix bug webhook milestone is not right. (#34419) #34429
-  * Fix two missed null value checks on the wiki page. (#34205) (#34215)
-  * Swift files can be passed either as file or as form value (#34068) (#34236)
-  * Fix bug when API get pull changed files for deleted head repository (#34333) (#34368)
-  * Upgrade github v61 -> v71 to fix migrating bug (#34389)
-  * Fix bug when visiting comparation page (#34334) (#34364)
-  * Fix wrong review requests when updating the pull request (#34286) (#34304)
-  * Fix github migration error when using multiple tokens (#34144) (#34302)
-  * Explicitly not update indexes when sync database schemas (#34281) (#34295)
-  * Fix panic when comment is nil (#34257) (#34277)
-  * Fix project board links to related Pull Requests (#34213) (#34222)
-  * Don't assume the default wiki branch is master in the wiki API (#34244) (#34245)
-* DOCUMENTATION
-  * Update token creation API swagger documentation (#34288) (#34296)
-* MISC
-  * Fix CI Build (#34315)
-  * Add riscv64 support (#34199) (#34204)
-  * Bump go version in go.mod (#34160)
-  * remove hardcoded 'code' string in clone_panel.tmpl (#34153) (#34158)
-
-## [1.23.7](https://github.com/go-gitea/gitea/releases/tag/1.23.7) - 2025-04-07
-
-* Enhancements
-  * Add a config option to block "expensive" pages for anonymous users (#34024) (#34071)
-  * Also check default ssh-cert location for host (#34099) (#34100) (#34116)
-* BUGFIXES
-  * Fix discord webhook 400 status code when description limit is exceeded (#34084) (#34124)
-  * Get changed files based on merge base when checking `pull_request` actions trigger (#34106) (#34120)
-  * Fix invalid version in RPM package path (#34112) (#34115)
-  * Return default avatar url when user id is zero rather than updating database (#34094) (#34095)
-  * Add additional ReplaceAll in pathsep to cater for different pathsep (#34061) (#34070)
-  * Try to fix check-attr bug (#34029) (#34033)
-  * Git client will follow 301 but 307 (#34005) (#34010)
-  * Fix block expensive for 1.23 (#34127)
-  * Fix markdown frontmatter rendering (#34102) (#34107)
-  * Add new CLI flags to set name and scopes when creating a user with access token (#34080) (#34103)
-  * Do not show 500 error when default branch doesn't exist (#34096) (#34097)
-  * Hide activity contributors, recent commits and code frequrency left tabs if there is no code permission (#34053) (#34065)
-  * Simplify emoji rendering (#34048) (#34049)
-  * Adjust the layout of the toolbar on the Issues/Projects page (#33667) (#34047)
-  * Pull request updates will also trigger code owners review requests (#33744) (#34045)
-  * Fix org repo creation being limited by user limits (#34030) (#34044)
-  * Fix git client accessing renamed repo (#34034) (#34043)
-  * Fix the issue with error message logging for the `check-attr` command on Windows OS. (#34035) (#34036)
-  * Polyfill WeakRef (#34025) (#34028)
-
-## [1.23.6](https://github.com/go-gitea/gitea/releases/tag/v1.23.6) - 2025-03-24
-
-* SECURITY
-  * Fix LFS URL (#33840) (#33843)
-  * Update jwt and redis packages (#33984) (#33987)
-  * Update golang crypto and net (#33989)
-* BUGFIXES
-  * Drop timeout for requests made to the internal hook api (#33947) (#33970)
-  * Fix maven panic when no package exists (#33888) (#33889)
-  * Fix markdown render (#33870) (#33875)
-  * Fix auto concurrency cancellation skips commit status updates (#33764) (#33849)
-  * Fix oauth2 auth (#33961) (#33962)
-  * Fix incorrect 1.23 translations (#33932)
-  * Try to figure out attribute checker problem (#33901) (#33902)
-  * Ignore trivial errors when updating push data (#33864) (#33887)
-  * Fix some UI problems for 1.23 (#33856)
-  * Removing unwanted ui container (#33833) (#33835)
-  * Support disable passkey auth (#33348) (#33819)
-  * Do not call "git diff" when listing PRs (#33817)
-  * Try to fix ACME (3rd) (#33807) (#33808)
-  * Fix incorrect code search indexer options (#33992) #33999
-
-## [1.23.5](https://github.com/go-gitea/gitea/releases/tag/v1.23.5) - 2025-03-04
-
-* SECURITY
-  * Bump x/oauth2 & x/crypto (#33704) (#33727)
-* PERFORMANCE
-  * Optimize user dashboard loading (#33686) (#33708)
-* BUGFIXES
-  * Fix navbar dropdown item align (#33782)
-  * Fix inconsistent closed issue list icon (#33722) (#33728)
-  * Fix for Maven Package Naming Convention Handling (#33678) (#33679)
-  * Improve Open-with URL encoding (#33666) (#33680)
-  * Deleting repository should unlink all related packages (#33653) (#33673)
-  * Fix omitempty bug (#33663) (#33670)
-  * Upgrade go-crypto from 1.1.4 to 1.1.6 (#33745) (#33754)
-  * Fix OCI image.version annotation for releases to use full semver (#33698) (#33701)
-  * Try to fix ACME path when renew (#33668) (#33693)
-  * Fix mCaptcha bug (#33659) (#33661)
-  * Git graph: don't show detached commits (#33645) (#33650)
-  * Use MatchPhraseQuery for bleve code search (#33628)
-  * Adjust appearence of commit status webhook (#33778) #33789
-  * Upgrade golang net from 0.35.0 -> 0.36.0 (#33795) #33796
-
-## [1.23.4](https://github.com/go-gitea/gitea/releases/tag/v1.23.4) - 2025-02-16
-
-* SECURITY
-  * Enhance routers for the Actions variable operations (#33547) (#33553)
-  * Enhance routers for the Actions runner operations (#33549) (#33555)
-  * Fix project issues list and counting (#33594) #33619
-* PERFORMANCES
-  * Performance optimization for pull request files loading comments attachments (#33585) (#33592)
-* BUGFIXES
-  * Add a transaction to `pickTask` (#33543) (#33563)
-  * Fix mirror bug (#33597) (#33607)
-  * Use default Git timeout when checking repo health (#33593) (#33598)
-  * Fix PR's target branch dropdown (#33589) (#33591)
-  * Fix various problems (artifact order, api empty slice, assignee check, fuzzy prompt, mirror proxy, adopt git) (#33569) (#33577)
-  * Rework suggestion backend (#33538) (#33546)
-  * Fix context usage (#33554) (#33557)
-  * Only show the latest version in the Arch index (#33262) (#33580)
-  * Skip deletion error for action artifacts (#33476) (#33568)
-  * Make actions URL in commit status webhooks absolute (#33620) #33632
-  * Add missing locale (#33641) #33642
-
-## [1.23.3](https://github.com/go-gitea/gitea/releases/tag/v1.23.3) - 2025-02-06
-
-* Security
-  * Build Gitea with Golang v1.23.6 to fix security bugs
-* BUGFIXES
-  * Fix a bug caused by status webhook template #33512
-
-## [1.23.2](https://github.com/go-gitea/gitea/releases/tag/1.23.2) - 2025-02-04
-
-* BREAKING
-  * Add tests for webhook and fix some webhook bugs (#33396) (#33442)
-    * Package webhook’s Organization was incorrectly used as the User struct. This PR fixes the issue.
-    * This changelog is just a hint. The change is not really breaking because most fields are the same, most users are not affected.
-* ENHANCEMENTS
-  * Clone button enhancements (#33362) (#33404)
-  * Repo homepage styling tweaks (#33289) (#33381)
-  * Add a confirm dialog for "sync fork" (#33270) (#33273)
-  * Make tracked time representation display as hours (#33315) (#33334)
-  * Improve sync fork behavior (#33319) (#33332)
-* BUGFIXES
-  * Fix code button alignment (#33345) (#33351)
-  * Correct bot label `vertical-align` (#33477) (#33480)
-  * Fix SSH LFS memory usage (#33455) (#33460)
-  * Fix issue sidebar dropdown keyboard support (#33447) (#33450)
-  * Fix user avatar (#33439)
-  * Fix `GetCommitBranchStart` bug (#33298) (#33421)
-  * Add pubdate for repository rss and add some tests (#33411) (#33416)
-  * Add missed auto merge feed message on dashboard (#33309) (#33405)
-  * Fix issue suggestion bug (#33389) (#33391)
-  * Make issue suggestion work for all editors (#33340) (#33342)
-  * Fix issue count (#33338) (#33341)
-  * Fix Account linking page (#33325) (#33327)
-  * Fix closed dependency title (#33285) (#33287)
-  * Fix sidebar milestone link (#33269) (#33272)
-  * Fix missing license when sync mirror (#33255) (#33258)
-  * Fix upload file form (#33230) (#33233)
-  * Fix mirror bug (#33224) (#33225)
-  * Fix system admin cannot fork or get private fork with API (#33401) (#33417)
-  * Fix push message behavior (#33215) (#33317)
-  * Trivial fixes (#33304) (#33312)
-  * Fix "stop time tracking button" on navbar (#33084) (#33300)
-  * Fix tag route and empty repo (#33253)
-  * Fix cache test triggered by non memory cache (#33220) (#33221)
-  * Revert empty lfs ref name (#33454) (#33457)
-  * Fix flex width (#33414) (#33418)
-  * Fix commit status events (#33320) #33493
-  * Fix unnecessary comment when moving issue on the same project column (#33496) #33499
-  * Add timetzdata build tag to binary releases (#33463) #33503
-* MISC
-  * Use ProtonMail/go-crypto to replace keybase/go-crypto (#33402) (#33410)
-  * Update katex to latest version (#33361)
-  * Update go tool dependencies (#32916) (#33355)
-
-## [1.23.1](https://github.com/go-gitea/gitea/releases/tag/v1.23.1) - 2025-01-09
-
-* ENHANCEMENTS
-  * Move repo size to sidebar (#33155) (#33182)
-* BUGFIXES
-  * Use updated path to s6-svscan after alpine upgrade (#33185) (#33188)
-  * Fix fuzz test (#33156) (#33158)
-  * Fix raw file API ref handling (#33172) (#33189)
-  * Fix ACME panic (#33178) (#33186)
-  * Fix branch dropdown not display ref name (#33159) (#33183)
-  * Fix assignee list overlapping in Issue sidebar (#33176) (#33181)
-  * Fix sync fork for consistency (#33147) #33192
-  * Fix editor markdown not incrementing in a numbered list (#33187) #33193
-
-## [1.23.0](https://github.com/go-gitea/gitea/releases/tag/v1.23.0) - 2025-01-08
-
-* BREAKING
-  * Rename config option `[camo].Allways` to `[camo].Always` (#32097)
-  * Remove SHA1 for support for ssh rsa signing (#31857)
-  * Use UTC as default timezone when schedule Actions cron tasks (#31742)
-  * Delete Actions logs older than 1 year by default (#31735)
-  * Make OIDC introspection authentication strictly require Client ID and secret (#31632)
-
-* SECURITY
-  * Include file extension checks in attachment API (#32151)
-  * Include all security fixes which have been backported to v1.22
-
-* FEATURES
-  * Allow to fork repository into the same owner (#32819)
-  * Support "merge upstream branch" (Sync fork) (#32741)
-  * Add Arch package registry (#32692)
-  * Allow to disable the password-based login (sign-in) form (#32687)
-  * Allow cropping an avatar before setting it (#32565)
-  * Support quote selected comments to reply (#32431)
-  * Add reviewers selection to new pull request (#32403)
-  * Suggestions for issues (#32327)
-  * Add priority to protected branch (#32286)
-  * Included tag search capabilities (#32045)
-  * Add option to filter board cards by labels and assignees (#31999)
-  * Add automatic light/dark option for the colorblind theme (#31997)
-  * Support migration from AWS CodeCommit (#31981)
-  * Introduce globallock as distributed locks (#31908 & #31813)
-  * Support compression for Actions logs & enable by default (#31761 & #32013)
-  * Add pure SSH LFS support (#31516)
-  * Add Passkey login support (#31504)
-  * Actions support workflow dispatch event (#28163)
-  * Support repo license (#24872)
-  * Issue time estimate, meaningful time tracking (#23113)
-  * GitHub like repo home page (#32213 & #32847)
-  * Rearrange Clone Panel (#31142)
-  * Enhancing Gitea OAuth2 Provider with Granular Scopes for Resource Access (#32573)
-  * Use env GITEA_RUNNER_REGISTRATION_TOKEN as global runner token (#32946) #32964
-  * Update i18n.go - Language Picker (#32933) #32935
-
-* PERFORMANCE
-  * Perf: add extra index to notification table (#32395)
-  * Introduce OrgList and add LoadTeams, optimaze Load teams for orgs (#32543)
-  * Improve performance of diffs (#32393)
-  * Make LFS http_client parallel within a batch. (#32369)
-  * Add new index for action to resolve the performance problem (#32333)
-  * Improve get feed with pagination (#31821)
-  * Performance improvements for pull request list API (#30490)
-  * Use batch database operations instead of one by one to optimze api pulls (#32680)
-  * Use gitrepo.GetTreePathLatestCommit to get file lastest commit instead from latest commit cache (#32987) #33046
-
-* ENHANCEMENTS
-  * Code
-    * Remove unnecessary border in repo home page sidebar (#32767)
-    * Add 'Copy path' button to file view (#32584)
-    * Improve diff file tree (#32658)
-    * Add new [lfs_client].BATCH_SIZE and [server].LFS_MAX_BATCH_SIZE config settings. (#32307)
-    * Updated tokenizer to better matching when search for code snippets (#32261)
-    * Change the code search to sort results by relevance (#32134)
-    * Support migrating GitHub/GitLab PR draft status (#32242)
-    * Move lock icon position and add additional tooltips to branch list page (#31839)
-    * Add tag name in the commits list (#31082)
-    * Add `MAX_ROWS` option for CSV rendering (#30268)
-    * Allow code search by filename (#32210)
-    * Make git push options accept short name (#32245)
-    * Repo file list enhancements (#32835)
-
-  * Markdown & Editor
-    * Refactor markdown math render, add dollor-backquote syntax support (#32831)
-    * Make Monaco theme follow browser, fully type codeeditor.ts (#32756)
-    * Refactor markdown editor and use it for milestone description editor (#32688)
-    * Add some handy markdown editor features (#32400)
-    * Improve markdown textarea for indentation and lists (#31406)
-
-  * Issue
-    * Add label/author/assignee filters to the user/org home issue list (#32779)
-    * Refactor issue filter (labels, poster, assignee) (#32771)
-    * Style unification for the issue_management area (#32605)
-    * Add "View all branches/tags" entry to Branch Selector (#32653)
-    * Improve textarea paste (#31948)
-    * Add avif image file support (#32508)
-    * Prevent from submitting issue/comment on uploading (#32263)
-    * Issue Templates: add option to have dropdown printed list (#31577)
-    * Allow searching issues by ID (#31479)
-    * Add `is_archived` option for issue indexer (#32735)
-    * Improve attachment upload methods (#30513)
-    * Support issue template assignees (#31083)
-    * Prevent simultaneous editing of comments and issues (#31053)
-    * Add issue comment when moving issues from one column to another of the project (#29311)
-
-  * Pull Request
-    * Display head branch more comfortable on pull request view (#32000)
-    * Simplify review UI (#31062)
-    * Allow force push to protected branches (#28086)
-    * Add line-through for deleted branch on pull request view page (#32500)
-    * Support requested_reviewers data in comment webhook events (#26178)
-    * Allow maintainers to view and edit files of private repos when "Allow maintainers to edit" is enabled (#32215)
-    * Allow including `Reviewed-on`/`Reviewed-by` lines for custom merge messages (#31211)
-
-  * Actions
-    * Render job title as commit message (#32748)
-    * Refactor RepoActionView.vue, add `::group::` support (#32713)
-    * Make RepoActionView.vue support `##[group]` (#32770)
-    * Support `pull_request_target` event for commit status (#31703)
-    * Detect whether action view branch was deleted (#32764)
-    * Allow users with write permission to run actions (#32644)
-    * Show latest run when visit /run/latest (#31808)
-
-  * Packages
-    * Improve rubygems package registry (#31357)
-    * Add support for npm bundleDependencies (#30751)
-    * Add signature support for the RPM module (#27069)
-    * Extract and display readme and comments for Composer packages (#30927)
-
-  * Project
-    * Add title to project view page (#32747)
-    * Set the columns height to hug all its contents (#31726)
-    * Rename project `board` -> `column` to make the UI less confusing (#30170)
-
-  * User & Organazition
-    * Use better name for userinfo structure (#32544)
-    * Use user.FullName in Oauth2 id_token response (#32542)
-    * Limit org member view of restricted users (#32211)
-    * Allow disabling authentication related user features (#31535)
-    * Add option to change mail from user display name (#31528)
-    * Use FullName in Emails to address the recipient if possible (#31527)
-
-  * Administration
-    * Add support for a credentials chain for minio access (#31051)
-    * Move admin routers from /admin to /-/admin (#32189)
-    * Add cache test for admins (#31265)
-    * Add option for mailer to override mail headers (#27860)
-    * Azure blob storage support (#30995)
-    * Supports forced use of S3 virtual-hosted style (#30969)
-    * Move repository visibility to danger zone in the settings area (#31126)
-
-  * Others
-    * Remove urls from translations (#31950)
-    * Simplify 404/500 page (#31409)
-    * Optimize installation-page experience (#32558)
-    * Refactor login page (#31530)
-    * Add new event commit status creation and webhook implementation (#27151)
-    * Repo Activity: count new issues that were closed (#31776)
-    * Set manual `tabindex`es on login page (#31689)
-    * Add `YEAR`, `MONTH`, `MONTH_ENGLISH`, `DAY` variables for template repos (#31584)
-    * Add typescript guideline and typescript-specific eslint plugins and fix issues (#31521)
-    * Make toast support preventDuplicates (#31501)
-    * Fix tautological conditions (#30735)
-    * Issue change title notifications (#33050) #33065
-
-* API
-  * Implement update branch API (#32433)
-  * Fix missing outputs for jobs with matrix (#32823)
-  * Make API "compare" accept commit IDs (#32801)
-  * Add github compatible tarball download API endpoints (#32572)
-  * Harden runner updateTask and updateLog api (#32462)
-  * Add `DISABLE_ORGANIZATIONS_PAGE` and `DISABLE_CODE_PAGE` settings for explore pages and fix an issue related to user search (#32288)
-  * Make admins adhere to branch protection rules (#32248)
-  * Calculate `PublicOnly` for org membership only once (#32234)
-  * Allow filtering PRs by poster in the ListPullRequests API (#32209)
-  * Return 404 instead of error when commit not exist (#31977)
-  * Save initial signup information for users to aid in spam prevention (#31852)
-  * Fix upload maven pacakge parallelly (#31851)
-  * Fix null requested_reviewer from API (#31773)
-  * Add permission description for API to add repo collaborator (#31744)
-  * Add return type to GetRawFileOrLFS and GetRawFile (#31680)
-  * Add skip secondary authorization option for public oauth2 clients (#31454)
-  * Add tag protection via rest api #17862 (#31295)
-  * Document possible action types for the user activity feed API (#31196)
-  * Add topics for repository API (#31127)
-  * Add support for searching users by email (#30908)
-  * Add API endpoints for getting action jobs status (#26673)
-
-* REFACTOR
-  * Update JS and PY dependencies (#31940)
-  * Enable `no-jquery/no-parse-html-literal` and fix violation (#31684)
-  * Refactor image diff (#31444)
-  * Refactor CSRF token (#32216)
-  * Fix some typescript issues (#32586)
-  * Refactor names (#31405)
-  * Use per package global lock for container uploads instead of memory lock (#31860)
-  * Move team related functions to service layer (#32537)
-  * Move GetFeeds to service layer (#32526)
-  * Resolve lint for unused parameter and unnecessary type arguments (#30750)
-  * Reimplement GetUserOrgsList to make it simple and clear (#32486)
-  * Move some functions from issue.go to standalone files (#32468)
-  * Refactor sidebar assignee&milestone&project selectors (#32465)
-  * Refactor sidebar label selector (#32460)
-  * Fix a number of typescript issues (#32459)
-  * Refactor language menu and dom utils (#32450)
-  * Refactor issue page info (#32445)
-  * Split issue sidebar into small templates (#32444)
-  * Refactor template ctx and render utils (#32422)
-  * Refactor repo legacy (#32404)
-  * Refactor markup package (#32399)
-  * Refactor markup render system (#32533 & #32589 & #32612)
-  * Refactor the DB migration system slightly (#32344)
-  * Remove jQuery import from some files (#32512)
-  * Strict pagination check (#32548)
-  * Split mail sender sub package from mailer service package (#32618)
-  * Remove outdated code about fixture generation (#32708)
-  * Refactor RepoBranchTagSelector (#32681)
-  * Refactor issue list (#32755)
-  * Refactor LabelEdit (#32752)
-  * Split issue/pull view router function as multiple smaller functions (#32749)
-  * Refactor some LDAP code (#32849)
-  * Unify repo search order by logic (#30876)
-  * Remove duplicate empty repo check in delete branch API (#32569)
-  * Replace deprecated `math/rand` functions (#30733)
-  * Remove fomantic dimmer module (#30723)
-  * Add types to fetch,toast,bootstrap,svg (#31627)
-  * Refactor webhook (#31587)
-  * Move AddCollabrator and CreateRepositoryByExample to service layer (#32419)
-  * Refactor RepoRefByType (#32413)
-  * Refactor: remove redundant err declarations (#32381)
-  * Refactor markup code (#31399)
-  * Refactor render system (orgmode) (#32671)
-  * Refactor render system (#32492)
-  * Refactor markdown render (#32736 & #32728)
-  * Refactor repo unit "disabled" check (#31389)
-  * Refactor route path normalization (#31381)
-  * Refactor to use UnsafeStringToBytes (#31358)
-  * Migrate vue components to setup (#32329)
-  * Refactor globallock (#31933)
-  * Use correct function name (#31887)
-  * Use a common message template instead of a special one (#31878)
-  * Fix a number of Typescript issues (#31877)
-  * Refactor dropzone (#31482)
-  * Move custom `tw-` helpers to tailwind plugin (#31184)
-  * Replace `gt-word-break` with `tw-break-anywhere` (#31183)
-  * Drop `IDOrderDesc` for listing Actions task and always order by `id DESC` (#31150)
-  * Split common-global.js into separate files (#31438)
-  * Improve detecting empty files (#31332)
-  * Use `querySelector` over alternative DOM methods (#31280)
-  * Remove jQuery `.text()` (#30506)
-  * Use repo as of renderctx's member rather than a repoPath on metas (#29222)
-  * Refactor some frontend problems (#32646)
-  * Refactor DateUtils and merge TimeSince (#32409)
-  * Replace DateTime with proper functions (#32402)
-  * Replace DateTime with DateUtils (#32383)
-  * Convert frontend code to typescript (#31559)
-  * Refactor maven package registry (#33049) #33057
-  * Refactor testfixtures #33028
-
-* BUGFIXES
-  * Fix issues with inconsistent spacing in areas (#32607)
-  * Fix incomplete Actions status aggregations (#32859)
-  * In some lfs server implementations, they require the ref attribute. (#32838)
-  * Update the list of watchers and stargazers when clicking watch/unwatch or star/unstar (#32570)
-  * Fix `recentupdate` sorting bugs (#32505)
-  * Fix incorrect "Target branch does not exist" in PR title (#32222)
-  * Handle "close" actionable references for manual merges (#31879)
-  * render plain text file if the LFS object doesn't exist (#31812)
-  * Fix Null Pointer error for CommitStatusesHideActionsURL (#31731)
-  * Fix loadRepository error when access user dashboard (#31719)
-  * Hide the "Details" link of commit status when the user cannot access actions (#30156)
-  * Fix duplicate dropdown dividers (#32760)
-  * Fix SSPI button visibility when SSPI is the only enabled method (#32841)
-  * Fix overflow on org header (#32837)
-  * Exclude protected branches from recently pushed (#31748)
-  * Fix large image overflow in comment page (#31740)
-  * Fix milestone deadline and date related problems (#32339)
-  * Fix markdown preview $$ support (#31514)
-  * Fix a compilation error in the Gitpod environment (#32559)
-  * Fix PR diff review form submit (#32596)
-  * Fix a number of typescript issues (#32308)
-  * Fix some function names in comment (#32300)
-  * Fix absolute-date (#32375)
-  * Clarify Actions resources ownership (#31724)
-  * Try to fix ACME directory problem (#33072) #33077
-  * Inherit submodules from template repository content (#16237) #33068
-  * Use project's redirect url instead of composing url (#33058) #33064
-  * Fix toggle commit body button ui when latest commit message is long (#32997) #33034
-  * Fix package error handling and npm meta and empty repo guide #33112
-  * Fix empty git repo handling logic and fix mobile view (#33101) #33102
-  * Fix line-number and scroll bugs (#33094) #33095
-  * Fix bleve fuzziness search (#33078) #33087
-  * Fix broken forms #33082
-  * Fix empty repo updated time (#33120) #33124
-  * Add missing transaction when set merge #33113
-  * Fix issue comment number (#30556) #33055
-  * Fix duplicate co-author in squashed merge commit messages (#33020) #33054
-  * Fix Agit pull request permission check (#32999) #33005
-  * Fix scoped label ui when contains emoji (#33007) #33014
-  * Fix bug on activities (#33008) #33016
-  * Fix review code comment avatar alignment (#33031) #33032
-  * Fix templating in pull request comparison (#33025) #33038
-  * Fix bug automerge cannot be chosed when there is only 1 merge style (#33040) #33043
-  * Fix settings not being loaded at CLI (#26402) #33048
-  * Support for email addresses containing uppercase characters when activating user account (#32998) #33001
-  * Support org labels when adding labels by label names (#32988) #32996
-  * Do not render truncated links in markdown (#32980) #32983
-  * Demilestone should not include milestone (#32923) #32979
-  * Fix Azure blob object Seek (#32974) #32975
-  * Fix maven pom inheritance (#32943) #32976
-  * Fix textarea newline handle (#32966) #32977
-  * Fix outdated tmpl code (#32953) #32961
-  * Fix commit range paging (#32944) #32962
-  * Fix repo avatar conflict (#32958) #32960
-  * Fix trailing comma not matched in the case of alphanumeric issue (#32945)
-  * Relax the version checking for Arch packages (#32908) #32913
-  * Add more load functions to make sure the reference object loaded (#32901) #32912
-  * Filter reviews of one pull request in memory instead of database to reduce slow response because of lacking database index (#33106) #33128
-  * Fix git remote error check, fix dependencies, fix js error (#33129) #33133
-
-* MISC
-  * Optimize branch protection rule loading (#32280)
-  * Bump to go 1.23 (#31855)
-  * Remove unused call to $.HeadRepo in view_title template (#32317)
-  * Do not display `attestation-manifest` and use short sha256 instead of full sha256 (#32851)
-  * Upgrade htmx to 2.0.4 (#32834)
-  * Improve JSX/TSX support in code editor (#32833)
-  * Add User-Agent for gitea's self-implemented lfs client. (#32832)
-  * Use errors.New to replace fmt.Errorf with no parameters (#32800)
-  * Add "n commits" link to contributors in contributors graph page (#32799)
-  * Update dependencies, tweak eslint (#32719)
-  * Remove all "floated" CSS styles (#32691)
-  * Show tag name on branch/tag selector if repo shown from tag ref (#32689)
-  * Use new mail package instead of an unmintained one (#32682)
-  * Optimize the styling of icon buttons within file-header-right (#32675)
-  * Validate OAuth Redirect URIs (#32643)
-  * Support optional/configurable IAMEndpoint for Minio Client (#32581) (#32581)
-  * Make search box in issue sidebar dropdown list always show when scrolling (#32576)
-  * Bump CI,Flake and Snap to Node 22 (#32487)
-  * Update `github.com/meilisearch/meilisearch-go` (#32484)
-  * Add `DEFAULT_MIRROR_REPO_UNITS` and `DEFAULT_TEMPLATE_REPO_UNITS` options (#32416)
-  * Update go dependencies (#32389)
-  * Update JS and PY dependencies (#32388)
-  * Upgrade rollup to 4.24.0 (#32312)
-  * Upgrade vue to 3.5.12 (#32311)
-  * Improve the maintainblity of the reserved username list (#32229)
-  * Upgrade htmx to 2.0.3 (#32192)
-  * Count typescript files as frontend for labeling (#32088)
-  * Only use Host header from reverse proxy (#32060)
-  * Failed authentications are logged to level Warning (#32016)
-  * Enhance USER_DISABLED_FEATURES to allow disabling change username or full name (#31959)
-  * Distinguish official vs non-official reviews, add tool tips, and upgr… (#31924)
-  * Update mermaid to v11 (#31913)
-  * Bump relative-time-element to v4.4.3 (#31910)
-  * Upgrade `htmx` to `2.0.2` (#31847)
-  * Add warning message in merge instructions when `AutodetectManualMerge` was not enabled (#31805)
-  * Add types to various low-level functions (#31781)
-  * Update JS dependencies (#31766)
-  * Remove unused code from models/repos/release.go (#31756)
-  * Support delete user email in admin panel (#31690)
-  * Add `username` to OIDC introspection response (#31688)
-  * Use GetDisplayName() instead of DisplayName() to generate rss feeds (#31687)
-  * Code editor theme enhancements (#31629)
-  * Update JS dependencies (#31616)
-  * Add types for js globals (#31586)
-  * Add back esbuild-loader for .js files (#31585)
-  * Don't show hidden labels when filling out an issue template (#31576)
-  * Allow synchronizing user status from OAuth2 login providers (#31572)
-  * Display app name in the registration email title (#31562)
-  * Use stable version of fabric (#31526)
-  * Support legacy _links LFS batch responses (#31513)
-  * Fix JS error with disabled attachment and easymde (#31511)
-  * Always use HTML attributes for avatar size (#31509)
-  * Use nolyfill to remove some polyfills (#31468)
-  * Disable issue/PR comment button given empty input (#31463)
-  * Add simple JS init performance trace (#31459)
-  * Bump htmx to 2.0.0 (#31413)
-  * Update JS dependencies, remove `eslint-plugin-jquery` (#31402)
-  * Split org Propfile README to a new tab `overview` (#31373)
-  * Update nix flake and add gofumpt (#31320)
-  * Code optimization (#31315)
-  * Enable poetry non-package mode (#31282)
-  * Optimize profile layout to enhance visual experience (#31278)
-  * Update `golang.org/x/net` (#31260)
-  * Bump `@github/relative-time-element` to v4.4.1 (#31232)
-  * Remove unnecessary inline style for tab-size (#31224)
-  * Update golangci-lint to v1.59.0 (#31221)
-  * Update chroma to v2.14.0 (#31177)
-  * Update JS dependencies (#31120)
-  * Improve the handling of `jobs..if` (#31070)
-  * Clean up revive linter config, tweak golangci output (#30980)
-  * Use CSS `inset` shorthand (#30939)
-  * Forbid deprecated `break-word` in CSS (#30934)
-  * Remove obsolete monaco workaround (#30893)
-  * Update JS dependencies, add new eslint rules (#30840)
-  * Fix body margin shifting with modals, fix error on project column edit (#30831)
-  * Remove disk-clean workflow (#30741)
-  * Bump `github.com/google/go-github` to v61 (#30738)
-  * Add built js files to eslint ignore (#30737)
-  * Use `ProtonMail/go-crypto` for `opengpg` in tests (#30736)
-  * Upgrade xorm to v1.3.9 and improve some migrations Sync (#29899)
-  * Added default sorting milestones by name (#27084)
-  * Enable `unparam` linter (#31277)
-  * Use Alpine 3.21 for the docker images (#32924) #32951
-  * Bump x/net (#32896) #32899
-  * Use -s -w ldflags for release artifacts (#33041) #33042
-  * Remove aws go sdk package dependency (#33029) #33047
-
-## [1.22.6](https://github.com/go-gitea/gitea/releases/tag/v1.22.6) - 2024-12-12
-
-* SECURITY
-  * Fix misuse of PublicKeyCallback(#32810)
-* BUGFIXES
-  * Fix lfs migration (#32812) (#32818)
-  * Add missing two sync feed for refs/pull (#32815)
-* TESTING
-  * Avoid MacOS keychain dialog in integration tests (#32813) (#32816)
-
-## [1.22.5](https://github.com/go-gitea/gitea/releases/tag/v1.22.5) - 2024-12-11
-
-* SECURITY
-  * Upgrade crypto library (#32791)
-  * Fix delete branch perm checking (#32654) (#32707)
-* BUGFIXES
-  * Add standard-compliant route to serve outdated R packages (#32783) (#32789)
-  * Fix internal server error when updating labels without write permission (#32776) (#32785)
-  * Add Swift login endpoint (#32693) (#32701)
-  * Fix fork page branch selection (#32711) (#32725)
-  * Fix word overflow in file search page (#32695) (#32699)
-  * Fix gogit `GetRefCommitID` (#32705) (#32712)
-  * Fix race condition in mermaid observer (#32599) (#32673)
-  * Fixe a keystring misuse and refactor duplicates keystrings (#32668) (#32792)
-  * Bump relative-time-element to v4.4.4 (#32739)
-* PERFORMANCE
-  * Make wiki pages visit fast (#32732) (#32745)
-* MISC
-  * Don't create action when syncing mirror pull refs (#32659) (#32664)
-
-## [1.22.4](https://github.com/go-gitea/gitea/releases/tag/v1.22.4) - 2024-11-14
-
-* SECURITY
-  * Fix basic auth with webauthn (#32531) (#32536)
-  * Refactor internal routers (partial backport, auth token const time comparing) (#32473) (#32479)
-* PERFORMANCE
-  * Remove transaction for archive download (#32186) (#32520)
-* BUGFIXES
-  * Fix `missing signature key` error when pulling Docker images with `SERVE_DIRECT` enabled (#32365) (#32397)
-  * Fix get reviewers fails when selecting user without pull request permissions unit (#32415) (#32616)
-  * Fix adding index files to tmp directory (#32360) (#32593)
-  * Fix PR creation on forked repositories via API (#31863) (#32591)
-  * Fix missing menu tabs in organization project view page (#32313) (#32592)
-  * Support HTTP POST requests to `/userinfo`, aligning to OpenID Core specification (#32578) (#32594)
-  * Fix debian package clean up cron job (#32351) (#32590)
-  * Fix GetInactiveUsers (#32540) (#32588)
-  * Allow the actions user to login via the jwt token (#32527) (#32580)
-  * Fix submodule parsing (#32571) (#32577)
-  * Refactor find forks and fix possible bugs that weaken permissions check (#32528) (#32547)
-  * Fix some places that don't respect org full name setting (#32243) (#32550)
-  * Refactor push mirror find and add check for updating push mirror (#32539) (#32549)
-  * Fix basic auth with webauthn (#32531) (#32536)
-  * Fix artifact v4 upload above 8MB (#31664) (#32523)
-  * Fix oauth2 error handle not return immediately (#32514) (#32516)
-  * Fix action not triggered when commit message is too long (#32498) (#32507)
-  * Fix `GetRepoLink` nil pointer dereference on dashboard feed page when repo is deleted with actions enabled (#32501) (#32502)
-  * Fix `missing signature key` error when pulling Docker images with `SERVE_DIRECT` enabled (#32397) (#32397)
-  * Fix the permission check for user search API and limit the number of returned users for `/user/search` (#32310)
-  * Fix SearchIssues swagger docs (#32208) (#32298)
-  * Fix dropdown content overflow (#31610) (#32250)
-  * Disable Oauth check if oauth disabled (#32368) (#32480)
-  * Respect renamed dependencies of Cargo registry (#32430) (#32478)
-  * Fix mermaid diagram height when initially hidden (#32457) (#32464)
-  * Fix broken releases when re-pushing tags (#32435) (#32449)
-  * Only provide the commit summary for Discord webhook push events (#32432) (#32447)
-  * Only query team tables if repository is under org when getting assignees (#32414) (#32426)
-  * Fix created_unix for mirroring (#32342) (#32406)
-  * Respect UI.ExploreDefaultSort setting again (#32357) (#32385)
-  * Fix broken image when editing comment with non-image attachments (#32319) (#32345)
-  * Fix disable 2fa bug (#32320) (#32330)
-  * Always update expiration time when creating an artifact (#32281) (#32285)
-  * Fix null errors on conversation holder (#32258) (#32266) (#32282)
-  * Only rename a user when they should receive a different name (#32247) (#32249)
-  * Fix checkbox bug on private/archive filter (#32236) (#32240)
-  * Add a doctor check to disable the "Actions" unit for mirrors (#32424) (#32497)
-  * Quick fix milestone deadline 9999 (#32423)
-  * Make `show stats` work when only one file changed (#32244) (#32268)
-  * Make `owner/repo/pulls` handlers use "PR reader" permission (#32254) (#32265)
-  * Update scheduled tasks even if changes are pushed by "ActionsUser" (#32246) (#32252)
-* MISC
-  * Remove unnecessary code: `GetPushMirrorsByRepoID` called on all repo pages (#32560) (#32567)
-  * Improve some sanitizer rules (#32534)
-  * Update nix development environment vor v1.22.x (#32495)
-  * Add warn log when deleting inactive users (#32318) (#32321)
-  * Update github.com/go-enry/go-enry to v2.9.1 (#32295) (#32296)
-  * Warn users when they try to use a non-root-url to sign in/up (#32272) (#32273)
-
-## [1.22.3](https://github.com/go-gitea/gitea/releases/tag/v1.22.3) - 2024-10-08
-
-* SECURITY
-  * Fix bug when a token is given public only (#32204) (#32218)
-* PERFORMANCE
-  * Increase `cacheContextLifetime` to reduce false reports (#32011) (#32023)
-  * Don't join repository when loading action table data (#32127) (#32143)
-* BUGFIXES
-  * Fix javascript error when an anonymous user visits migration page (#32144) (#32179)
-  * Don't init signing keys if oauth2 provider is disabled (#32177)
-  * Fix wrong status of `Set up Job` when first step is skipped (#32120) (#32125)
-  * Fix bug when deleting a migrated branch (#32075) (#32123)
-  * Truncate commit message during Discord webhook push events (#31970) (#32121)
-  * Allow to set branch protection in an empty repository (#32095) (#32119)
-  * Fix panic when cloning with wrong ssh format. (#32076) (#32118)
-  * Fix rename branch permission bug (#32066) (#32108)
-  * Fix: database not update release when using `git push --tags --force` (#32040) (#32074)
-  * Add missing comment reply handling (#32050) (#32065)
-  * Do not escape relative path in RPM primary index (#32038) (#32054)
-  * Fix `/repos/{owner}/{repo}/pulls/{index}/files` endpoint not populating `previous_filename` (#32017) (#32028)
-  * Support allowed hosts for migrations to work with proxy (#32025) (#32026)
-  * Fix the logic of finding the latest pull review commit ID (#32139) (#32165)
-  * Fix bug in getting merged pull request by commit (#32079) (#32117)
-  * Fix wrong last modify time (#32102) (#32104)
-  * Fix incorrect `/tokens` api (#32085) (#32092)
-  * Handle invalid target when creating releases using API (#31841) (#32043)
-  * Check if the `due_date` is nil when editing issues (#32035) (#32042)
-  * Fix container parallel upload bugs (#32022)
-  * Fixed race condition when deleting documents by repoId in ElasticSearch (#32185) (#32188)
-  * Refactor CSRF protector (#32057) (#32069)
-  * Fix Bug in Issue/pulls list (#32081) (#32115)
-  * Include collaboration repositories on dashboard source/forks/mirrors list (#31946) (#32122)
-  * Add null check for responseData.invalidTopics (#32212) (#32217)
-* TESTING
-  * Fix mssql ci with a new mssql version on ci (#32094)
-* MISC
-  * Upgrade some dependencies include minio-go (#32166)
-  * Add bin to Composer Metadata (#32099) (#32106)
-  * Lazy load avatar images (#32051) (#32063)
-  * Upgrade cache to v0.2.1 (#32003) (#32009)
-
-## [1.22.2](https://github.com/go-gitea/gitea/releases/tag/v1.22.2) - 2024-08-28
-
-* Security
-  * Replace v-html with v-text in search inputbox (#31966) (#31973)
-  * Fix nuget/conan/container packages upload bugs (#31967) (#31982)
-* PERFORMANCE
-  * Refactor the usage of batch catfile (#31754) (#31889)
-* BUGFIXES
-  * Fix overflowing content in action run log (#31842) (#31853)
-  * Scroll images in project issues separately from the remaining issue (#31683) (#31823)
-  * Add `:focus-visible` style to buttons (#31799) (#31819)
-  * Fix the display of project type for deleted projects (#31732) (#31734)
-  * Fix API owner ID should be zero when created repo secret (#31715) (#31811)
-  * Set owner id to zero when GetRegistrationToken for repo (#31725) (#31729)
-  * Fix API endpoint for registration-token (#31722) (#31728)
-  * Add permission check when creating PR (#31033) (#31720)
-  * Don't return 500 if mirror url contains special chars (#31859) (#31895)
-  * Fix agit automerge (#31207) (#31881)
-  * Add CfTurnstileSitekey context data to all captcha templates (#31874) (#31876)
-  * Avoid returning without written ctx when posting PR (#31843) (#31848)
-  * Fix raw wiki links (#31825) (#31845)
-  * Fix panic of ssh public key page after deletion of auth source (#31829) (#31836)
-  * Fixes for unreachable project issues when transfer repository from organization (#31770) (#31828)
-  * Show lock owner instead of repo owner on LFS setting page (#31788) (#31817)
-  * Fix `IsObjectExist` with gogit (#31790) (#31806)
-  * Fix protected branch files detection on pre_receive hook (#31778) (#31796)
-  * Add `TAGS` to `TEST_TAGS` and fix bugs found with gogit (#31791) (#31795)
-  * Rename head branch of pull requests when renaming a branch (#31759) (#31774)
-  * Fix wiki revision pagination (#31760) (#31772)
-  * Bump vue-bar-graph (#31705) (#31753)
-  * Distinguish LFS object errors to ignore missing objects during migration (#31702) (#31745)
-  * Make GetRepositoryByName more safer (#31712) (#31718)
-  * Fix a branch divergence cache bug (#31659) (#31661)
-  * Allow org team names of length 255 in create team form (#31564) (#31603)
-  * Use old behavior for telegram webhook (#31588)
-  * Bug fix for translation in ru (#31892)
-  * Fix actions notify bug (#31866) (#31875)
-  * Fix the component of access token list not mounted (#31824) (#31868)
-  * Add missing repository type filter parameters to pager  (#31832) (#31837)
-  * Fix dates displaying in a wrong manner when we're close to the end of… (#31750)
-  * Fix "Filter by commit" Dropdown (#31695) (#31696)
-  * Properly filter issue list given no assignees filter (#31522) (#31685)
-  * Prevent update pull refs manually and will not affect other refs update (#31931)(#31955)
-  * Fix sort order for organization home and user profile page (#31921) (#31922)
-  * Fix search team (#31923) (#31942)
-  * Fix 500 error when state params is set when editing issue/PR by API (#31880) (#31952)
-  * Fix index too many file names bug (#31903) (#31953)
-  * Add lock for parallel maven upload (#31851) (#31954)
-* MISC
-  * Remove "dsa-1024" testcases from Test_SSHParsePublicKey and Test_calcFingerprint (#31905) (#31914)
-  * Upgrade bleve to 2.4.2 (#31894)
-  * Remove unneccessary uses of `word-break: break-all` (#31637) (#31652)
-  * Return an empty string when a repo has no avatar in the repo API (#31187) (#31567)
-  * Upgrade micromatch to 4.0.8 (#31944)
-  * Update webpack to 5.94.0 (#31941)
-
-## [1.22.1](https://github.com/go-gitea/gitea/releases/tag/v1.22.1) - 2024-07-04
-
-* SECURITY
-  * Add replacement module for `mholt/archiver` (#31267) (#31270)
-* API
-  * Fix missing images in editor preview due to wrong links (#31299) (#31393)
-  * Fix duplicate sub-path for avatars (#31365) (#31368)
-  * Reduce memory usage for chunked artifact uploads to MinIO (#31325) (#31338)
-  * Remove sub-path from container registry realm (#31293) (#31300)
-  * Fix NuGet Package API for $filter with Id equality (#31188) (#31242)
-  * Add an immutable tarball link to archive download headers for Nix (#31139) (#31145)
-  * Add missed return after `ctx.ServerError` (#31130) (#31133)
-* BUGFIXES
-  * Fix avatar radius problem on the new issue page (#31506) (#31508)
-  * Fix overflow menu flickering on mobile (#31484) (#31488)
-  * Fix poor table column width due to breaking words (#31473) (#31477)
-  * Support relative paths to videos from Wiki pages (#31061) (#31453)
-  * Fix new issue/pr avatar (#31419) (#31424)
-  * Increase max length of org team names from 30 to 255 characters (#31410) (#31421)
-  * Fix line number width in code preview (#31307) (#31316)
-  * Optimize runner-tags layout to enhance visual experience (#31258) (#31263)
-  * Fix overflow on push notification (#31179) (#31238)
-  * Fix overflow on notifications (#31178) (#31237)
-  * Fix overflow in issue card (#31203) (#31225)
-  * Split sanitizer functions and fine-tune some tests (#31192) (#31200)
-  * use correct l10n string (#31487) (#31490)
-  * Fix dropzone JS error when attachment is disabled (#31486)
-  * Fix web notification icon not updated once you read all notifications (#31447) (#31466)
-  * Switch to "Write" tab when edit comment again (#31445) (#31461)
-  * Fix the link for .git-blame-ignore-revs bypass (#31432) (#31442)
-  * Fix the wrong line number in the diff view page when expanded twice. (#31431) (#31440)
-  * Fix labels and projects menu overflow on issue page (#31435) (#31439)
-  * Fix Account Linking UpdateMigrationsByType  (#31428) (#31434)
-  * Fix markdown math brackets render problem (#31420) (#31430)
-  * Fix rendered wiki page link (#31398) (#31407)
-  * Fix natural sort (#31384) (#31394)
-  * Allow downloading attachments of draft releases (#31369) (#31380)
-  * Fix repo graph JS (#31377)
-  * Fix incorrect localization `explorer.go` (#31348) (#31350)
-  * Fix hash render end with colon (#31319) (#31346)
-  * Fix line number widths (#31341) (#31343)
-  * Fix navbar `+` menu flashing on page load (#31281) (#31342)
-  * Fix adopt repository has empty object name in database (#31333) (#31335)
-  * Delete legacy cookie before setting new cookie (#31306) (#31317)
-  * Fix some URLs whose sub-path is missing (#31289) (#31292)
-  * Fix admin oauth2 custom URL settings (#31246) (#31247)
-  * Make pasted "img" tag has the same behavior as markdown image (#31235) (#31243)
-  * Fix agit checkout command line hint & fix ShowMergeInstructions checking (#31219) (#31222)
-  * Fix the possible migration failure on 286 with postgres 16 (#31209) (#31218)
-  * Fix branch order (#31174) (#31193)
-  * Fix markup preview (#31158) (#31166)
-  * Fix push multiple branches error with tests (#31151) (#31153)
-  * Fix API repository object format missed (#31118) (#31132)
-  * Fix missing memcache import (#31105) (#31109)
-  * Upgrade `github.com/hashicorp/go-retryablehttp` (#31499)
-  * Fix double border in system status table (#31363) (#31401)
-  * Fix bug filtering issues which have no project (#31337) (#31367)
-  * Fix #31185 try fix lfs download from bitbucket failed (#31201) (#31329)
-  * Add nix flake for dev shell (#30967) (#31310)
-  * Fix and clean up `ConfirmModal` (#31283) (#31291)
-  * Optimize repo-list layout to enhance visual experience (#31272) (#31276)
-  * fixed the dropdown menu for the top New button to expand to the left (#31273) (#31275)
-  * Fix Activity Page Contributors dropdown (#31264) (#31269)
-  * fix: allow actions artifacts storage migration to complete succesfully (#31251) (#31257)
-  * Make blockquote attention recognize more syntaxes (#31240) (#31250)
-  * Remove .segment from .project-column (#31204) (#31239)
-  * Ignore FindRecentlyPushedNewBranches err (#31164) (#31171)
-  * Use vertical layout for multiple code expander buttons (#31122) (#31152)
-  * Remove duplicate `ProxyPreserveHost` in Apache httpd doc (#31143) (#31147)
-  * Improve mobile review ui (#31091) (#31136)
-  * Fix DashboardRepoList margin (#31121) (#31128)
-  * Update pip related commands for docker (#31106) (#31111)
-
-## [1.22.0](https://github.com/go-gitea/gitea/releases/tag/v1.22.0) - 2024-05-27
-
-This release stands as a monumental milestone in our development journey with a record-breaking incorporation of [1528](https://github.com/go-gitea/gitea/pulls?q=is%3Apr+milestone%3A1.22.0+is%3Amerged) pull requests. It marks the most extensive update in Gitea's history, showcasing a plethora of new features and infrastructure improvements.
-
-Noteworthy advancements in this release include the introduction of `HTMX` and `Tailwind`, signaling a strategic shift as we gradually phase out `jquery` and `Fomantic UI`. These changes reflect our commitment to embracing modern technologies and enhancing the user experience.
-
-Key highlights of this release encompass significant changes categorized under `BREAKING`, `FEATURES`, `ENHANCEMENTS`, and `PERFORMANCE`, each contributing to a more robust and efficient Gitea platform.
-
-* BREAKING
-  * Improve reverse proxy documents and clarify the AppURL guessing behavior (#31003) (#31020)
-  * Remember log in for a month by default (#30150)
-  * Breaking summary for template refactoring (#29395)
-    * All custom templates need to follow these changes
-  * Recommend/convert to use case-sensitive collation for MySQL/MSSQL (#28662)
-  * Make offline mode as default to not connect external avatar service by default (#28548)
-  * Include public repos in the doer's dashboard for issue search (#28304)
-  * Use restricted sanitizer for repository description (#28141)
-  * Support storage base path as prefix (#27827)
-  * Enhanced auth token / remember me (#27606)
-  * Rename the default themes to `gitea-light`, `gitea-dark`, `gitea-auto` (#27419)
-    * If you didn't see the new themes, please remove the `[ui].THEMES` config option from `app.ini`
-  * Require MySQL 8.0, PostgreSQL 12, MSSQL 2012 (#27337)
-* FEATURES
-  * Allow everyone to read or write a wiki by a repo unit setting (#30495)
-  * Use raw Wiki links for non-renderable Wiki files (#30273)
-  * Render embedded code preview by permalink in markdown (#30234) (#30249)
-  * Support repo code search without setting up an indexer (#29998)
-  * Support pasting URLs over markdown text (#29566)
-  * Allow to change primary email before account activation (#29412)
-  * Customizable "Open with" applications for repository clone (#29320)
-  * Allow options to disable user deletion from the interface on app.ini (#29275)
-  * Extend issue template YAML engine (#29274)
-  * Add support for `linguist-detectable` and `linguist-documentation` (#29267)
-  * Implement code frequency graph (#29191)
-  * Show commit status for releases (#29149)
-  * Add user blocking (#29028)
-  * Actions Artifacts v4 backend (#28965)
-  * Add merge style `fast-forward-only` (#28954)
-  * Retarget depending pulls when the parent branch is deleted (#28686)
-  * Add global setting on how timestamps should be rendered (#28657)
-  * Implement actions badge SVGs (#28102)
-  * Add skip ci functionality (#28075)
-  * Show latest commit for file (#28067)
-  * Allow to sync tags from the admin dashboard (#28045)
-  * Add Profile Readme for Organisations (#27955)
-  * Implement contributors graph (#27882)
-  * Artifact deletion in actions ui (#27172)
-  * Add API routes to get runner registration token (#27144)
-  * Add support for forking single branch (#25821)
-  * Add support for sha256 repositories (#23894)
-  * Add admin API route for managing user's badges (#23106)
-* ENHANCEMENTS
-  * Make gitea webhooks openproject compatible (#28435) (#31081)
-  * Support using label names when changing issue labels (#30943) (#30958)
-  * Fix various problems around project board view (#30696) (#30902)
-  * Improve context popup rendering (#30824) (#30829)
-  * Allow to save empty comment (#30706)
-  * Prevent allow/reject reviews on merged/closed PRs (#30686)
-  * Initial support for colorblindness-friendly themes (#30625)
-  * Some NuGet package enhancements (#30280) (#30324)
-  * Markup color and font size fixes (#30282) (#30310)
-  * Show 12 lines in markup code preview (#30255) (#30257)
-  * Add `[other].SHOW_FOOTER_POWERED_BY` setting to hide `Powered by` (#30253)
-  * Pulse page improvements (#30149)
-  * Render code tags in commit messages (#30146)
-  * Prevent re-review and dismiss review actions on closed and merged PRs (#30065)
-  * Cancel previous runs of the same PR automatically (#29961)
-  * Drag-and-drop improvements for projects and issue pins (#29875)
-  * Add default board to new projects, remove uncategorized pseudo-board (#29874)
-  * Prevent layout shift in `` items (#29831)
-  * Add skip ci support for pull request title (#29774)
-  * Add more stats tables (#29730)
-  * Update API to return 'source_id' for users (#29718)
-  * Determine fuzziness of bleve indexer by keyword length (#29706)
-  * Expose fuzzy search for issues/pulls (#29701)
-  * Put an edit file button on pull request files to allow a quick operation (#29697)
-  * Fix action runner offline label padding (#29691)
-  * Update allowed attachment types (#29688)
-  * Completely style the webkit autofill (#29683)
-  * Highlight archived labels (#29680)
-  * Add a warning for disallowed email domains (#29658)
-  * Set user's 24h preference from their current OS locale (#29651)
-  * Add setting to disable user features when user login type is not plain (#29615)
-  * Improve natural sort (#29611)
-  * Make wiki default branch name changeable (#29603)
-  * Unify search boxes (#29530)
-  * Add support for API blob upload of release attachments (#29507)
-  * Detect broken git hooks (#29494)
-  * Sync branches to DB immediately when handling git hook calling (#29493)
-  * Allow options to disable user GPG key configuration from the interface on app.ini (#29486)
-  * Allow options to disable user SSH key configuration from the interface on app.ini (#29447)
-  * Use relative links for commits, mentions, and issues in markdown (#29427)
-  * Add ``, rename webcomponents (#29400)
-  * Include resource state events in Gitlab downloads (#29382)
-  * Properly migrate target branch change GitLab comment (#29340)
-  * Recolor dark theme to blue shade (#29283)
-  * Partially enable MSSQL case-sensitive collation support (#29238)
-  * Auto-update the system status in the admin dashboard (#29163)
-  * Integrate alpine `noarch` packages into other architectures index (#29137)
-  * Document how the TOC election process works (#29135)
-  * Tweak repo header (#29134)
-  * Make blockquote border size less aggressive (#29124)
-  * Downscale pasted PNG images based on metadata (#29123)
-  * Show `View at this point in history` for every commit (#29122)
-  * Add support for action artifact serve direct (#29120)
-  * Change webhook-type in create-view (#29114)
-  * Drop "@" from the email sender to avoid spam filters (#29109)
-  * Allow non-admin users to delete review requests (#29057)
-  * Improve user search display name (#29002)
-  * Include username in email headers (#28981)
-  * Show whether a PR is WIP inside popups (#28975)
-  * Also match weakly validated ETags (#28957)
-  * Support nuspec manifest download for Nuget packages (#28921)
-  * Fix hardcoded GitHub icon used as migrated release avatar (#28910)
-  * Propagate install_if and provider_priority to APKINDEX (#28899)
-  * Add artifacts v4 JWT to job message and accept it (#28885)
-  * Enable/disable owner and repo projects independently (#28805)
-  * Add non-JS fallback for reaction tooltips (#28785)
-  * Add the ability to see open and closed issues at the same time (#28757)
-  * Move sign-in labels to be above inputs (#28753)
-  * Display the latest sync time for pull mirrors on the repo page (#28712)
-  * Show in Web UI if the file is vendored and generated (#28620)
-  * Add orphaned topic consistency check (#28507)
-  * Add branch protection setting for ignoring stale approvals (#28498)
-  * Add option to set language in admin user view (#28449)
-  * Fix incorrect run order of action jobs (#28367)
-  * Add missing exclusive in advanced label options (#28322)
-  * Added instance-level variables (#28115)
-  * Add edit option for README.md (#28071)
-  * Fix link to `Code` tab on wiki commits (#28041)
-  * Allow to set explore page default sort (#27951)
-  * Improve PR diff view on mobile (#27883)
-  * Properly migrate automatic merge GitLab comments (#27873)
-  * Display issue task list on project cards (#27865)
-  * Add Index to pull_auto_merge.doer_id (#27811)
-  * Fix display member unit in the menu bar if there are no hidden members in public org (#27795)
-  * List all Debian package versions in `Packages` (#27786)
-  * Allow pull requests Manually Merged option to be used by non-admins (#27780)
-  * Only show diff file tree when more than one file changed (#27775)
-  * Show placeholder email in privacy popup (#27770)
-  * Revamp repo header (#27760)
-  * Add `must-change-password` command line parameter (#27626)
-  * Unify password changing and invalidate auth tokens (#27625)
-  * Add border to file tree 'sub-items' and add padding to 'item-file' (#27593)
-  * Add slow SQL query warning (#27545)
-  * Pre-register OAuth application for tea (#27509)
-  * Differentiate between `push` and `pull` `mirror sync in progress` (#27390)
-  * Link to file from its history (#27354)
-  * Add a shortcut to user's profile page to admin user details (#27299)
-  * Doctor: delete action entries without existing user (#27292)
-  * Show total TrackedTime on issue/pull/milestone lists (#26672)
-  * Don't show the new pull request button when the page is not compare pull (#26431)
-  * Add `Hide/Show all checks` button to commit status check (#26284)
-  * Improvements of releases list and tags list (#25859)
-* PERFORMANCE
-  * Fix package list performance (#30520) (#30616)
-  * Add commit status summary table to reduce query from commit status table (#30223)
-  * Refactor markup/csv: don't read all to memory (#29760)
-  * Lazy load object format with command line and don't do it in OpenRepository (#29712)
-  * Add cache for branch divergence on branch list page (#29577)
-  * Do some performance optimization for issues list and view issue/pull (#29515)
-  * Cache repository default branch commit status to reduce query on commit status table (#29444)
-  * Use `crypto/sha256` (#29386)
-  * Some performance optimization on the dashboard and issues page (#29010)
-  * Add combined index for issue_user.uid and issue_id (#28080)
-
 ## [1.21.11](https://github.com/go-gitea/gitea/releases/tag/v1.21.11) - 2024-04-07
 
 * SECURITY
   * Use go1.21.9 to include Golang security fix
   * Fix possible renderer security problem (#30136) (#30315)
-  * Performance optimization for git push and check permissions for push options (#30104) (#30354)
 * BUGFIXES
   * Fix close file in the Upload func (#30262) (#30269)
   * Fix inline math blocks can't be preceeded/followed by alphanumerical characters (#30175) (#30250)
@@ -1390,10 +18,12 @@ Key highlights of this release encompass significant changes categorized under `
   * Load attachments for code comments (#30124) (#30126)
   * Fix gitea doctor will remove repo-avatar files when executing command storage-archives (#30094) (#30120)
   * Fix possible data race on tests (#30093) (#30108)
+  * Performance optimization for git push (#30104)
   * Fix duplicate migrated milestones (#30102) (#30105)
   * Fix panic for fixBrokenRepoUnits16961 (#30068) (#30100)
-  * Fix incorrect SVGs (#30086) (#30087)
+  * Fix incorrect SVGs (#30087)
   * Fix create commit status (#30225) (#30340)
+  * Performance optimization for git push (#30104) (#30354)
   * Fix misuse of unsupported global variables (#30402)
   * Fix to delete the cookie when AppSubURL is non-empty (#30375) (#30468)
   * Avoid user does not exist error when detecting schedule actions when the commit author is an external user (#30357) (#30408)
@@ -1669,11 +299,11 @@ Key highlights of this release encompass significant changes categorized under `
   * Fix the issue ref rendering for wiki (#28556) (#28559)
   * Fix duplicate ID when deleting repo (#28520) (#28528)
   * Only check online runner when detecting matching runners in workflows (#28286) (#28512)
-  * Initialize stroage for orphaned repository doctor (#28487) (#28490)
+  * Initalize stroage for orphaned repository doctor (#28487) (#28490)
   * Fix possible nil pointer access (#28428) (#28440)
   * Don't show unnecessary citation JS error on UI (#28433) (#28437)
 * DOCS
-  * Update actions document about comparison as Github Actions (#28560) (#28564)
+  * Update actions document about comparsion as Github Actions (#28560) (#28564)
   * Fix documents for "custom/public/assets/" (#28465) (#28467)
 * MISC
   * Fix inperformant query on retrifing review from database. (#28552) (#28562)
@@ -2183,7 +813,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Docs: template variables (#26547)
   * Update index doc (#26455)
   * Update zh-cn documentation (#26406)
-  * Fix typos and grammar problems for actions documentation (#26328)
+  * Fix typos and grammer problems for actions documentation (#26328)
   * Update documentation for 1.21 actions (#26317)
   * Doc update swagger doc for POST /orgs/{org}/teams (#26155)
   * Doc sync authentication.md to zh-cn (#26117)
@@ -2272,7 +902,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Fix incorrect color of selected assignees when create issue (#26324) (#26372)
   * Display human-readable text instead of cryptic filemodes (#26352) (#26358)
   * Hide `last indexed SHA` when a repo could not be indexed yet (#26340) (#26345)
-  * Fix the topic validation rule and support dots (#26286) (#26303)
+  * Fix the topic validation rule and suport dots (#26286) (#26303)
   * Fix due date rendering the wrong date in issue (#26268) (#26274)
   * Don't autosize textarea in diff view (#26233) (#26244)
   * Fix commit compare style (#26209) (#26226)
@@ -2499,7 +1129,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Add dark mode to API Docs (#24971)
   * Display file mode for new file and file mode changes (#24966)
   * Make the 500 page load themes (#24953)
-  * Show `bot` label next to username when rendering author link if the user is a bot (#24943)
+  * Show `bot` label next to username when rendering autor link if the user is a bot (#24943)
   * Repo list improvements, fix bold helper classes (#24935)
   * Improve queue and logger context (#24924)
   * Improve RunMode / dev mode (#24886)
@@ -2894,7 +1524,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Replace `drone exec` to `act_runner exec` in test README.md (#24791)
   * Update packages overview page (#24730)
   * Docs for creating a user to run Gitea on Fedora/RHEL/CentOS (#24725)
-  * Move actions as usage's subdirectory and update comparison zh-cn version (#24719)
+  * Move actions as usage's subdirectory and update comparsion zh-cn version (#24719)
   * Document `redis-cluster` explicitly in config (#24717)
   * Improve reverse-proxy document and fix nginx config bug (#24616)
   * Fix broken `README` link (#24546)
@@ -2972,7 +1602,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Show visibility status of email in own profile (#23900)
   * Refactor authors dropdown (send get request from frontend to avoid long wait time) (#23890)
   * Add self to maintainers (#23644)
-  * Upgrade to npm lockfile v3 and explicitly set it (#23561)
+  * Upgrade to npm lockfile v3 and explicitely set it (#23561)
   * Improve indices for `action` table (#23532)
   * Update JS dependencies, Require Node.js 16 (#23528)
   * Add init file for Ubuntu (#23362)
@@ -3013,7 +1643,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Fix issues list page multiple selection update milestones (#24660) (#24663)
   * Fix: release page for empty or non-existing target (#24659)
   * Fix close org projects (#24588) (#24591)
-  * Refresh the references of the closed PR when reopening (#24231) (#24587)
+  * Refresh the refernce of the closed PR when reopening (#24231) (#24587)
   * Fix the permission of team's `Actions` unit issue (#24536) (#24545)
   * Bump go.etcd.io/bbolt and blevesearch deps (#23062) (#24519)
   * Fix new wiki page mirror (#24518)
@@ -4154,7 +2784,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Feeds: render markdown to html (#19058)
   * Allow users to self-request a PR review (#19030)
   * Allow render HTML with css/js external links (#19017)
-  * Fix script compatible with OpenWrt (#19000)
+  * Fix script compatiable with OpenWrt (#19000)
   * Support ignore all santize for external renderer (#18984)
   * Add note to GPG key response if user has no keys (#18961)
   * Improve Stopwatch behavior (#18930)
@@ -4485,7 +3115,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Update go-org to v1.6.1 (#18932) (#18933)
   * Fix `` html in translation (#18929) (#18931)
   * Fix page and missing return on unadopted repos API (#18848) (#18927)
-  * Allow administrator teams members to see other teams (#18918) (#18919)
+  * Allow adminstrator teams members to see other teams (#18918) (#18919)
   * Don't treat BOM escape sequence as hidden character. (#18909) (#18910)
   * Correctly link URLs to users/repos with dashes, dots or underscores (… (#18908)
   * Fix redirect when using lowercase repo name (#18775) (#18902)
@@ -4833,7 +3463,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Fixed issue merged/closed wording (#17973)
   * Return nicer error for ForcePrivate (#17971)
   * Fix overflow in commit graph (#17947)
-  * Prevent services/mailer/mailer_test.go tests from deleting data directory (#17941)
+  * Prevent services/mailer/mailer_test.go tests from deleteing data directory (#17941)
   * Use disable_form_autofill on Codebase and Gitbucket (#17936)
   * Fix a panic in NotifyCreateIssueComment (caused by string truncation) (#17928)
   * Fix markdown URL parsing (#17924)
@@ -4872,7 +3502,7 @@ Key highlights of this release encompass significant changes categorized under `
   * Fixed emoji alias not parsed in links (#16221)
   * Calculate label URL on API  (#16186)
 * TRANSLATION
-  * Fix misspelling of starred as stared (#17465)
+  * Fix mispelling of starred as stared (#17465)
   * Re-separate the color translation strings (#17390)
   * Enable Malayalam, Greek, Persian, Hungarian & Indonesian by default (#16998)
 * BUILD
@@ -4881,6 +3511,5219 @@ Key highlights of this release encompass significant changes categorized under `
 * MISC
   * Update JS dependencies (#17611)
 
-## Archived releases
+## [1.15.11](https://github.com/go-gitea/gitea/releases/tag/v1.15.11) - 2022-01-29
 
-* [CHANGELOG-archived.md](CHANGELOG-archived.md)
+* SECURITY
+  * Only view milestones from current repo (#18414) (#18418)
+* BUGFIXES
+  * Fix broken when no commits and default branch is not master (#18422) (#18424)
+  * Fix commit's time (#18375) (#18409)
+  * Fix restore without topic failure (#18387) (#18401)
+  * Fix mermaid import in 1.15 (it uses ESModule now) (#18382)
+  * Update to go/text 0.3.7 (#18336)
+* MISC
+  * Upgrade EasyMDE to 2.16.1 (#18278) (#18279)
+
+## [1.15.10](https://github.com/go-gitea/gitea/releases/tag/v1.15.10) - 2022-01-14
+
+* BUGFIXES
+  * Fix inconsistent PR comment counts (#18260) (#18261)
+  * Fix release link broken (#18252) (#18253)
+  * Fix update user from site administration page bug (#18250) (#18251)
+  * Set HeadCommit when creating tags (#18116) (#18173)
+  * Use correct translation key for error messages due to max repo limits (#18135 & #18153) (#18152)
+  * Fix purple color in suggested label colors (#18241) (#18242)
+* SECURITY
+  * Bump mermaid from 8.10.1 to 8.13.8 (#18198) (#18206)
+
+## [1.15.9](https://github.com/go-gitea/gitea/releases/tag/v1.15.9) - 2021-12-30
+
+* BUGFIXES
+  * Fix wrong redirect on org labels (#18128) (#18134)
+  * Fix: unstable sort skips/duplicates issues across pages (#18094) (#18095)
+  * Revert "Fix delete u2f keys bug (#18042)" (#18107)
+  * Migrating wiki don't require token, so we should move it out of the require form (#17645) (#18104)
+  * Prevent NPE if gitea uploader fails to open url (#18080) (#18101)
+  * Reset locale on login (#17734) (#18100)
+  * Correctly handle failed migrations (#17575) (#18099)
+  * Instead of using routerCtx just escape the url before routing (#18086) (#18098)
+  * Quote references to the user table in consistency checks (#18072) (#18073)
+  * Add NotFound handler (#18062) (#18067)
+  * Ensure that git repository is closed before transfer (#18049) (#18057)
+  * Use common sessioner for API and web routes (#18114)
+* TRANSLATION
+  * Fix code search result hint on zh-CN (#18053)
+
+## [1.15.8](https://github.com/go-gitea/gitea/releases/tag/v1.15.8) - 2021-12-20
+
+* BUGFIXES
+  * Move POST /{username}/action/{action} to simply POST /{username} (#18045) (#18046)
+  * Fix delete u2f keys bug (#18040) (#18042)
+  * Reset Session ID on login (#18018) (#18041)
+  * Prevent off-by-one error on comments on newly appended lines (#18029) (#18035)
+  * Stop printing 03d after escaped characters in logs (#18030) (#18034)
+  * Reset locale on login (#18023) (#18025)
+  * Fix reset password email template (#17025) (#18022)
+  * Fix outType on gitea dump (#18000) (#18016)
+  * Ensure complexity, minlength and isPwned are checked on password setting (#18005) (#18015)
+  * Fix rename notification bug (#18011)
+  * Prevent double decoding of % in url params  (#17997) (#18001)
+  * Prevent hang in git cat-file if the repository is not a valid repository (Partial #17991) (#17992)
+  * Prevent deadlock in create issue (#17970) (#17982)
+* TESTING
+  * Use non-expiring key. (#17984) (#17985)
+
+## [1.15.7](https://github.com/go-gitea/gitea/releases/tag/v1.15.7) - 2021-12-01
+
+* ENHANCEMENTS
+  * Only allow webhook to send requests to allowed hosts (#17482) (#17510)
+  * Fix login redirection links (#17451) (#17473)
+* BUGFIXES
+  * Fix database inconsistent when admin change user email (#17549) (#17840)
+  * Use correct user on releases (#17806) (#17818)
+  * Fix commit count in tag view (#17698) (#17790)
+  * Fix close issue but time watcher still running (#17643) (#17761)
+  * Fix Migrate Description (#17692) (#17727)
+  * Fix bug when project board get open issue number (#17703) (#17726)
+  * Return 400 but not 500 when request archive with wrong format (#17691) (#17700)
+  * Fix bug when read mysql database max lifetime (#17682) (#17690)
+  * Fix database deadlock when update issue labels (#17649) (#17665)
+  * Fix bug on detect issue/comment writer (#17592)
+  * Remove appSubUrl from pasted images (#17572) (#17588)
+  * Make `ParsePatch` more robust (#17573) (#17580)
+  * Fix stats upon searching issues (#17566) (#17578)
+  * Escape issue titles in comments list (#17555) (#17556)
+  * Fix zero created time bug on commit api (#17546) (#17547)
+  * Fix database keyword quote problem on migration v161 (#17522) (#17523)
+  * Fix email with + when active (#17518) (#17520)
+  * Stop double encoding blame commit messages (#17498) (#17500)
+  * Quote the table name in CountOrphanedObjects (#17487) (#17488)
+  * Run Migrate in Install rather than just SyncTables (#17475) (#17486)
+* BUILD
+  * Fix golangci-lint warnings (#17598 et al) (#17668)
+* MISC
+  * Preserve color when inverting emojis (#17797) (#17799)
+
+## [1.15.6](https://github.com/go-gitea/gitea/releases/tag/v1.15.6) - 2021-10-28
+
+* BUGFIXES
+  * Prevent panic in serv.go with Deploy Keys (#17434) (#17435)
+  * Fix CSV render error (#17406) (#17431)
+  * Read expected buffer size (#17409) (#17430)
+  * Ensure that restricted users can access repos for which they are members (#17460) (#17464)
+  * Make commit-statuses popup show correctly (#17447) (#17466)
+* TESTING
+  * Add integration tests for private.NoServCommand and private.ServCommand (#17456) (#17463)
+
+## [1.15.5](https://github.com/go-gitea/gitea/releases/tag/v1.15.5) - 2021-10-21
+
+* SECURITY
+  * Upgrade Bluemonday to v1.0.16 (#17372) (#17374)
+  * Ensure correct SSH permissions check for private and restricted users (#17370) (#17373)
+* BUGFIXES
+  * Prevent NPE in CSV diff rendering when column removed (#17018) (#17377)
+  * Offer rsa-sha2-512 and rsa-sha2-256 algorithms in internal SSH (#17281) (#17376)
+  * Don't panic if we fail to parse U2FRegistration data (#17304) (#17371)
+  * Ensure popup text is aligned left (backport for 1.15) (#17343)
+  * Ensure that git daemon export ok is created for mirrors (#17243) (#17306)
+  * Disable core.protectNTFS (#17300) (#17302)
+  * Use pointer for wrappedConn methods (#17295) (#17296)
+  * AutoRegistration is supposed to be working with disabled registration (backport) (#17292)
+  * Handle duplicate keys on GPG key ring (#17242) (#17284)
+  * Fix SVG side by side comparison link (#17375) (#17391)
+
+## [1.15.4](https://github.com/go-gitea/gitea/releases/tag/v1.15.4) - 2021-10-08
+
+* BUGFIXES
+  * Raw file API: don't try to interpret 40char filenames as commit SHA (#17185) (#17272)
+  * Don't allow merged PRs to be reopened (#17192) (#17271)
+  * Fix incorrect repository count on organization tab of dashboard (#17256) (#17266)
+  * Fix unwanted team review request deletion (#17257) (#17264)
+  * Fix broken Activities link in team dashboard (#17255) (#17258)
+  * API pull's head/base have correct permission(#17214) (#17245)
+  * Fix strange behavior of DownloadPullDiffOrPatch in incorrect index (#17223) (#17227)
+  * Upgrade xorm to v1.2.5 (#17177) (#17188)
+  * Fix missing repo link in issue/pull assigned emails (#17183) (#17184)
+  * Fix bug of get context user (#17169) (#17172)
+  * Nicely handle missing user in collaborations (#17049) (#17166)
+  * Add Horizontal scrollbar to inner menu on Chrome (#17086) (#17164)
+  * Fix wrong i18n keys (#17150) (#17153)
+  * Fix Archive Creation: correct transaction ending (#17151)
+  * Prevent panic in Org mode HighlightCodeBlock (#17140) (#17141)
+  * Create doctor command to fix repo_units broken by dumps from 1.14.3-1.14.6 (#17136) (#17137)
+* ENHANCEMENT
+  * Check user instead of organization when creating a repo from a template via API (#16346) (#17195)
+* TRANSLATION
+  * v1.15 fix Sprintf format 'verbs' in locale files (#17187)
+
+## [1.15.3](https://github.com/go-gitea/gitea/releases/tag/v1.15.3) - 2021-09-19
+
+* ENHANCEMENTS
+  * Add fluid to ui container class to remove margin (#16396) (#16976)
+  * Add caller to cat-file batch calls (#17082) (#17089)
+* BUGFIXES
+  * Render full plain readme. (#17083) (#17090)
+  * Upgrade xorm to v1.2.4 (#17059)
+  * Fix bug of migrate comments which only fetch one page (#17055) (#17058)
+  * Do not show issue context popup on external issues (#17050) (#17054)
+  * Decrement Fork Num when converting from Fork (#17035) (#17046)
+  * Correctly rollback in ForkRepository (#17034) (#17045)
+  * Fix missing close in WalkGitLog (#17008) (#17009)
+  * Add prefix to SVG id/class attributes (#16997) (#17000)
+  * Fix bug of migrated repository not index (#16991) (#16996)
+  * Skip AllowedUserVisibilityModes validation on update user if it is an organisation (#16988) (#16990)
+  * Fix storage Iterate bug and Add storage doctor to delete garbage attachments (#16971) (#16977)
+  * Fix issue with issue default mail template (#16956) (#16975)
+  * Ensure that rebase conflicts are handled in updates (#16952) (#16960)
+  * Prevent panic on diff generation (#16950) (#16951)
+
+## [1.15.2](https://github.com/go-gitea/gitea/releases/tag/v1.15.2) - 2021-09-03
+
+* BUGFIXES
+  * Add unique constraint back into issue_index (#16938)
+  * Close storage objects before cleaning (#16934) (#16942)
+
+## [1.15.1](https://github.com/go-gitea/gitea/releases/tag/v1.15.1) - 2021-09-02
+
+* BUGFIXES
+  * Allow BASIC authentication access to /:owner/:repo/releases/download/* (#16916) (#16923)
+  * Prevent leave changes dialogs due to autofill fields (#16912) (#16920)
+  * Ignore review comment when ref commit is missed (#16905) (#16919)
+  * Fix wrong attachment removal (#16915) (#16917)
+  * Gitlab Migrator: dont ignore reactions of last request (#16903) (#16913)
+  * Correctly return the number of Repositories for Organizations (#16807) (#16911)
+  * Test if LFS object is accessible (#16865) (#16904)
+  * Fix git.Blob.DataAsync(): close pipe since we return a NopCloser (#16899) (#16900)
+  * Fix dump and restore respository (#16698) (#16898)
+  * Repare and Improve GetDiffRangeWithWhitespaceBehavior (#16894) (#16895)
+  * Fix wiki raw commit diff/patch view (#16891) (#16892)
+  * Ensure wiki repos are all closed (#16886) (#16888)
+  * List limited and private orgs if authenticated on API (#16866) (#16879)
+  * Simplify split diff view generation and remove JS dependency (#16775) (#16863)
+  * Ensure that the default visibility is set on the user create page (#16845) (#16862)
+  * In Render tolerate not being passed a context (#16842) (#16858)
+  * Upgrade xorm to v1.2.2 (#16663) & Add test to ensure that dumping of login sources remains correct (#16847) (#16848)
+  * Report the correct number of pushes on the feeds (#16811) (#16822)
+  * Add primary_key to issue_index (#16813) (#16820)
+  * Prevent NPE on empty commit (#16812) (#16819)
+  * Fix branch pagination error (#16805) (#16816)
+  * Add missing return to handleSettingRemoteAddrError (#16794) (#16795)
+  * Remove spurious / from issues.opened_by (#16793)
+  * Ensure that template compilation panics are sent to the logs (#16788) (#16792)
+  * Update caddyserver/certmagic (#16789) (#16790)
+
+## [1.15.0](https://github.com/go-gitea/gitea/releases/tag/v1.15.0) - 2021-08-21
+
+* BREAKING
+  * Make app.ini permissions more restrictive (#16266)
+  * Refactor Webhook + Add X-Hub-Signature (#16176)
+  * Add asymmetric JWT signing (#16010)
+  * Clean-up the settings hierarchy for issue_indexer queue (#16001)
+  * Change default queue settings to be low go-routines (#15964)
+  * Improve assets handler middleware (#15961)
+  * Rename StaticUrlPrefix to AssetUrlPrefix (#15779)
+  * Use a generic markup class to display externally rendered files and diffs (#15735)
+  * Add frontend testing, require node 12 (#15315)
+  * Move (custom) assets into subpath `/assets` (#15219)
+  * Use level config in log section when sub log section not set level (#15176)
+  * Links in markdown should be absolute to the repository not the server (#15088)
+  * Upgrade to the latest version of golang-jwt (#16590) (#16606)
+  * Set minimum supported version of go to 1.16 (#16710)
+* SECURITY
+  * Encrypt LDAP bind password in db with SECRET_KEY (#15547)
+  * Remove random password in Dockerfiles (#15362)
+  * Upgrade to the latest version of golang-jwt and increase minimum go to 1.15 (#16590) (#16606)
+  * Correctly create of git-daemon-export-ok files (#16508) (#16514)
+  * Don't show private user's repo in explore view (#16550) (#16554)
+  * Update node tar dependency to 6.1.6 (#16622) (#16623)
+* FEATURES
+  * Update Go-Git to take advantage of LargeObjectThreshold (#16316)
+  * Support custom mime type mapping for text files (#16304)
+  * Link to previous blames in file blame page (#16259)
+  * Add LRU mem cache implementation (#16226)
+  * Localize Email Templates (#16200)
+  * Make command in authorized keys a template (#16003)
+  * Add possibility to make branch in branch page (#15960)
+  * Add email headers (#15939)
+  * Make tasklist checkboxes clickable (#15791)
+  * Add selecting tags on the compare page (#15723)
+  * Add cron job to delete old actions from database (#15688)
+  * On open repository open common cat file batch and batch-check (#15667)
+  * Add tag protection (#15629)
+  * Add push to remote mirror repository (#15157)
+  * Add Image Diff for SVG files (#14867)
+  * Add dashboard milestone search and repo milestone search by name. (#14866)
+  * Add LFS Migration and Mirror (#14726)
+  * Improve notifications for WIP draft PR's (#14663)
+  * Disable Stars config option (#14653)
+  * GPG Key Ownership verification with Signed Token (#14054)
+  * OAuth2 auto-register (#5123)
+* API
+  * Return updated repository when changing repository using API (#16420)
+  * Let branch/tag name be a valid ref to get CI status (#16400)
+  * Add endpoint to get commits of PR (#16300)
+  * Allow COMMENT reviews to not specify a body (#16229)
+  * Add subject-type filter to list notification API endpoints (#16177)
+  * ListReleases add filter for draft and pre-releases (#16175)
+  * ListIssues add more filters (#16174)
+  * Issue Search Add filter for MilestoneNames (#16173)
+  * GET / SET User Settings (#16169)
+  * Expose repo.GetReviewers() & repo.GetAssignees() (#16168)
+  * User expose counters (#16167)
+  * Add repoGetTag (#16166)
+  * Add repoCreateTag (#16165)
+  * Creating a repo from a template repo via API (#15958)
+  * Add Active and ProhibitLogin to API (#15689)
+  * Add Location, Website and Description to API (#15675)
+  * Expose resolver via API (#15167)
+  * Swagger AccessToken fixes (#16574) (#16597)
+  * Set AllowedHeaders on API CORS handler (#16524) (#16618)
+* ENHANCEMENTS
+  * Support HTTP/2 in Let's Encrypt (#16371)
+  * Introduce NotifySubjectType (#16320)
+  * Add forge emojies (#16296)
+  * Implemented head_commit for webhooks (#16282)
+  * Upgrade Gliderlabs SSH to 0.3.3 and add FailedConnectionCallback (#16278)
+  * Add previous/next buttons to review comments (#16273)
+  * Review comments: break-word for long file names (#16272)
+  * Add configuration to restrict allowed user visibility modes (#16271)
+  * Add scroll-margin-top to account for sticky header (#16269)
+  * Add --quiet and --verbose to gitea web to control initial logging (#16260)
+  * Use gitea logging module for git module (#16243)
+  * Add tests for all webhooks (#16214)
+  * Add button to delete undeleted repositories from failed migrations (#16197)
+  * Speed up git diff highlight generation (#16180)
+  * Add OpenID claims "profile" and "email". (#16141)
+  * Reintroduce squash merge default comment as a config setting (#16134)
+  * Add sanitizer rules per renderer (#16110)
+  * Improve performance of dashboard list orgs (#16099)
+  * Refactor assert statements in tests (#16089)
+  * Add sso.Group, context.Auth, context.APIAuth to allow auth special routes (#16086)
+  * Remove unnecessary goroutine (#16080)
+  * Add attachments for PR reviews (#16075)
+  * Make the github migration less rate limit waiting to get comment per page from repository but not per issue (#16070)
+  * Add Visible modes function from Organisation to Users too (#16069)
+  * Add checkbox to delete pull branch after successful merge (#16049)
+  * Make commit info cancelable (#16032)
+  * Make modules/context.Context a context.Context (#16031)
+  * Unified custom config creation (#16012)
+  * Make sshd_config more flexible regarding connections (#16009)
+  * Append to existing trailers in generated squash commit message (#15980)
+  * Always store primary email address into email_address table and also the state (#15956)
+  * Load issue/PR context popup data only when needed (#15955)
+  * Remove remaining fontawesome usage in templates (#15952)
+  * Remove fomantic accordion module (#15951)
+  * Small refactoring of modules/private (#15947)
+  * Double the avatar size factor (#15941)
+  * Add curl to rootless docker image (#15908)
+  * Replace clipboard.js with async clipboard api (#15899)
+  * Allow custom highlight mapping beyond file extensions (#15808)
+  * Add trace logging to SSO methods (#15803)
+  * Refactor routers directory (#15800)
+  * Allow only internal registration (#15795)
+  * Add a new internal hook to save ssh log (#15787)
+  * Respect default merge message syntax when parsing item references (#15772)
+  * OAuth2 login: Set account link to "login" as default behavior (#15768)
+  * Use single shared random string generation function (#15741)
+  * Hold the event source when there are no listeners (#15725)
+  * Code comments improvements (#15722)
+  * Provide OIDC compliant user info endpoint (#15721)
+  * Fix webkit calendar icon color on arc-green (#15713)
+  * Improve Light Chroma style (#15699)
+  * Only use boost workers for leveldb shadow queues (#15696)
+  * Add compare tag dropdown to releases page (#15695)
+  * Add caret styling CSS (#15651)
+  * Remove x-ua-compatible meta tag (#15640)
+  * Refactor of link creation (#15619)
+  * Add a new table issue_index to store the max issue index so that issue could be deleted with no duplicated index (#15599)
+  * Rewrite of the LFS server (#15523)
+  * Display more repository type on admin repository management (#15440)
+  * Remove usage of some JS globals (#15378)
+  * SHA in merged commit comment should be rendered ui sha (#15376)
+  * Add well-known config for OIDC (#15355)
+  * Use route rather than use thus reducing the number of stack frames (#15301)
+  * Code Formats, Nits & Unused Func/Var deletions (#15286)
+  * Let package git depend on setting but not opposite (#15241)
+  * Fixed sanitize errors (#15240)
+  * response simple text message for not html request when 404 (#15229)
+  * Remove file-loader dependency (#15196)
+  * Refactor renders (#15175)
+  * Add mimetype mapping settings (#15133)
+  * Add Status Updates whilst Gitea migrations are occurring (#15076)
+  * Reload locales in initialisation if needed by utilizing i18n.Reset (#15073)
+  * Counterwork seemingly unclickable repo button labels (#15064)
+  * Add DefaultMergeStyle option to repository (#14789)
+  * Added support for gopher URLs. (#14749)
+  * Rework repository archive (#14723)
+  * Add links to toggle WIP status (#14677)
+  * Add Tabular Diff for CSV files (#14661)
+  * Use milestone deadline when sorting issues (#14551)
+* BUGFIXES
+  * Fix invalid params and typo of email templates (#16394)
+  * Fix activation of primary email addresses (#16385)
+  * Fix calculation for finalPage in repo-search component (#16382)
+  * Specify user in rootless container numerically (#16361)
+  * Detect encoding changes while parsing diff (#16330)
+  * Fix U2F error reasons always hidden (#16327)
+  * Prevent zombie processes (#16314)
+  * Escape reference to `user` table in models.SearchEmails (#16313)
+  * Fix default push instructions on empty repos (#16302)
+  * Fix modified files list in webhooks when there is a space (#16288)
+  * Fix webhook commits wrong hash on HEAD reset (#16283)
+  * Fuzzer finds an NPE due to incorrect URLPrefix (#16249)
+  * Don't WARN log UserNotExist errors on ExternalUserLogin failure (#16238)
+  * Do not show No match found for tribute (#16231)
+  * Fix "Copy Link" for pull requests (#16230)
+  * Fix diff expansion is missing final line in a file (#16222)
+  * Fix private repo permission problem (#16142)
+  * Fix not able to update local created non-urlencoded wiki pages (#16139)
+  * More efficiently parse shas for shaPostProcessor (#16101)
+  * Fix `doctor --run check-db-consistency --fix` with label fix (#16094)
+  * Prevent webhook action buttons from shifting (#16087)
+  * Change default TMPDIR path in rootless containers (#16077)
+  * Fix typo and add TODO notice (#16064)
+  * Use git log name-status in get last commit (#16059)
+  * Fix 500 Error with branch and tag sharing the same name (#16040)
+  * Fix get tag when migration (#16014)
+  * Add custom emoji support (#16004)
+  * Use filepath.ToSlash and Join in indexer defaults and queues (#15971)
+  * Add permission check for ``GenerateRepository`` (#15946)
+  * Ensure settings for Service and Mailer are read on the install page (#15943)
+  * Fix layout of milestone view (#15927)
+  * Unregister non-matching serviceworkers (#15834)
+  * Multiple Queue improvements: LevelDB Wait on empty, shutdown empty shadow level queue, reduce goroutines etc (#15693)
+  * Attachment support repository route (#15580)
+  * Fix missing icons and colorpicker when mounted on suburl (#15501)
+  * Create a session on ReverseProxy and ensure that ReverseProxy users cannot change username (#15304)
+  * Prevent double-login for Git HTTP and LFS and simplify login (#15303)
+  * Resolve Object { type: "error", data: undefined } in stopwatch.js (#15278)
+  * Fix heatmap activity (#15252)
+  * Remove vendored copy of fomantic-dropdown (#15193)
+  * Update repository size on cron gc task (#15177)
+  * Add NeedPostProcess for Parser interface to improve performance of csv parser and some external parser (#15153)
+  * Add code block highlight to orgmode back (#14222)
+  * Remove User.GetOrganizations() (#14032)
+  * Restore Accessibility for Dropdown (#16576) (#16617)
+  * Pass down SignedUserName down to AccessLogger context (#16605) (#16616)
+  * Fix table alignment in markdown (#16596) (#16602)
+  * Fix 500 on first wiki page (#16586) (#16598)
+  * Lock goth/gothic and Re-attempt OAuth2 registration on login if registration failed at startup (#16564) (#16570)
+  * Upgrade levelqueue to v0.4.0 (#16560) (#16561)
+  * Handle too long PR titles correctly (#16517) (#16549)
+  * Fix data race in bleve indexer (#16474) (#16509)
+  * Restore CORS on git smart http protocol (#16496) (#16506)
+  * Fix race in log (#16490) (#16505)
+  * Fix prepareWikiFileName to respect existing unescaped files (#16487) (#16498)
+  * Make cancel from CatFileBatch and CatFileBatchCheck wait for the command to end (#16479) (#16480)
+  * Update notification table with only latest data (#16445) (#16469)
+  * Fix crash following ldap authentication update (#16447) (#16448)
+  * Fix direct creation of external users on admin page (partial #16612) (#16613)
+  * Prevent 500 on draft releases without tag (#16634) (#16636)
+  * Restore creation of git-daemon-export-ok files (#16508) (#16514)
+  * Fix data race in bleve indexer (#16474) (#16509)
+  * Restore CORS on git smart http protocol (#16496) (#16506)
+  * Fix race in log (#16490) (#16505)
+  * Fix prepareWikiFileName to respect existing unescaped files (#16487) (#16498)
+  * Make cancel from CatFileBatch and CatFileBatchCheck wait for the command to end (#16479) (#16480)
+  * Update notification table with only latest data (#16445) (#16469)
+  * Fix crash following ldap authentication update (#16447) (#16448)
+  * Restore compatibility with SQLServer 2008 R2 in migrations (#16638)
+  * Fix direct creation of external users on admin page (#16613)
+  * Fix go-git implementation of GetNote when passed a non-existent commit (#16658) (#16659)
+  * Fix NPE in fuzzer (#16680) (#16682)
+  * Set issue_index when finishing migration (#16685) (#16687)
+  * Skip patch download when no patch file exists (#16356) (#16681)
+  * Ensure empty lines are copiable and final new line too (#16678) (#16692)
+  * Fix wrong user in OpenID response (#16736) (#16741)
+  * Do not use thin scrollbars on Firefox (#16738) (#16745)
+  * Recreate Tables should Recreate indexes on MySQL (#16718) (#16739)
+  * Keep attachments on tasklist update (#16750) (#16757)
+* TESTING
+  * Bump `postgres` and `mysql` versions (#15710)
+  * Add tests for clone from wiki (#15513)
+  * Fix Benchmark tests, remove a broken one & add two new  (#15250)
+  * Create Proper Migration tests (#15116)
+* TRANSLATION
+  * Use a special name for update default branch on repository setting (#15893)
+  * Fix mirror_lfs source string in en-US locale (#15369)
+* BUILD
+  * Upgrade xorm to v1.1.1 (#16339)
+  * Disable legal comments in esbuild (#15929)
+  * Switch to Node 16 to build fronted  (#15804)
+  * Use esbuild to minify CSS (#15756)
+  * Use binary version of revive linter (#15739)
+  * Fix: npx webpack make: *** [Makefile:699: public/js/index.js] Error -… (#15465)
+  * Stop packaging node_modules in release tarballs (#15273)
+  * Introduce esbuild on webpack (#14578)
+* DOCS
+  * Update queue workers documentation (#15999)
+  * Comment out app.example.ini (#15807)
+  * Improve logo customization docs (#15754)
+  * Add some response status on api docs (#15399)
+  * Rework Token API comments (#15162)
+  * Add better errors for disabled account recovery (#15117)
+* MISC
+  * Remove utf8 option from installation page (#16126)
+  * Use Wants= over Requires= in systemd file (#15897)
+
+## [1.14.7](https://github.com/go-gitea/gitea/releases/tag/v1.14.7) - 2021-09-02
+
+* BUGFIXES
+  * Add missing gitRepo close at GetDiffRangeWithWhitespaceBehavior (Partial #16894) (#16896)
+  * Fix wiki raw commit diff/patch view (#16891) (#16893)
+  * Ensure wiki repos are all closed (#16886) (#16889)
+  * Upgrade xorm to v1.2.2 (#16663) & Add test to ensure that dumping of login sources remains correct (#16847) (#16849)
+  * Recreate Tables should Recreate indexes on MySQL (#16718) (#16740)
+
+## [1.14.6](https://github.com/go-gitea/gitea/releases/tag/v1.14.6) - 2021-08-04
+
+* SECURITY
+  * Bump github.com/markbates/goth from v1.67.1 to v1.68.0 (#16538) (#16540)
+  * Switch to maintained JWT lib (#16532) (#16535)
+  * Upgrade to latest version of golang-jwt (as forked for 1.14) (#16590) (#16607)
+* BUGFIXES
+  * Add basic edit ldap auth test & actually fix #16252 (#16465) (#16495)
+  * Make cancel from CatFileBatch and CatFileBatchCheck wait for the command to end (#16479) (#16481)
+
+## [1.14.5](https://github.com/go-gitea/gitea/releases/tag/v1.14.5) - 2021-07-16
+
+* SECURITY
+  * Hide mirror passwords on repo settings page (#16022) (#16355)
+  * Update bluemonday to v1.0.15 (#16379) (#16380)
+* BUGFIXES
+  * Retry rename on lock induced failures (#16435) (#16439)
+  * Validate issue index before querying DB (#16406) (#16410)
+  * Fix crash following ldap authentication update (#16447) (#16449)
+* ENHANCEMENTS
+  * Redirect on bad CSRF instead of presenting bad page (#14937) (#16378)
+
+## [1.14.4](https://github.com/go-gitea/gitea/releases/tag/v1.14.4) - 2021-07-06
+
+* BUGFIXES
+  * Fix relative links in postprocessed images (#16334) (#16340)
+  * Fix list_options GetStartEnd (#16303) (#16305)
+  * Fix API to use author for commits instead of committer (#16276) (#16277)
+  * Handle misencoding of login_source cfg in mssql (#16268) (#16275)
+  * Fixed issues not updated by commits (#16254) (#16261)
+  * Improve efficiency in FindRenderizableReferenceNumeric and getReference (#16251) (#16255)
+  * Use html.Parse rather than html.ParseFragment (#16223) (#16225)
+  * Fix milestone counters on new issue (#16183) (#16224)
+  * reqOrgMembership calls need to be preceded by reqToken (#16198) (#16219)
+
+## [1.14.3](https://github.com/go-gitea/gitea/releases/tag/v1.14.3) - 2021-06-18
+
+* SECURITY
+  * Encrypt migration credentials at rest (#15895) (#16187)
+  * Only check access tokens if they are likely to be tokens (#16164) (#16171)
+  * Add missing SameSite settings for the i_like_gitea cookie (#16037) (#16039)
+  * Fix setting of SameSite on cookies (#15989) (#15991)
+* API
+  * Repository object only count releases as releases (#16184) (#16190)
+  * EditOrg respect RepoAdminChangeTeamAccess option (#16184) (#16190)
+  * Fix overly strict edit pr permissions (#15900) (#16081)
+* BUGFIXES
+  * Run processors on whole of text (#16155) (#16185)
+  * Class `issue-keyword` is being incorrectly stripped off spans (#16163) (#16172)
+  * Fix language switch for install page (#16043) (#16128)
+  * Fix bug on getIssueIDsByRepoID (#16119) (#16124)
+  * Set self-adjusting deadline for connection writing (#16068) (#16123)
+  * Fix http path bug (#16117) (#16120)
+  * Fix data URI scramble (#16098) (#16118)
+  * Merge all deleteBranch as one function and also fix bug when delete branch don't close related PRs (#16067) (#16097)
+  * git migration: don't prompt interactively for clone credentials (#15902) (#16082)
+  * Fix case change in ownernames (#16045) (#16050)
+  * Don't manipulate input params in email notification (#16011) (#16033)
+  * Remove branch URL before IssueRefURL (#15968) (#15970)
+  * Fix layout of milestone view (#15927) (#15940)
+  * GitHub Migration, migrate draft releases too (#15884) (#15888)
+  * Close the gitrepo when deleting the repository (#15876) (#15887)
+  * Upgrade xorm to v1.1.0 (#15869) (#15885)
+  * Fix blame row height alignment (#15863) (#15883)
+  * Fix error message when saving generated LOCAL_ROOT_URL config (#15880) (#15882)
+  * Backport Fix LFS commit finder not working (#15856) (#15874)
+  * Stop calling WriteHeader in Write (#15862) (#15873)
+  * Add timeout to writing to responses (#15831) (#15872)
+  * Return go-get info on subdirs (#15642) (#15871)
+  * Restore PAM user autocreation functionality (#15825) (#15867)
+  * Fix truncate utf8 string (#15828) (#15854)
+  * Fix bound address/port for caddy's certmagic library (#15758) (#15848)
+  * Upgrade unrolled/render to v1.1.1 (#15845) (#15846)
+  * Queue manager FlushAll can loop rapidly - add delay (#15733) (#15840)
+  * Tagger can be empty, as can Commit and Author - tolerate this (#15835) (#15839)
+  * Set autocomplete off on branches selector (#15809) (#15833)
+  * Add missing error to Doctor log (#15813) (#15824)
+  * Move restore repo to internal router and invoke from command to avoid open the same db file or queues files (#15790) (#15816)
+* ENHANCEMENTS
+  * Removable media support to snap package (#16136) (#16138)
+  * Move sans-serif fallback font higher than emoji fonts (#15855) (#15892)
+* DOCKER
+  * Only write config in environment-to-ini if there are changes (#15861) (#15868)
+  * Only offer hostcertificates if they exist (#15849) (#15853)
+
+## [1.14.2](https://github.com/go-gitea/gitea/releases/tag/v1.14.2) - 2021-05-09
+
+* API
+  * Make change repo settings work on empty repos (#15778) (#15789)
+  * Add pull "merged" notification subject status to API (#15344) (#15654)
+* BUGFIXES
+  * Ensure that ctx.Written is checked after issues(...) calls (#15797) (#15798)
+  * Use pulls in commit graph unless pulls are disabled (#15734 & #15740 & #15774) (#15775)
+  * Set GIT_DIR correctly if it is not set (#15751) (#15769)
+  * Fix bug where repositories appear unadopted (#15757) (#15767)
+  * Not show `ref-in-new-issue` pop when issue was disabled (#15761) (#15765)
+  * Drop back to use IsAnInteractiveSession for SVC (#15749) (#15762)
+  * Fix setting version table in dump (#15753) (#15759)
+  * Fix close button change on delete in simplemde area (#15737) (#15747)
+  * Defer closing the gitrepo until the end of the wrapped context functions (#15653) (#15746)
+  * Fix some ui bug about draft release (#15137) (#15745)
+  * Only log Error on getLastCommitStatus error to let pull list still be visible (#15716) (#15715)
+  * Move tooltip down to allow selection of Remove File on error (#15672) (#15714)
+  * Fix setting redis db path (#15698) (#15708)
+  * Fix DB session cleanup (#15697) (#15700)
+  * Fixed several activation bugs (#15473) (#15685)
+  * Delete references if repository gets deleted (#15681) (#15684)
+  * Fix orphaned objects deletion bug (#15657) (#15683)
+  * Delete protected branch if repository gets removed (#15658) (#15676)
+  * Remove spurious set name from eventsource.sharedworker.js (#15643) (#15652)
+  * Not update updated uinx for `git gc` (#15637) (#15641)
+  * Fix commit graph author link (#15627) (#15630)
+  * Fix webhook timeout bug (#15613) (#15621)
+  * Resolve panic on failed interface conversion in migration v156 (#15604) (#15610)
+  * Fix missing storage init (#15589) (#15598)
+  * If the default branch is not present do not report error on stats indexing (#15546 & #15583) (#15594)
+  * Fix lfs management find (#15537) (#15578)
+  * Fix NPE on view commit with notes (#15561) (#15573)
+  * Fix bug on commit graph (#15517) (#15530)
+  * Send size to /avatars if requested (#15459) (#15528)
+  * Prevent migration 156 failure if tag commit missing (#15519) (#15527)
+* ENHANCEMENTS
+  * Display conflict-free merge messages for pull requests (#15773) (#15796)
+  * Exponential Backoff for ByteFIFO (#15724) (#15793)
+  * Issue list alignment tweaks (#15483) (#15766)
+  * Implement delete release attachments and update release attachments' name (#14130) (#15666)
+  * Add placeholder text to deploy key textarea (#15575) (#15576)
+  * Project board improvements (#15429) (#15560)
+  * Repo branch page: label size, PR ref, new PR button alignment (#15363) (#15365)
+* MISC
+  * Fix webkit calendar icon color on arc-green (#15713) (#15728)
+  * Performance improvement for last commit cache and show-ref (#15455) (#15701)
+  * Bump unrolled/render to v1.1.0 (#15581) (#15608)
+  * Add ETag header (#15370) (#15552)
+
+## [1.14.1](https://github.com/go-gitea/gitea/releases/tag/v1.14.1) - 2021-04-15
+
+* BUGFIXES
+  * Fix bug clone wiki (#15499) (#15502)
+  * Github Migration ignore rate limit, if not enabled (#15490) (#15495)
+  * Use subdir for URL (#15446) (#15493)
+  * Query the DB for the hash before inserting in to email_hash (#15457) (#15491)
+  * Ensure review dismissal only dismisses the correct review (#15477) (#15489)
+  * Use index of the supported tags to choose user lang (#15452) (#15488)
+  * Fix wrong file link in code search page (#15466) (#15486)
+  * Quick template fix for built-in SSH server in admin config (#15464) (#15481)
+  * Prevent superfluous response.WriteHeader (#15456) (#15476)
+  * Fix ambiguous argument error on tags (#15432) (#15474)
+  * Add created_unix instead of expiry to migration (#15458) (#15463)
+  * Fix repository search (#15428) (#15442)
+  * Prevent NPE on avatar direct rendering if federated avatars disabled (#15434) (#15439)
+  * Fix wiki clone urls (#15430) (#15431)
+  * Fix dingtalk icon url at webhook (#15417) (#15426)
+  * Standardise icon on projects PR page (#15387) (#15408)
+* ENHANCEMENTS
+  * Add option to skip LFS/attachment files for `dump` (#15407) (#15492)
+  * Clone panel fixes (#15436)
+  * Use semantic dropdown for code search query type (#15276) (#15364)
+* BUILD
+  * Build go-git variants for windows (#15482) (#15487)
+  * Lock down build-images dependencies (Partial #15479) (#15480)
+* MISC
+  * Performance improvement for list pull requests (#15447) (#15500)
+  * Fix potential copy lfs records failure when fork a repository (#15441) (#15485)
+
+## [1.14.0](https://github.com/go-gitea/gitea/releases/tag/v1.14.0) - 2021-04-11
+
+* SECURITY
+  * Respect approved email domain list for externally validated user registration (#15014)
+  * Add reverse proxy configuration support for remote IP address detection (#14959)
+  * Ensure validation occurs on clone addresses too (#14994)
+  * Fix several render issues highlighted during fuzzing (#14986)
+* BREAKING
+  * Fix double 'push tag' action feed (#15078) (#15083)
+  * Remove possible resource leak (#15067) (#15082)
+  * Handle unauthorized user events gracefully (#15071) (#15074)
+  * Restore Access.log following migration to Chi framework (Stops access logging of /api/internal routes) (#14475)
+  * Migrate from Macaron to Chi framework (#14293)
+  * Deprecate building for mips (#14174)
+  * Consolidate Logos and update README header (#14136)
+  * Inline manifest.json (#14038)
+  * Store repository data in data path if not previously set (#13991)
+  * Rename "gitea" png to "logo" (#13974)
+  * Standardise logging of failed authentication attempts in internal SSH (#13962)
+  * Add markdown support in organization description (#13549)
+  * Improve users management through the CLI (#6001) (#10492)
+* FEATURES
+  * Create a new issue with reference to lines of code from file view (#14863)
+  * Repository transfer has to be confirmed, if user can not create repo for new owner (#14792)
+  * Allow blocking some email domains from registering an account (#14667)
+  * Create a new issue based on reference to an issue comment (#14366)
+  * Add support to migrate from gogs (#14342)
+  * Add pager to the branches page (#14202)
+  * Minimal OpenID Connect implementation (#14139)
+  * Display current stopwatch in navbar (#14122)
+  * Display SVG files as images instead of text (#14101)
+  * Disable SSH key deletion of externally managed Keys (#13985)
+  * Add support for ed25519_sk and ecdsa_sk SSH keys (#13462)
+  * Add support for Mastodon OAuth2 provider (#13293)
+  * Add gitea sendmail command (#13079)
+  * Create DB session provider(based on xorm) (#13031)
+  * Add dismiss review feature (#12674)
+  * Make manual merge autodetection optional and add manual merge as merge method (#12543)
+  * Dump github/gitlab/gitea repository data to a local directory and restore to gitea (#12244)
+  * Create Rootless Docker image (#10154)
+* API
+  * Speedup issue search (#15179) (#15192)
+  * Get pull, return head branch sha, even if deleted (#14931)
+  * Export LFS & TimeTracking function status (#14753)
+  * Show Gitea version in swagger (#14654)
+  * Fix PATCH /repos/{owner}/{repo} panic (#14637)
+  * Add Restricted Field to User (#14630)
+  * Add support for ref parameter to get raw file API (#14602)
+  * Add affected files of commits to commit struct (#14579)
+  * Fix CJK fonts again and misc. font issues (#14575)
+  * Add delete release by tag & delete tag (#14563) & (#13358)
+  * Add pagination to ListBranches (#14524)
+  * Add signoff option in commit form (#14516)
+  * GetRelease by tag only return release (#14397)
+  * Add MirrorInterval to the API (#14163)
+  * Make BasicAuth Prefix case insensitive (#14106)
+  * Add user filter to issueTrackedTimes, enable usage for issue managers (#14081)
+  * Add ref to create/edit issue options & deprecated assignee (#13992)
+  * Add Ref to Issue (#13946)
+  * Expose default theme in meta and API (#13809)
+  * Send error message when CSRF token is missing (#13676)
+  * List, Check, Add & delete endpoints for repository teams (#13630)
+  * Admin EditUser: Make FullName, Email, Website & Location optional (#13562)
+  * Add more filters to issues search (#13514)
+  * Add review request api (#11355)
+* BUGFIXES
+  * Fix delete nonexist oauth application 500 and prevent deadlock (#15384) (#15396)
+  * Always set the merge base used to merge the commit (#15352) (#15385)
+  * Upgrade to bluemonday 1.0.7 (#15379) (#15380)
+  * Turn RepoRef and RepoAssignment back into func(*Context) (#15372) (#15377)
+  * Move FCGI req.URL.Path fix-up to the FCGI listener (#15292) (#15361)
+  * Show diff on rename with diff changes (#15338) (#15339)
+  * Fix handling of logout event (#15323) (#15337)
+  * Fix CanCreateRepo check (#15311) (#15321)
+  * Fix xorm log stack level (#15285) (#15316)
+  * Fix bug in Wrap (#15302) (#15309)
+  * Drop the event source if we are unauthorized (#15275) (#15280)
+  * Backport Fix graph pagination (#15225)  (#15249)
+  * Prevent NPE in CommentMustAsDiff if no hunk header (#15199) (#15200)
+  * should run RetrieveRepoMetas() for empty pr (#15187) (#15190)
+  * Move setting to enable closing issue via commit in non default branch to repo settings (#14965)
+  * Show correct issues for team dashboard (#14952)
+  * Ensure that new pull request button works on forked forks owned by owner of the root and reduce ambiguity (#14932)
+  * Only allow issue labels from owner repository or organization (#14928)
+  * Fix alignment of People and Teams right arrow on org homepage (#14924)
+  * Fix overdue marking of closed issues and milestones (#14923)
+  * Prevent panic when empty MilestoneID in repo/issue/list (#14911)
+  * Fix migration context data (#14910)
+  * Handle URLs with trailing slash (#14852)
+  * Add CORS config on to /login/oauth/access_token endpoint (#14850)
+  * Make searching issues by keyword case insensitive on DB (#14848)
+  * Prevent use of double sub-path and incorrect asset path in manifest (#14827)
+  * Fix link account ui (#14763)
+  * Fix preview status switch button on wiki editor (#14742)
+  * Fix github download on migration (#14703)
+  * Fix svg spacing (#14638)
+  * Prevent adding nil label to .AddedLabels or .RemovedLabels (#14623)
+  * Truncated organizations name (#14615)
+  * Exclude the current dump file from the dump (#14606)
+  * Use OldRef instead of CommitSHA for DeleteBranch comments (#14604)
+  * Ensure memcache caching works when TTL greater than 30 days (#14592)
+  * Remove NULs byte arrays passed to PostProcess (#14587)
+  * Restore detection of branches are equal on compare page (#14586)
+  * Fix incorrect key name so registerManualConfirm works (#14455)
+  * Fix close/reopen with comment (#14436)
+  * Allow passcode invalid error to appear (#14371)
+  * Escape branch names in compare url (#14364)
+  * Label and milestone webhooks on issue/pull creation (#14363)
+  * Handle NotifyCreateRef as create branch in feeds (#14245)
+  * Prevent clipping input text in Chrome + Segoe UI Font (#14179)
+  * Fix UI on edit auth source page (#14137)
+  * Fix git.parseTagData (#14105)
+  * Refactor get tag to remove unnecessary steps (#14058)
+  * Fix integrations test error with space in CURDIR path (#14056)
+  * Dropdown triangle fixes (#14028)
+  * Fix label of --id in admin delete user (#14005)
+  * Cause NotifyMigrateRepository to emit a repo create webhook (#14004)
+  * Update HEAD to match defaultBranch in template generation (#13948)
+  * Fix action avatar loading (#13909)
+  * Fix issue participants (#13893)
+  * Fix avatar template error (#13833)
+  * Fix review request notification email links when external issue tracker is enabled (#13723)
+  * Fix blame line alignment (#13542)
+  * Include OriginalAuthor in Reaction constraint (#13505)
+  * Comments on review should have the same sha (#13448)
+  * Fix whitespace rendering in diff (#13415)
+  * Fixed git args duplication (#13411)
+  * Fix bug on release publisherid migrations (#13410)
+  * Fix --port setting (#13288)
+  * Keep database transactions not too big (#13254)
+  * Git version check, ignore pre-releases constraints (#13234)
+  * Handle and propagate errors when checking if paths are Dirs, Files or Exist (#13186)
+  * Update Mirror IsEmpty status on synchronize (#13185)
+  * Use GO variable in go-check target (#13146) (#13147)
+* ENHANCEMENTS
+  * UI style improvements
+  * Dropzone styling improvements (#15291) (#15374)
+  * Add size to Save function (#15264) (#15270)
+  * Monaco improvements (#15333) (#15345)
+  * Support .mailmap in code activity stats (#15009)
+  * Sort release attachments by name (#15008)
+  * Add ui.explore settings to control view of explore pages (#14094)
+  * Make internal SSH server host key path configurable (#14918)
+  * Hide resync all ssh principals when using internal ssh server (#14904)
+  * Add SameSite setting for cookies (#14900)
+  * Move Bleve and Elastic code indexers to use a common cat-file --batch (#14781)
+  * Add environment-to-ini to docker image (#14762)
+  * Add preview support for wiki editor when disable simpleMDE (#14757)
+  * Add easyMDE(simpleMDE) support for release content editor (#14744)
+  * Organization removal confirmation using name not password (#14738)
+  * Make branch names in PR description clickable (#14716)
+  * Add Password Algorithm option to install page (#14701)
+  * Add fullTextSearch to dropdowns by default (#14694)
+  * Fix truncated organization names (#14655)
+  * Whitespace in commits (#14650)
+  * Sort / move project boards (#14634)
+  * Make fileheader sticky in diffs (#14616)
+  * Add helper descriptions on new repo page (#14591)
+  * Move the stopwatches to the eventsource stream (#14588)
+  * Add Content-Length header to HEAD requests (#14542)
+  * Add Image Diff options in Diff view (#14450)
+  * Improve Description in new/ edit Project template (#14429)
+  * Allow ssh-keygen on Windows to detect ssh key type (#14413)
+  * Display error if twofaSecret cannot be retrieved (#14372)
+  * Sort issue search results by revelance (#14353)
+  * Implement ghost comment mitigation (#14349)
+  * Upgrade blevesearch dependency to v2.0.1 (#14346)
+  * Add edit, delete and reaction support to code review comments on issue page (#14339)
+  * Merge default and system webhooks under one menu (#14244)
+  * Add option for administrator to reset user 2FA (#14243)
+  * Add option to change username to the admin panel (#14229)
+  * Check for 'main' as potential default branch name (#14193)
+  * Project: show referenced PRs in issue cards (#14183)
+  * Use caddy's certmagic library for extensible/robust ACME handling (#14177)
+  * CLI support for OAuth sources custom icons (#14166)
+  * Custom icons for OAuth sources (#14161)
+  * Team dashboards (#14159)
+  * KanBan: be able to set default board (#14147)
+  * Disable Fomantic's custom scrollbars (#14109)
+  * Add UI to delete tracked times (#14100)
+  * Rework heatmap permissions (#14080)
+  * Issue and pull request filters on organization dashboard (#14072)
+  * Fix webhook list styling (#14001)
+  * Show dropdown with all statuses for commit (#13977)
+  * Show status check for merged PRs (#13975)
+  * Diff stat improvements (#13954)
+  * Report permissions denied in internal SSH (#13953)
+  * Markdown task list improvements (#13952)
+  * Heatmap days clickable (#13935)
+  * chore: use octicon-mirror for feeds display (#13928)
+  * Move diff split code into own template file (#13919)
+  * Markdown: Enable wrapping in code blocks and a color tweak (#13894)
+  * Do not reload page after adding comments in Pull Request reviews (#13877)
+  * Add pull request manually merge instruction (#13840)
+  * add thumbnail preview section to issue attachments (#13826)
+  * Move Repo APIFormat to convert package (#13787)
+  * Move notification APIFormat (#13783)
+  * Swap swagger-ui with swagger-ui-dist (#13777)
+  * User Settings: Ignore empty language codes & validate (#13755)
+  * Improve migrate page and add card CSS (#13751)
+  * Add block on official review requests branch protection (#13705)
+  * Add review requested filter on pull request overview (#13701)
+  * Use chronological commit order in default squash message (#13696)
+  * Clickable links in pull request (and issue) titles (#13695)
+  * Support shortened commit SHAs in URLs (#13686)
+  * Use native git variants by default with go-git variants as build tag (#13673)
+  * Don't render dropdown when only 1 merge style is available (#13670)
+  * Move webhook type from int to string (#13664)
+  * Direct avatar rendering (#13649)
+  * Verify password for local-account activation (#13631)
+  * Prevent clone protocol button flash on page load (#13626)
+  * Remove fetch request from heatmap (#13623)
+  * Refactor combine label comments with tests (#13619)
+  * Move metrics from macaron to chi (#13601)
+  * Issue and Pulls lists rework (#13594)
+  * HTTP cache rework and enable caching for storage assets (#13569)
+  * Use mount but not register for chi routes (#13555)
+  * Use monaco for the git hook editor (#13552)
+  * Make heatmap colors more distinct (#13533)
+  * Lazy-load issue reviewers and assignees avatars (#13526)
+  * Change search and filter icons to SVG (#13473)
+  * Create tag on ui (#13467)
+  * updateSize when create a repo with init commit (#13441)
+  * Added title and action buttons to Project view page (#13437)
+  * Override fomantic monospace fonts and set size (#13435)
+  * Rework focused comment styling (#13434)
+  * Tags cleanup (#13428)
+  * Various style tweaks (#13418)
+  * Refactor push update (#13381)
+  * Comment box tweaks and SVG dropdown triangles (#13376)
+  * Various style fixes (#13372)
+  * Change repo home page icons to SVG (#13364)
+  * Use CSS Vars for primary color (#13361)
+  * Refactor image paste code (#13354)
+  * Switch from SimpleMDE to EasyMDE (#13333)
+  * Group Label Changed Comments in timeline (#13304)
+  * Make the logger an interface (#13294)
+  * Fix PR/Issue titles on mobile (#13292)
+  * Rearrange the order of the merged by etc. in locale (#13284)
+  * Replace footer and modal icons with SVG (#13245)
+  * Issues overview should not show issues from archived repos (#13220)
+  * Show stale label for stale code comment which is marked as resolved (#13213)
+  * Use CSS Variables for fonts, remove postcss-loader (#13204)
+  * Add mentionable teams to tributeValues and change team mention rules to gh's style (#13198)
+  * Move install pages out of main macaron routes (#13195)
+  * Update outdated label to use Fomantic UI style (#13181)
+  * Added option to disable webhooks (#13176)
+  * Change order of possible-owner organizations to alphabetical (#13160)
+  * Log IP on SSH authentication failure for Built-in SSH server (#13150)
+  * Added option to disable migrations (#13114)
+  * New "Add Mirror" Button in the Organization view (#13105)
+  * Manually approve new registration (#13083)
+  * Cron job to cleanup hook_task table (#13080)
+  * Use the headline comment of pull-request as the squash commit's message (#13071)
+  * Clarify the suffices and prefixes of setting.AppSubURL and setting.AppURL (#12999)
+  * Slightly simplify the queue settings code to help reduce the risk of problems (#12976)
+  * Add precise search type for Elastic Search (#12869)
+  * Move APIFormat functions into convert package (#12856)
+  * Multiple GitGraph improvements: Exclude PR heads, Add branch/PR links, Show only certain branches, (#12766)
+  * Add TrN for repository limit (#12492)
+  * Refactor doctor (#12264)
+  * Add the tag list page to the release page (#12096)
+  * Redirect on changed user and org name (#11649)
+  * load U2F js only on pages which need it (#11585)
+  * Make archival asynchronous (#11296)
+  * Introduce go chi web framework as frontend of macaron, so that we can move routes from macaron to chi step by step (#7420)
+  * Improve vfsgen to not unzip bindata files but send to browser directly (#7109)
+  * Enhance release list (#6025)
+* DOCS
+  * Swagger show models by default (#14880)
+  * Add missing repo.projects unit into swagger (#14876)
+  * Update docs and comments to remove macaron (#14491)
+  * Issue template addition: Are you using Gitea behind CloudFlare? (#14098)
+  * Generate man pages (#13901)
+  * Reformat/fine-tune docs (#13897)
+  * Added Table of Contents to long documentation pages (#13890)
+  * Add docs command (#13429)
+  * Update external-renderers.en-us.md (#13165)
+* MISC
+  * Add builds for apple M1 (darwin arm64) (#14951)
+  * Migrate to use jsoniter instead of encoding/json (#14841)
+  * Reduce make verbosity (#13803)
+  * Add git command error directory on log (#13194)
+
+## [1.13.7](https://github.com/go-gitea/gitea/releases/tag/v1.13.7) - 2021-04-07
+
+* SECURITY
+  * Update to bluemonday-1.0.6 (#15294) (#15298)
+  * Clusterfuzz found another way (#15160) (#15169)
+* API
+  * Fix wrong user returned in API (#15139) (#15150)
+* BUGFIXES
+  * Add 'fonts' into 'KnownPublicEntries' (#15188) (#15317)
+  * Speed up `enry.IsVendor` (#15213) (#15246)
+  * Response 404 for diff/patch of a commit that not exist (#15221) (#15238)
+  * Prevent NPE in CommentMustAsDiff if no hunk header (#15199) (#15201)
+* MISC
+  * Add size to Save function (#15264) (#15271)
+
+## [1.13.6](https://github.com/go-gitea/gitea/releases/tag/v1.13.6) - 2021-03-23
+
+* SECURITY
+  * Fix bug on avatar middleware (#15124) (#15125)
+  * Fix another clusterfuzz identified issue (#15096) (#15114)
+* API
+  * Fix nil exeption for get pull reviews API #15104 (#15106)
+* BUGFIXES
+  * Fix markdown rendering in milestone content (#15056) (#15092)
+
+## [1.13.5](https://github.com/go-gitea/gitea/releases/tag/v1.13.5) - 2021-03-21
+
+* SECURITY
+  * Update to goldmark 1.3.3 (#15059) (#15061)
+  * Another clusterfuzz spotted issue (#15032) (#15034)
+* API
+  * Fix set milestone on PR creation (#14981) (#15001)
+  * Prevent panic when editing forked repos by API (#14960) (#14963)
+* BUGFIXES
+  * Fix bug when upload on web (#15042) (#15055)
+  * Delete Labels & IssueLabels on Repo Delete too (#15039) (#15051)
+  * Fix postgres ID sequences broken by recreate-table (#15015) (#15029)
+  * Fix several render issues (#14986) (#15013)
+  * Make sure sibling images get a link too (#14979) (#14995)
+  * Fix Anchor jumping with escaped query components (#14969) (#14977)
+  * Fix release mail html template (#14976)
+  * Fix excluding more than two labels on issues list (#14962) (#14973)
+  * Don't mark each comment poster as OP (#14971) (#14972)
+  * Add "captcha" to list of reserved usernames (#14930)
+  * Re-enable import local paths after reversion from #13610 (#14925) (#14927)
+
+## [1.13.4](https://github.com/go-gitea/gitea/releases/tag/v1.13.4) - 2021-03-07
+
+* SECURITY
+  * Fix issue popups (#14898) (#14899)
+* BUGFIXES
+  * Fix race in LFS ContentStore.Put(...) (#14895) (#14913)
+  * Fix a couple of issues with a feeds (#14897) (#14903)
+  * When transfering repository and database transaction failed, rollback the renames (#14864) (#14902)
+  * Fix race in local storage (#14888) (#14901)
+  * Fix 500 on pull view page if user is not loged in (#14885) (#14886)
+* DOCS
+  * Fix how lfs data path is set (#14855) (#14884)
+
+## [1.13.3](https://github.com/go-gitea/gitea/releases/tag/v1.13.3) - 2021-03-04
+
+* BREAKING
+  * Turn default hash password algorithm back to pbkdf2 from argon2 until we find a better one (#14673) (#14675)
+* BUGFIXES
+  * Fix paging of file commit logs (#14831) (#14879)
+  * Print useful error if SQLite is used in settings but not supported (#14476) (#14874)
+  * Fix display since time round (#14226) (#14873)
+  * When Deleting Repository only explicitly close PRs whose base is not this repository (#14823) (#14842)
+  * Set HCaptchaSiteKey on Link Account pages (#14834) (#14839)
+  * Fix a couple of CommentAsPatch issues.  (#14804) (#14820)
+  * Disable broken OAuth2 providers at startup (#14802) (#14811)
+  * Repo Transfer permission checks (#14792) (#14794)
+  * Fix double alert in oauth2 application edit view (#14764) (#14768)
+  * Fix broken spans in diffs (#14678) (#14683)
+  * Prevent race in PersistableChannelUniqueQueue.Has (#14651) (#14676)
+  * HasPreviousCommit causes recursive load of commits unnecessarily (#14598) (#14649)
+  * Do not assume all 40 char strings are SHA1s (#14624) (#14648)
+  * Allow org labels to be set with issue templates (#14593) (#14647)
+  * Accept multiple SSH keys in single LDAP SSHPublicKey attribute (#13989) (#14607)
+  * Fix bug about ListOptions and stars/watchers pagnation (#14556) (#14573)
+  * Fix GPG key deletion during account deletion (#14561) (#14569)
+
+## [1.13.2](https://github.com/go-gitea/gitea/releases/tag/v1.13.2) - 2021-01-31
+
+* SECURITY
+  * Prevent panic on fuzzer provided string (#14405) (#14409)
+  * Add secure/httpOnly attributes to the lang cookie (#14279) (#14280)
+* API
+  * If release publisher is deleted use ghost user (#14375)
+* BUGFIXES
+  * Internal ssh server respect Ciphers, MACs and KeyExchanges settings (#14523) (#14530)
+  * Set the name Mapper in migrations (#14526) (#14529)
+  * Fix wiki preview (#14515)
+  * Update code.gitea.io/sdk/gitea v0.13.1 -> v0.13.2 (#14497)
+  * ChangeUserName: rename user files back on DB issue (#14447)
+  * Fix lfs preview bug (#14428) (#14433)
+  * Ensure timeout error is shown on u2f timeout (#14417) (#14431)
+  * Fix Deadlock & Delete affected reactions on comment deletion (#14392) (#14425)
+  * Use path not filepath in routers/editor (#14390) (#14396)
+  * Check if label template exist first (#14384) (#14389)
+  * Fix migration v141 (#14387) (#14388)
+  * Use Request.URL.RequestURI() for fcgi (#14347)
+  * Use ServerError provided by Context (#14333) (#14345)
+  * Fix edit-label form init (#14337)
+  * Fix mailIssueCommentBatch for pull request (#14252) (#14296)
+  * Render links for commit hashes followed by comma (#14224) (#14227)
+  * Send notifications for mentions in pulls, issues, (code-)comments (#14218) (#14221)
+  * Fix avatar bugs (#14217) (#14220)
+  * Ensure that schema search path is set with every connection on postgres (#14131) (#14216)
+  * Fix dashboard issues labels filter bug (#14210) (#14214)
+  * When visit /favicon.ico but the static file is not exist return 404 but not continue to handle the route (#14211) (#14213)
+  * Fix branch selector on new issue page (#14194) (#14207)
+  * Check for notExist on profile repository page (#14197) (#14203)
+
+## [1.13.1](https://github.com/go-gitea/gitea/releases/tag/v1.13.1) - 2020-12-29
+
+* SECURITY
+  * Hide private participation in Orgs (#13994) (#14031)
+  * Fix escaping issue in diff (#14153) (#14154)
+* BUGFIXES
+  * Fix bug of link query order on markdown render (#14156) (#14171)
+  * Drop long repo topics during migration (#14152) (#14155)
+  * Ensure that search term and page are not lost on adoption page-turn (#14133) (#14143)
+  * Fix storage config implementation (#14091) (#14095)
+  * Fix panic in BasicAuthDecode (#14046) (#14048)
+  * Always wait for the cmd to finish (#14006) (#14039)
+  * Don't use simpleMDE editor on mobile devices for 1.13 (#14029)
+  * Fix incorrect review comment diffs (#14002) (#14011)
+  * Trim the branch prefix from action.GetBranch (#13981) (#13986)
+  * Ensure template renderer is available before storage handler (#13164) (#13982)
+  * Whenever the password is updated ensure that the hash algorithm is too (#13966) (#13967)
+  * Enforce setting HEAD in wiki to master (#13950) (#13961)
+  * Fix feishu webhook caused by API changed (#13938)
+  * Fix Quote Reply button on review diff (#13830) (#13898)
+  * Fix Pull Merge when tag with same name as base branch exist (#13882) (#13896)
+  * Fix mermaid chart size (#13865)
+  * Fix branch/tag notifications in mirror sync (#13855) (#13862)
+  * Fix crash in short link processor (#13839) (#13841)
+  * Update font stack to bootstrap's latest (#13834) (#13837)
+  * Make sure email recipients can see issue (#13820) (#13827)
+  * Reply button is not removed when deleting a code review comment (#13824)
+  * When reinitialising DBConfig reset the database use flags (#13796) (#13811)
+* ENHANCEMENTS
+  * Add emoji in label to project boards (#13978) (#14021)
+  * Send webhook when tag is removed via Web UI (#14015) (#14019)
+  * Use Process Manager to create own Context (#13792) (#13793)
+* API
+  * GetCombinedCommitStatusByRef always return json & swagger doc fixes (#14047)
+  * Return original URL of Repositories (#13885) (#13886)
+
+## [1.13.0](https://github.com/go-gitea/gitea/releases/tag/v1.13.0) - 2020-12-01
+
+* SECURITY
+  * Add Allow-/Block-List for Migrate & Mirrors (#13610) (#13776)
+  * Prevent git operations for inactive users (#13527) (#13536)
+  * Disallow urlencoded new lines in git protocol paths if there is a port (#13521) (#13524)
+  * Mitigate Security vulnerability in the git hook feature (#13058)
+  * Disable DSA ssh keys by default (#13056)
+  * Set TLS minimum version to 1.2 (#12689)
+  * Use argon as default password hash algorithm (#12688)
+* BREAKING
+  * Set RUN_MODE prod by default (#13765) (#13767)
+  * Don't replace underscores in auto-generated IDs in goldmark (#12805)
+  * Add Primary Key to Topic and RepoTopic tables (#12639)
+  * Disable password complexity check default (#12557)
+  * Change PIDFile default from /var/run/gitea.pid to /run/gitea.pid (#12500)
+  * Add extension Support to Attachments (allow all types for releases) (#12465)
+  * Remove IE11 Support (#11470)
+* FEATURES
+  * Adopt repositories (#12920)
+  * Check passwords against HaveIBeenPwned (#12716)
+  * Gitea 2 Gitea migration (#12657)
+  * Support storing Avatars in minio  (#12516)
+  * Allow addition of gpg keyring with multiple keys (#12487)
+  * Add email notify for new release (#12463)
+  * Add Access-Control-Expose-Headers (#12446)
+  * UserProfile Page: Render Description (#12415)
+  * Add command to recreate tables (#12407)
+  * Add mermaid JS renderer (#12334)
+  * Add ssh certificate support (#12281)
+  * Add spent time to referenced issue in commit message (#12220)
+  * Initial support for push options (#12169)
+  * Provide option to unlink a fork (#11858)
+  * Show exact tag for commit on diff view (#11846)
+  * Pause, Resume, Release&Reopen, Add and Remove Logging from command line (#11777)
+  * Issue templates directory (#11450)
+  * Add a storage layer for attachments (#11387)
+  * Add hide activity option (#11353)
+  * Add push commits history comment on PR time-line (#11167)
+  * Support elastic search for code search (#10273)
+  * Kanban board (#8346)
+* API
+  * If User is Admin, show 500 error message on PROD mode too (#13115)
+  * Add Timestamp to Tag list API (#13026)
+  * Return sample message for login error in api context (#12994)
+  * Add IsTemplate option in create repo ui and api (#12942)
+  * GetReleaseByID return 404 if not found (#12933)
+  * Get release by tags endpoint (#12932)
+  * NotificationSubject show Issue/Pull State (#12901)
+  * Expose its limitation settings (#12714)
+  * Add Created & Updated to Milestone (#12662)
+  * Milestone endpoints accept names too (#12649)
+  * Expose Attachment Settings in the API (#12514)
+  * Add Issue and Repo info to StopWatch (#12458)
+  * Add cron running API (#12421)
+  * Add Update Pull HeadBranch Function (#12419)
+  * Add TOTP header to Swagger Documentation (#12402)
+  * Delete Token accept names too (#12366)
+  * Add name filter for GetMilestoneList (#12336)
+  * Fixed count of filtered issues when api request. (#12275)
+  * Do not override API issue pagination with UI settings (#12068)
+  * Expose useful General Repo settings settings (#11758)
+  * Return error when trying to create Mirrors but Mirrors are globally disabled (#11757)
+  * Provide diff and patch API endpoints (#11751)
+  * Allow to create closed milestones (#11745)
+  * Add language Statistics endpoint (#11737)
+  * Add Endpoint to get GetGeneralUI Settings (#11735) & (#11854)
+  * Issue/Pull expose IsLocked Property on API (#11708)
+  * Add endpoint for Branch Creation (#11607)
+  * Add pagination headers on endpoints that support total count from database (#11145)
+* BUGFIXES
+  * Fix bogus http requests on diffs (#13760) (#13761)
+  * Show 'owner' tag for real owner (#13689) (#13743)
+  * Validate email before inserting/updating (#13475) (#13666)
+  * Fix issue/pull request list assignee filter (#13647) (#13651)
+  * Gitlab migration support for subdirectories (#13563) (#13591)
+  * Fix logic for preferred license setting (#13550) (#13557)
+  * Add missed sync branch/tag webhook (#13538) (#13556)
+  * Migration won't fail on non-migrated reactions (#13507)
+  * Fix Italian language file parsing error (#13156)
+  * Show outdated comments in pull request (#13148) (#13162)
+  * Fix parsing of pre-release git version (#13169) (#13172)
+  * Fix diff skipping lines (#13154) (#13155)
+  * When handling errors in storageHandler check underlying error (#13178) (#13193)
+  * Fix size and clickable area on file table back link (#13205) (#13207)
+  * Add better error checking for inline html diff code (#13251)
+  * Fix initial commit page & binary munching problem (#13249) (#13258)
+  * Fix migrations from remote Gitea instances when configuration not set (#13229) (#13273)
+  * Store task errors following migrations and display them (#13246) (#13287)
+  * Fix bug isEnd detection on getIssues/getPullRequests (#13299) (#13301)
+  * When the git ref is unable to be found return broken pr (#13218) (#13303)
+  * Ensure topics added using the API are added to the repository (#13285) (#13302)
+  * Fix avatar autogeneration (#13233) (#13282)
+  * Add migrated pulls to pull request task queue (#13331) (#13334)
+  * Issue comment reactions should also check pull type on API (#13349) (#13350)
+  * Fix links to repositories in /user/setting/repos (#13360) (#13362)
+  * Remove obsolete change of email on profile page (#13341) (#13347)
+  * Fix scrolling to resolved comment anchors (#13343) (#13371)
+  * Storage configuration support `[storage]` (#13314) (#13379)
+  * When creating line diffs do not split within an html entity (#13357) (#13375) (#13425) (#13427)
+  * Fix reactions on code comments (#13390) (#13401)
+  * Add missing full names when DEFAULT_SHOW_FULL_NAME is enabled (#13424)
+  * Replies to outdated code comments should also be outdated (#13217) (#13433)
+  * Fix panic bug in handling multiple references in commit (#13486) (#13487)
+  * Prevent panic on git blame by limiting lines to 4096 bytes at most (#13470) (#13491)
+  * Show original author's reviews on pull summary box (#13127)
+  * Update golangci-lint to version 1.31.0 (#13102)
+  * Fix line break for MS teams webhook (#13081)
+  * Fix Issue & Pull Request comment headers on mobile (#13039)
+  * Avoid setting the CONN_STR in queues unless it is meant to be set (#13025)
+  * Remove code-view class from diff view (#13011)
+  * Fix the color of PR comment hyperlinks. (#13009)
+  * (Re)Load issue labels when changing them (#13007)
+  * Fix Media links in org files not liked to media files (#12997)
+  * Always return a list from GetCommitsFromIDs (#12981)
+  * Only set the user password if the password field would have been shown (#12980)
+  * Fix admin/config page (#12979)
+  * Changed width of commit signature avatar (#12961)
+  * Completely quote AppPath and CustomConf paths (#12955)
+  * Fix handling of migration errors (#12928)
+  * Fix anonymous GL migration (#12862)
+  * Fix git open close bug (#12834)
+  * Fix markdown meta parsing (#12817)
+  * Add default storage configurations (#12813)
+  * Show PR settings on empty repos (#12808)
+  * Disable watch and star if not signed in (#12807)
+  * Whilst changing the character set to utf8mb4 we should set ROW_FORMAT=dynamic too (#12804)
+  * Set opengraph attributes on org pages (#12803)
+  * Return error when creating gitlabdownloader failed (#12790)
+  * Add migration for password algorithm change (#12784)
+  * Compare SSH_DOMAIN when parsing submodule URLs (#12753)
+  * Fix editor.commit_empty_file_text locale string (#12744)
+  * Fix wrong poster message for code comment on Pull view (#11721)
+  * Escape failed highlighted files (#12685)
+  * Ensure that all migration requests are cancellable (#12669)
+  * Ensure RepoPath is lowercased in gitea serv (#12668)
+  * Do not disable commit changes button on repost (#12644)
+  * Dark theme for line numbers in blame view (#12632)
+  * Fix message when deleting last owner from an organization (#12628)
+  * Use shellquote to unpack arguments to gitea serv (#12624)
+  * Fix signing.wont_sign.%!s() if Require Signing commits but not signed in. (#12581)
+  * Set utf8mb4 as the default charset on MySQL if CHARSET is unset (#12563)
+  * Set context for running CreateArchive to that of the request (#12555)
+  * Prevent redirect back to /user/events (#12462)
+  * Re-attempt to delete temporary upload if the file is locked by another process (#12447)
+  * Mirror System Notice reports are too frequent (#12438)
+  * Do not show arrows on comment diffs on pull comment pages (#12434)
+  * Fix milestone links (#12405)
+  * Increase size of the language column in language_stat (#12396)
+  * Use transaction in V102 migration (#12395)
+  * Only use --exclude on name-rev with git >= 2.13 (#12347)
+  * Add action feed for new release (#12324)
+  * Set NoAutoTime when updating is_archived (#12266)
+  * Support Force-update in Mirror and improve Tracing in mirror (#12242)
+  * Avoid sending "0 new commits" webhooks (#12212)
+  * Fix U2F button icon (#12167)
+  * models/repo_sign.go: break out of loops (#12159)
+  * Ensure that git commit tree continues properly over the page (#12142)
+  * Rewrite GitGraph.js (#12137)
+  * Fix repo API listing stability (#12057)
+  * Add team support for review request (#12039)
+  * Fix 500 error on repos with no tags (#11870)
+  * Fix nil pointer in default issue mail template (#11862)
+  * Fix commit search in all branches (#11849)
+  * Don't consider tag refs as valid for branch name (#11847)
+  * Don't add same line code comment box twice (#11837)
+  * Fix visibility of forked public repos from private orgs (#11717)
+  * Fix chardet test and add ordering option (#11621)
+  * Fix number of files, total additions, and deletions on Diff pages (#11614)
+  * Properly handle and return empty string for dangling commits in GetBranchName (#11587)
+  * Include query in sign in redirect (#11579)
+  * Fix Enter not working in SimpleMDE (#11564)
+  * Fix bug about can't skip commits base on base branch (#11555)
+* ENHANCEMENTS
+  * Only Return JSON for responses (#13511) (#13565)
+  * Use existing analyzer module for language detection for highlighting (#13522) (#13551)
+  * Return the full rejection message and errors in flash errors (#13221) (#13237)
+  * Remove PAM from auth dropdown when unavailable (#13276) (#13281)
+  * Add HostCertificate to sshd_config in Docker image (#13143)
+  * Save TimeStamps for Star, Label, Follow, Watch and Collaboration to Database (#13124)
+  * Improve error feedback for duplicate deploy keys (#13112)
+  * Set appropriate `autocomplete` attributes on password fields (#13078)
+  * Adding visual cue for "Limited" & "Private" organizations. (#13040)
+  * Fix Pull Request merge buttons on mobile (#13035)
+  * Gitea serv, hooks, manager and the like should always display Fatals (#13032)
+  * CSS tweaks to warning/error segments and misc fixes (#13024)
+  * Fix formatting of branches ahead-behind on narrow windows (#12989)
+  * Add config option to make create-on-push repositories public by default (#12936)
+  * Disable migration items when mirror is selected (#12918)
+  * Add the checkbox quick button to the comment tool bar also (#12885)
+  * Support GH enterprise (#12863)
+  * Simplify CheckUnitUser logic (#12854)
+  * Fix background of signed-commits on arc-green of timeline commits (#12837)
+  * Move git update-server-info to hooks (#12826)
+  * Add ui style for "Open a blank issue" button (#12824)
+  * Use a simple format for the big number on ui (#12822)
+  * Make SVG size argument optional (#12814)
+  * Add placeholder text for bio profile text form (#12792)
+  * Set language via AJAX (#12785)
+  * Show git-pull-request icon for closed pull request (#12742)
+  * Migrate version parsing library to hashicorp/go-version (#12719)
+  * Only use async pre-empt hack if go < 1.15 (#12718)
+  * Inform user about meaning of an hourglass on reviews (#12713)
+  * Add a migrate service type switch page (#12697)
+  * Migrations: Gitlab Add Reactions Support for Issues & MergeRequests (#12695)
+  * Remove duplicate logic in initListSubmits (#12660)
+  * Set avatar image dimensions (#12654)
+  * Rename models.ProtectedBranchRepoID/PRID to models.EnvRepoID/PRID and ensure EnvPusherEmail is set (#12646)
+  * Set setting.AppURL as GITEA_ROOT_URL environment variable during pushes (#12752)
+  * Add postgres schema to the search_path on database connection (#12634)
+  * Git migration UX improvements (#12619)
+  * Add link to home page on swagger ui (#12601)
+  * hCaptcha Support (#12594)
+  * OpenGraph: use repo avatar if exist (#12586)
+  * Reaction picker display improvements (#12576)
+  * Fix emoji replacements, make emoji images consistent (#12567)
+  * Increase clickable area on files table links (#12553)
+  * Set z-index for sticky diff box lower (#12537)
+  * Report error if API merge is not allowed (#12528)
+  * LFS support to be stored on minio (#12518)
+  * Show 2FA info on Admin Pannel: Users List (#12515)
+  * Milestone Issue/Pull List: Add octicons type (#12499)
+  * Make dashboard newsfeed list length a configurable item (#12469)
+  * Add placeholder text for send testing email button in admin/config (#12452)
+  * Add SVG favicon (#12437)
+  * In issue comments, put issue participants also in completion list when hitting @ (#12433)
+  * Collapse Swagger UI tags by default (#12428)
+  * Detect full references to issues and pulls in commit messages (#12399)
+  * Allow common redis and leveldb connections (#12385)
+  * Don't use legacy method to send Matrix Webhook (#12348)
+  * Remove padding/border-radius on image diffs (#12346)
+  * Render the git graph on the server (#12333)
+  * Fix clone panel in wiki position not always align right (#12326)
+  * Rework 'make generate-images' (#12316)
+  * Refactor webhook payload convertion (#12310)
+  * Move jquery-minicolors to npm/webpack (#12305)
+  * Support use nvarchar for all varchar columns when using mssql (#12269)
+  * Update Octicons to v10 (#12240)
+  * Disable search box autofocus (#12229)
+  * Replace code fold icons with octicons (#12222)
+  * Ensure syntax highlighting is the same inside diffs (#12205)
+  * Auto-init repo on license, .gitignore select (#12202)
+  * Default to showing closed Issues/PR list when there are only closed issues/PRs (#12200)
+  * Enable cloning via Git Wire Protocol v2 over HTTP (#12170)
+  * Direct SVG rendering (#12157)
+  * Improve arc-green code colors (#12111)
+  * Allow admin to merge pr with protected file changes (#12078)
+  * Show description on individual milestone view (#12055)
+  * Update the wiki repository remote origin while update the mirror repository's Clone From URL (#12053)
+  * Server-side syntax highlighting for all code (#12047)
+  * Use Fomantic's fluid padded for blame full width (#12023)
+  * Use custom SVGs for commit signing lock icon (#12017)
+  * Make tabs smaller (#12003)
+  * Fix sticky diff stats container (#12002)
+  * Move fomantic and jQuery to main webpack bundle (#11997)
+  * Use enry language type to detect special languages (#11974)
+  * Use only first line of commit when creating referenced comment (#11960)
+  * Rename custom/conf/app.ini.sample to custom/conf/app.example.ini for better syntax light on editor (#11926)
+  * Fix double divider on issue sidebar (#11919)
+  * Shorten markdown heading anchors links (#11903)
+  * Add org avatar on top of internal repo icon (#11895)
+  * Use label to describe repository type (#11891)
+  * Make repository size unclickable on repo summary bar (#11887)
+  * Rework blame template and styling (#11885)
+  * Fix icon alignment for show/hide outdated link on resolved conversation (#11881)
+  * Vertically align review icons on repository sidebar (#11880)
+  * Better align items using flex within review request box (#11879)
+  * Only write to global gitconfig if necessary (#11876)
+  * Disable all typographic replacements in markdown renderer (#11871)
+  * Improve label edit buttons labels (#11841)
+  * Use crispEdges rendering for octicon-internal-repo (#11801)
+  * Show update branch item in merge box when it's necessary (#11761)
+  * Add compare link to releases (#11752)
+  * Allow site admin to disable mirrors (#11740)
+  * Export monaco editor on window.codeEditors (#11739)
+  * Add configurable Trust Models (#11712)
+  * Show full GPG commit status on PR commit history (#11702)
+  * Fix align issues and decrease avatar size on PR timeline (#11689)
+  * Replace jquery-datetimepicker with native date input (#11684)
+  * Change Style of Tags on Comments (#11668)
+  * Fix missing styling for shabox on PR commit history (#11625)
+  * Apply padding to approval icons on PR list (#11622)
+  * Fix message wrapping on PR commit list (#11616)
+  * Right-align status icon on pull request commit history (#11594)
+  * Add missing padding for multi-commit list on PR view (#11593)
+  * Do not show avatar for "{{user}} added X commits" (#11591)
+  * Fix styling and padding for commit list on PR view (#11588)
+  * Style code review comment for arc-green (#11572)
+  * Use default commit message for wiki edits (#11550)
+  * Add internal-repo octicon for public repos of private org (#11529)
+  * Fix dropzone color on arc-green (#11514)
+  * Insert ui divider directly in templates instead of from inside heatmap vue component (#11508)
+  * Move tributejs to npm/webpack (#11497)
+  * Fix text-transform on wiki revisions page (#11486)
+  * Do not show lock icon on repo list for public repos in private org (#11445)
+  * Include LFS when calculating repo size (#11060)
+  * Add check for LDAP group membership (#10869)
+  * When starting new stopwatch stop previous if it is still running (#10533)
+  * Add queue for code indexer (#10332)
+  * Move all push update operations to a queue (#10133)
+  * Cache last commit when pushing for big repository (#10109)
+  * Change/remove a branch of an open issue (#9080)
+  * Sortable Tables Header By Click (#7980)
+* TESTING
+  * Use community codecov drone plugin (#12468)
+  * Add more tests for diff highlighting (#12467)
+  * Don't put integration test data outside of test folder (#11746)
+  * Add debug option to hooks (#11624)
+  * Log slow tests (#11487)
+* TRANSLATION
+  * Translate two small lables on commit statuse list (#12821)
+  * Make issues.force_push_codes message shorter (#11575)
+* BUILD
+  * Bump min required golang to 1.13 (#12717)
+  * Add 'make watch' (#12636)
+  * Extract Swagger CSS to its own file (#12616)
+  * Update eslint config (#12609)
+  * Avoid unnecessary system-ui expansion (#12522)
+  * Make the default PID file compile-time settable (#12485)
+  * Add 'watch-backend' (#12330)
+  * Detect version of sed in Makefile (#12319)
+  * Update gitea-vet to v0.2.1 (#12282)
+  * Add logic to build stable and edge builds for gitea snap (#12052)
+  * Fix missing CGO_EXTRA_FLAGS build arg for docker (#11782)
+  * Alpine 3.12 (#11720)
+  * Enable stylelint's shorthand-property-no-redundant-values (#11436)
+* DOCS
+  * Change default log configuration (#13088)
+  * Add automatic JS license generation (#11810)
+  * Remove page size limit comment from swagger (#11806)
+  * Narrow down Edge version in browser support docs (#11640)
+
+## [1.12.5](https://github.com/go-gitea/gitea/releases/tag/v1.12.5) - 2020-10-01
+
+* BUGFIXES
+  * Allow U2F with default settings for gitea in subpath (#12990) (#13001)
+  * Prevent empty div when editing comment (#12404) (#12991)
+  * On mirror update also update address in DB (#12964) (#12967)
+  * Allow extended config on cron settings (#12939) (#12943)
+  * Open transaction when adding Avatar email-hash pairs to the DB (#12577) (#12940)
+  * Fix internal server error from ListUserOrgs API (#12910) (#12915)
+  * Update only the repository columns that need updating (#12900) (#12912)
+  * Fix panic when adding long comment (#12892) (#12894)
+  * Add size limit for content of comment on action ui (#12881) (#12890)
+  * Convert User expose ID each time (#12855) (#12883)
+  * Support slashes in release tags (#12864) (#12882)
+  * Add missing information to CreateRepo API endpoint (#12848) (#12867)
+  * On Migration respect old DefaultBranch (#12843) (#12858)
+  * Fix notifications page links (#12838) (#12853)
+  * Stop cloning unnecessarily on PR update (#12839) (#12852)
+  * Escape more things that are passed through str2html (#12622) (#12850)
+  * Remove double escape on labels addition in comments (#12809) (#12810)
+  * Fix "only mail on mention" bug (#12775) (#12789)
+  * Fix yet another bug with diff file names (#12771) (#12776)
+  * RepoInit Respect AlternateDefaultBranch (#12746) (#12751)
+  * Fix Avatar Resize (resize algo NearestNeighbor -> Bilinear) (#12745) (#12750)
+* ENHANCEMENTS
+  * gitea dump: include version & Check InstallLock (#12760) (#12762)
+
+## [1.12.4](https://github.com/go-gitea/gitea/releases/tag/v1.12.4) - 2020-09-02
+
+* SECURITY
+  * Escape provider name in oauth2 provider redirect (#12648) (#12650)
+  * Escape Email on password reset page (#12610) (#12612)
+  * When reading expired sessions - expire them (#12686) (#12690)
+* ENHANCEMENTS
+  * StaticRootPath configurable at compile time (#12371) (#12652)
+* BUGFIXES
+  * Fix to show an issue that is related to a deleted issue (#12651) (#12692)
+  * Expire time acknowledged for cache (#12605) (#12611)
+  * Fix diff path unquoting (#12554) (#12575)
+  * Improve HTML escaping helper (#12562)
+  * models: break out of loop (#12386) (#12561)
+  * Default empty merger list to those with write permissions (#12535) (#12560)
+  * Skip SSPI authentication attempts for /api/internal (#12556) (#12559)
+  * Prevent NPE on commenting on lines with invalidated comments (#12549) (#12550)
+  * Remove hardcoded ES indexername (#12521) (#12526)
+  * Fix bug preventing transfer to private organization (#12497) (#12501)
+  * Keys should not verify revoked email addresses (#12486) (#12495)
+  * Do not add prefix on http/https submodule links (#12477) (#12479)
+  * Fix ignored login on compare (#12476) (#12478)
+  * Fix incorrect error logging in Stats indexer and OAuth2 (#12387) (#12422)
+  * Upgrade google/go-github to v32.1.0 (#12361) (#12390)
+  * Render emoji's of Commit message on feed-page (#12373)
+  * Fix handling of diff on unrelated branches when Git 2.28 used (#12370)
+
+## [1.12.3](https://github.com/go-gitea/gitea/releases/tag/v1.12.3) - 2020-07-28
+
+* BUGFIXES
+  * Don't change creation date when updating Release (#12343) (#12351)
+  * Show 404 page when release not found (#12328) (#12332)
+  * Fix emoji detection in certain cases (#12320) (#12327)
+  * Reduce emoji size (#12317) (#12327)
+  * Fix double-indirection bug in logging IDs (#12294) (#12308)
+  * Link to pull list page on sidebar when view pr (#12256) (#12263)
+  * Extend Notifications API and return pinned notifications by default (#12164) (#12232)
+
+## [1.12.2](https://github.com/go-gitea/gitea/releases/tag/v1.12.2) - 2020-07-11
+
+* BUGFIXES
+  * When deleting repository decrese user repository count in cache (#11954) (#12188)
+  * Return full commit message instead of summary in commits API (#12186) (#12187)
+  * Properly set HEAD when a repo is created with a default branch that is not named 'master' (#12135) (#12182)
+  * Ensure GPG Subkeys are verified (#12155) (#12168)
+  * Fix failing to cache last commit with key being to long (#12151) (#12161)
+  * Multiple small admin dashboard fixes (#12153) (#12156)
+  * Remove spurious logging of " Delete all repository archives" at startup (#12139) (#12148)
+  * Fix repository setup instructions when default branch is not named 'master' (#12122) (#12147)
+  * Move EventSource to SharedWorker (#12095) (#12130)
+  * Fix ui bug in wiki commit page (#12089) (#12125)
+  * Fix gitgraph branch continues after merge (#12044) (#12105)
+  * Set the base url when migrating from Gitlab using access token or username without password (#11852) (#12104)
+  * Ensure BlameReaders close at end of request (#12102) (#12103)
+  * Fix panic when adding review comment (#12058)
+* ENHANCEMENTS
+  * Disable dropzone's timeout for file uploads (#12024) (#12032)
+
+## [1.12.1](https://github.com/go-gitea/gitea/releases/tag/v1.12.1) - 2020-06-21
+
+* BUGFIXES
+  * Handle multiple merges in gitgraph.js (#11996) (#12000)
+  * Add serviceworker.js to KnownPublicEntries (#11992) (#11994)
+  * For language detection do not try to analyze big files by content (#11971) (#11975)
+* ENHANCEMENTS
+  * Fix scrollable header on dropdowns (#11893) (#11965)
+
+## [1.11.8](https://github.com/go-gitea/gitea/releases/tag/v1.11.8) - 2020-06-21
+
+* BUGFIXES
+  * Really fix __webpack_public_path__ for 1.11 (#11961)
+
+## [1.12.0](https://github.com/go-gitea/gitea/releases/tag/v1.12.0) - 2020-06-17
+
+* BREAKING
+  * When using API CreateRelease set created_unix to the tag commit time (#11218)
+  * Enable ENABLE_HARD_LINE_BREAK by default for rendering markdown (#11162)
+  * Fix sanitizer config - multiple rules (#11133)
+  * Remove check on username when using AccessToken authentication for the API (#11015)
+  * Return 404 from Contents API when items don't exist (#10323)
+  * Notification API should always return a JSON object with the current count of notifications (#10059)
+  * Remove migration support from versions earlier than 1.6.0 (#10026)
+* SECURITY
+  * Use -1 to disable key algorithm type in ssh.minimum_key_sizes (#11635) (#11662)
+* FEATURES
+  * Improve config logging when WrappedQueue times out (#11174)
+  * Add branch delete to API (#11112)
+  * Use markdown frontmatter to provide Table of contents, language and frontmatter rendering (#11047)
+  * Add a way to mark Conversation (code comment) resolved (#11037)
+  * Handle yaml frontmatter in markdown (#11016)
+  * Cache PullRequest Divergence (#10914)
+  * Make `gitea admin auth list` formatting configurable (#10844)
+  * Add Matrix webhook (#10831)
+  * Add Organization Wide Labels (#10814)
+  * Allow to set protected file patterns for files that can not be changed under no conditions (#10806)
+  * Option to set default branch at repository creation (#10803)
+  * Add request review from specific reviewers feature in pull request (#10756)
+  * Add NextCloud oauth (#10562)
+  * System-wide webhooks (#10546)
+  * Relax sanitization as per https://github.com/jch/html-pipeline (#10527)
+  * Use media links for img in post-process (#10515)
+  * Add API endpoints to manage OAuth2 Application (list/create/delete) (#10437)
+  * Render READMEs in docs/ .gitea or .github from root (#10361)
+  * Add feishu webhook support (#10229)
+  * Cache last commit to accelerate the repository directory page visit (#10069)
+  * Implement basic app.ini and path checks to doctor cmd (#10064)
+  * Make WorkerPools and Queues flushable (#10001)
+  * Implement "embedded" command to extract static resources (#9982)
+  * Add API endpoint for repo transfer (#9947)
+  * Make archive prefixing configurable with a global setting (#9943)
+  * Add Unique Queue infrastructure and move TestPullRequests to this (#9856)
+  * Issue/PR Context Popups (#9822)
+  * Add "Update Branch" button to Pull Requests (#9784)
+  * Add require signed commit for protected branch (#9708)
+  * Mark PR reviews as stale at push and allow to dismiss stale approvals (#9532)
+  * Add API notification endpoints (#9488)
+  * Issue search support elasticsearch (#9428)
+  * Add API branch protection endpoint (#9311)
+  * Add a new command doctor to check if some wrong configurations on gitea instance (#9095)
+  * Add support for migrating from Gitlab (#9084)
+  * Add support for database schema in PostgreSQL (#8819)
+  * Add setting to set default and global disabled repository units. (#8788)
+  * Language statistics bar for repositories (#8037)
+  * Restricted users (#6274)
+* BUGFIXES
+  * Fix commenting on non-utf8 encoded files (#11916) (#11950)
+  * Use google/uuid to instead satori/go.uuid (#11943) (#11946)
+  * Align show/hide outdated button on code review block (#11932) (#11944)
+  * Update to go-git v5.1.0 (#11936) (#11941)
+  * Use ID or Where to instead directly use Get when load object from database (#11925) (#11934)
+  * Update CommitsAhead CommitsBehind on Pull BaseBranch Change too (#11912) (#11915)
+  * Invalidate comments when file is shortened (#11882) (#11884)
+  * Rework api/user/repos for pagination (#11827) (#11877)
+  * Handle more pathological branch and tag names (#11843) (#11863)
+  * Add doctor check to set IsArchived false if it is null (partial #11853) (#11859)
+  * Prevent panic on empty HOST for mysql (#11850) (#11856)
+  * Use DEFAULT_PAGING_NUM instead of MAX_RESPONSE_ITEMS in ListOptions (#11831) (#11836)
+  * Fix reply octicon (#11821) (#11822)
+  * Honor DEFAULT_PAGING_NUM for API (#11805) (#11813)
+  * Ensure rejected push to refs/pull/index/head fails nicely (#11724) (#11809)
+  * In File Create/Update API return 404 if Branch does not exist (#11791) (#11795)
+  * Fix doer of rename repo (#11789) (#11794)
+  * Initialize SimpleMDE when making a code comment (#11749) (#11785)
+  * Fix timezone on issue deadline (#11697) (#11784)
+  * Fix to allow comment poster to edit or delete his own comments (#11671) (#11774)
+  * Show full 500 error in API when Gitea in dev mode (#11641) (#11753)
+  * Add missing templates for Matrix system webhooks (#11729) (#11748)
+  * Fix verification of subkeys of default gpg key (#11713) (#11747)
+  * Fix styling for commiter on diff view (#11715) (#11744)
+  * Properly truncate system notices (#11714) (#11742)
+  * Handle expected errors in FileCreate & FileUpdate API (#11643) (#11718)
+  * Fix missing authorization check on pull for public repos of private/limited org (#11656) (#11682)
+  * Doctor check & fix db consistency (#11111) (#11676)
+  * Exclude generated files from language statistics (#11653) (#11670)
+  * Return json on 500 error from API (#11574) (#11659)
+  * When must change password only show Signout (#11600) (#11637)
+  * Backport various styling fixes (#11619)
+  * Fix wrong milestone in webhook message (#11596) (#11611)
+  * Fix serviceworker output file and misc improvements (#11562) (#11610)
+  * When initialising repositories ensure that the user doing the creation is the initializer (#11601) (#11608)
+  * Prevent empty query parameter being set on dashboard (#11561) (#11604)
+  * Fix images in wiki edit preview (#11546) (#11602)
+  * Prevent (caught) panic on login (#11590) (#11597)
+  * Prevent transferring repos to invisible orgs (#11517) (#11549)
+  * Move serviceworker to workbox and fix SSE interference (#11538) (#11547)
+  * API PullReviewComment HTMLPullURL should return the HTMLURL (#11501) (#11533)
+  * Fix repo-list private and total count bugs (#11500) (#11532)
+  * Fix form action template substitutions on admin pages (backport #11519) (#11531)
+  * Fix a bug where the reaction emoji doesn't disappear. (#11489) (#11530)
+  * TrimSpace when reading InternalToken from a file (#11502) (#11524)
+  * Fix selected line color in arc-green (#11492) (#11520)
+  * Make localstorage read ssh or https correctly (#11483) (#11490)
+  * Check branch protection on IsUserAllowedToUpdate (#11448)
+  * Fix margin on attached segment headers when they are separated by other element (#11425)
+  * Fix webhook template when validation errors occur (#11421)
+  * Fix NPE in template due to missing signing key on commit page (#11392)
+  * Restore active background to Register button on Register page (#11390)
+  * Fix hook failure due to relative LFS_CONTENT_PATH (#11362)
+  * Correctly set the organization num repos (#11339)
+  * Prevent 500 with badly formed task list (#11328)
+  * Allow compare page to look up base, head, own-fork, forkbase-of-head (#11327)
+  * Handle panics that percolate up to the graceful module (#11291)
+  * Don't allow registration via the web form, when AllowOnlyExternalRegistration is True (#11248)
+  * Patch fomantic-ui to workaround build issue (#11244)
+  * Prevent panic during wrappedConn close at hammertime (#11219)
+  * On logout force redirect to start page (#11202)
+  * Fix creation of Organization repos by Users with max created personal repos (#11183)
+  * Add option to increase provided OAuth2 token maximum size (#11180)
+  * Log the indexer path on failure (#11172)
+  * Ensure that relative paths in edit preview work (#11143)
+  * Make API EditIssue and EditPullRequest issue notifications (#11123)
+  * Send 404 immediately for known public requests (#11117)
+  * Remove nil inserts in models (#11096)
+  * Add GetReviews() to RetryDownloader (#11093)
+  * Remove nonexistent serviceworker entries (#11091)
+  * Simplify and fix GetApprovalCounts (#11086)
+  * Fix wiki revision template and simplify some tmpl conditions (#11080)
+  * Make branch parameter optional for /api/v1/repos/{owner}/{repo}/contents/{filepath} (#11067)
+  * Align review-item svg octicons (#11065)
+  * Automatically remove Watches, Assignments, etc if user loses access due to being removed as collaborator or from a team (#10997)
+  * Users should not be able to prohibit their own login (#10970)
+  * Fix scrollbar issues in dropdowns (#10897)
+  * Change the order of issues.closed_by to list opening user first (#10876)
+  * Allow site admin to check /api/v1/orgs endpoints (#10867)
+  * Avoid logging []byte in queue failures - convert to string first (#10865)
+  * Use ErrKeyUnableToVerify if fail to calc fingerprint in ssh-keygen (#10863)
+  * Fix assignees double load bug (#10856)
+  * Handle push rejection in branch and upload (#10854)
+  * In authorized_keys use double-quote for windows compatibility (#10841)
+  * Fix milestone template (#10824)
+  * log.Fatal on failure to listen to SSH port (#10795)
+  * Fix forked repo has no icon and language stat. (#10791)
+  * Fix tag/release deletion (#10663)
+  * Fix webhook migration (#10641)
+  * Migration for deleting orphaned dependencies (#10617)
+  * Add migration to fix the old broken merge-bases (#10604)
+  * Update templates for Go 1.14 (#10596)
+  * Remove unnecessary parentheses in wiki/view template (#10583)
+  * Change default value of DefaultCommandExecutionTimeout to match docs (#10581)
+  * Handle panic in indexer initialisation better (#10534)
+  * Set correct content_type value for Gogs/Gitea webhooks (#9504) (#10456)
+  * Fixed wrong AppSubUrl in multiple templates (#10447)
+  * Fix profile page CSS (#10406)
+  * Inject SVG sprite via ajax (#10320)
+  * Fix migration information update bug when linked github account (#10310)
+  * Allow admin to check org membership by API for other users (#10201)
+  * Fix topics dropdown (#10167)
+  * Ensure DeleteUser is not allowed to Delete Orgs and visa versa (#10134)
+  * Fix IsErrPullClosed (#10093)
+  * Accept punctuation after simple+cross repository issue references (#10091)
+  * On merge of already closed PR redirect back to the pulls page (#10010)
+  * Fix crowdin update script (#9969)
+  * Fix pull view when head repository or head branch missed and close related pull requests when delete head repository or head branch (#9927)
+  * Add option to prevent LDAP from deactivating everything on empty search (#9879)
+  * Fix admin handling at merge of PR (#9749)
+  * err_admin_name_pattern_not_allowed String Clarification (#9731)
+  * Fix wrong original git service type on a migrated repository (#9693)
+  * Fix ref links in issue overviews for tags (#8742)
+* ENHANCEMENTS
+  * Fix search form button overlap (#11840) (#11864)
+  * Make tabular menu styling consistent for arc-green (#11570) (#11798)
+  * Add option to API to update PullRequest base branch (#11666) (#11796)
+  * Increase maximum SQLite variables count to 32766 (#11696) (#11783)
+  * Update emoji dataset with skin tone variants (#11678) (#11763)
+  * Add logging to long migrations (#11647) (#11691)
+  * Change language statistics to save size instead of percentage (#11681) (#11690)
+  * Allow different HardBreaks settings for documents and comments (#11515) (#11599)
+  * Fix alignment for commits on dashboard (#11595) (#11680)
+  * Default MSSQL port 0 to allow automatic detection by default (#11642) (#11673)
+  * Handle expected errors in AddGPGkey API  (#11644) (#11661)
+  * Close EventSource before unloading the page (#11539) (#11557)
+  * Ensure emoji render with regular font-weight (#11541) (#11545)
+  * Fix webpack chunk loading with STATIC_URL_PREFIX (#11526) (#11542)
+  * Tweak reaction buttons (#11516)
+  * Use more toned colors for selected line (#11493) (#11511)
+  * Increase width for authors on commit view (#11441)
+  * Hide archived repos by default in repo-list (#11440)
+  * Better styling for code review comment textarea (#11428)
+  * Support view individual commit for wiki pages (#11415)
+  * Fix yellow background on active elements in code review (#11414)
+  * Better styling for code review comment form (#11413)
+  * Change install description on homepage (#11395)
+  * Ensure search action button is coalesced to adjacent input (#11385)
+  * Switch code editor to Monaco (#11366)
+  * Add paging and archive/private repository filtering to dashboard list (#11321)
+  * Changed image of openid-connect logo for better look on arc-green theme (#11312)
+  * Load Repo Topics on blame view too (#11307)
+  * Change the style in admin notice content view from `

` to `

` (#11301)
+  * Allow log.xxx.default to set logging settings for the default logger only (#11292)
+  * Automatically attempt auto recovery of broken disk queues (Update lunny/levelqueue to 0.3.0) (#11285)
+  * Make sendmail a Process and have default timeout (#11256)
+  * Check value of skip-repository flag in dump command (#11254)
+  * Fix submit review form (#11252)
+  * Allow unauthenticated users to compare (#11240)
+  * Add EventSource support (#11235)
+  * Refactor Milestone related (#11225)
+  * Add pull review API endpoints (#11224)
+  * Add a 'this' to issue close/reopened messages (#11204)
+  * When migrating from Gitlab map Approvals to approving Reviews (#11147)
+  * Improve representation of attachments in issues (#11141)
+  * Protect default branch against deletion (#11115)
+  * Add X-Total-Count on /repos/{owner]/{repo}/pulls API endpoint (#11113)
+  * Fix status label on branches list vertical alignment (#11109)
+  * Add single release page and latest redirect (#11102)
+  * Add missing commit states to PR checks template (#11085)
+  * Change icon on title for merged PR to git-merge (#11064)
+  * Add MergePull comment type instead of close for merge PR (#11058)
+  * Upgrade jQuery to 3.5.0, remove jQuery-Migrate, fix deprecations (#11055)
+  * Consolidate author name across timeline (#11053)
+  * Refactor UpdateOAuth2Application (#11034)
+  * Support unicode emojis and remove emojify.js (#11032)
+  * Add git hook "warning" to admin panel (#11030)
+  * Add flash notify for email preference setting success (#11027)
+  * Remove package code.gitea.io/gitea/modules/git import out of models (#11025)
+  * Match arc-green code tag color to code blocks (#11023)
+  * Move syntax highlighting to web worker (#11017)
+  * Prevent merge of outdated PRs on protected branches (#11012)
+  * Add Get/Update for api/v1/user/applications/oauth2 (#11008)
+  * Upgrade to most recent bluemonday (#11007)
+  * Tweak code tags in markdown (#11000)
+  * Reject duplicate AccessToken names (#10994)
+  * Fix Ctrl-Enter shortcut for issues (#10986)
+  * Provide `OwnerName` field for README template (#10981)
+  * Prettify Timeline (#10972)
+  * Add issue subscription check to API (#10967)
+  * Use AJAX for notifications table (#10961)
+  * Adjust label padding (#10957)
+  * Avoiding directory execution on hook (#10954) (#10955)
+  * Migrate ActivityHeatmap to Vue SFC (#10953)
+  * Change merge strategy: do not check write access if user in merge white list (#10951)
+  * Enable GO111MODULE=on globally in Makefile (#10939)
+  * API endpoint to get single commit via SHA and Ref (#10915)
+  * Add accordion to release list and hide non-latest (#10910)
+  * Split dashboard elements into separate template files (#10885)
+  * Add more message on sidebar menus (#10872)
+  * Set MySQL rowtype to dynamic for new tables (#10833)
+  * Completely fix task-list checkbox styling (#10798)
+  * Hide gear icon for user who can't use them on sidebar (#10750)
+  * Refactor Cron and merge dashboard tasks (#10745)
+  * Change review status icons on pr view style to github style (#10737)
+  * Make pagination optional for API list notification endpoints (#10714)
+  * Fix tab indentation in code view (#10671)
+  * Fix task-list checkbox styling (#10668)
+  * Multiple LFS improvements (#10667)
+  * Make PR message on pushes configurable (#10664)
+  * Move dropzone.js to npm/webpack (#10645)
+  * Ensure Update button is enabled even when CI has failed (#10640)
+  * Add restricted user filter to LDAP authentication (#10600)
+  * Add Yandex OAuth2 provider (#8335) (#10564)
+  * Make avatar lookup occur at image request (#10540)
+  * Prevent accidential selection of language stats bar (#10537)
+  * Add fluid-icon (#10491)
+  * Inform participants on UI too (#10473)
+  * Build with go 1.14 (and raise minimum go version to 1.12) (#10467)
+  * Add max-file-size to LFS (#10463)
+  * Enable paggination for ListRepoTags API (#10454)
+  * Update JS dependencies (#10450)
+  * Show the username as a fallback on feeds if full name is blank (#10438)
+  * Various dark theme fixes (#10416)
+  * Display pull request head branch even the branch deleted or repository deleted (#10413)
+  * Prevent Firefox from using apple-touch-icon (#10402)
+  * Fix input[type=file] on dark theme (#10382)
+  * Improve mobile review-box sizing (#10297)
+  * Notification: queue ui.go notification-service (#10281)
+  * Add detected file language to code search (#10256)
+  * Index code and stats only for non-empty repositories (#10251)
+  * Add Approval Counts to pulls list (#10238)
+  * Limit label list height on edit issue page (#10216)
+  * Improve 404 error message (#10214)
+  * Tweak locale to respect singular conflicting file message in PR list (#10177)
+  * Fix commit view (#10169)
+  * Reorganize frontend files and tooling (#10168)
+  * Allow emoji on popup label (#10166)
+  * ListIssues add filter for milestones API (#10148)
+  * Show if a PR has conflicting files on the PR lists (#10130)
+  * Fix inconsistent label color format in API (#10129)
+  * Show download count info in release list (#10124)
+  * Add Octicon SVG spritemap (#10107)
+  * Update aria-fixed semantic-dropdown to fomantic master (#10096)
+  * Fix apple-touch-icon, regenerate images (#10065)(#10006)
+  * Style blockquote for default issue mail template (#10024)
+  * More expansions in template repositories (#10021)
+  * Allow list collaborators for users with Read access to repo (#9995)
+  * Add explicit dimensions to navbar avatar (#9986)
+  * Remove loadCSS and preload woff2 icon fonts (#9976)
+  * Fix commit view JS features, reimplement folding (#9968)
+  * Fix review avatar image (#9962)
+  * Improve notification pager (#9821)
+  * Move jquery and jquery-migrate to npm/webpack (#9813)
+  * Change font to Roboto to support more charsets (#9803)
+  * Move mailer to use a queue (#9789)
+  * Issue search on my related repositories (#9758)
+  * Add "before" query to ListIssueComments and ListRepoIssueComments API (#9685)
+  * Move tracked time api convert to convert package (#9665)
+  * Improve PR info in default merge message (#9635)
+  * Granular webhook events (#9626)
+  * Add Reviewed-on in commit message (#9623)
+  * Add top author stats to activity page (#9615)
+  * Allow repo admin to merge PR regardless of review status (#9611)
+  * Migrate reactions when migrating repository from github (#9599)
+  * API orgEditTeam make Fields optional (#9556)
+  * Move create/fork repository from models to modules/repository (#9489)
+  * Migrate reviews when migrating repository from github (#9463)
+  * Times API add filters (#9373)
+  * Move push commits from models to modules/repository (#9370)
+  * Add API endpoint to check notifications [Extend #9488] (#9595)
+  * Add GET /orgs API endpoint (#9560)
+  * API add/generalize pagination (#9452)
+  * Make create org repo API call same as github (#9186)
+* BUILD
+  * Turn off go modules for xgo and gxz (#10963)
+  * Add gitea-vet (#10948)
+  * Rename scripts to build and add revive command as a new build tool command (#10942)
+  * Add 'make lint', restructure 'compliance' pipeline (#10861)
+  * Move JS build dependencies to 'dependencies' (#10763)
+  * Use whitelist to find go files, run find only once (#10594)
+  * Move vue and vue-calendar-heatmap to npm/webpack (#10188)
+  * Move jquery.are-you-sure to npm/webpack (#10063)
+  * Move highlight.js to npm/webpack (#10011)
+  * Generate Bindata if TAGS="bindata" and not up-to-date (#10004)
+  * Move CSS build to webpack (#9983)
+  * Move fomantic target, update 'make help' (#9945)
+  * Add css extraction and minification to webpack (#9944)
+  * Misc webpack tweaks (#9924)
+  * Make node_modules a order-only prerequisite (#9923)
+  * Update documentation for the go module era (#9751)
+  * Move swagger-ui to webpack/npm and update it to 3.24.3 (#9714)
+  * Use npm to manage fomantic and only build needed components (#9561)
+* MISC
+  * Add gnupg to Dockerfile (#11365)
+  * Update snapcraft.yaml for core18 and latest features (#11300)
+  * Update JS dependencies, min Node.js version 10.13 (#11246)
+  * Change default charset for MySQL on install to utf8mb4 (#10989)
+  * Return issue subscription status from API subscribe (#10966)
+  * Fix queue log param (#10733)
+  * Add warning when using relative path to app.ini (#10104)
+
+## [1.11.7](https://github.com/go-gitea/gitea/releases/tag/v1.11.7) - 2020-06-18
+
+* BUGFIXES
+  * Use ID or Where to instead directly use Get when load object from database (#11925) (#11935)
+  * Fix __webpack_public_path__ for 1.11 (#11907)
+  * Fix verification of subkeys of default gpg key (#11713) (#11902)
+  * Remove unnecessary parentheses in wiki/view template (#11781)
+  * Doctor fix xorm.Count nil on sqlite error (#11741)
+
+## [1.11.6](https://github.com/go-gitea/gitea/releases/tag/v1.11.6) - 2020-05-30
+
+* SECURITY
+  * Fix missing authorization check on pull for public repos of private/limited org (#11656) (#11683)
+  * Use session for retrieving org teams (#11438) (#11439)
+* BUGFIXES
+  * Return json on 500 error from API (#11574) (#11660)
+  * Fix wrong milestone in webhook message (#11596) (#11612)
+  * Prevent (caught) panic on login (#11590) (#11598)
+  * Fix commit page js error (#11527)
+  * Use media links for img in post-process (#10515) (#11504)
+  * Ensure public repositories in private organizations are visible and fix admin organizations list (#11465) (#11475)
+  * Set correct Content-Type value for Gogs/Gitea webhooks (#9504) (#10456) (#11461)
+  * Allow all members of private orgs to see public repos (#11442) (#11459)
+  * Whenever the ctx.Session is updated, release it to save it before sending the redirect (#11456) (#11457)
+  * Forcibly clean and destroy the session on logout (#11447) (#11451)
+  * Fix /api/v1/orgs/* endpoints by changing parameter to :org from :orgname (#11381)
+  * Add tracked time fix to doctor (part of #11111) (#11138)
+  * Fix webpack chunk loading with STATIC_URL_PREFIX (#11526) (#11544)
+  * Remove unnecessary parentheses in wiki/revision.tmpl to allow 1.11 to build on go1.14  (#11481)
+
+## [1.11.5](https://github.com/go-gitea/gitea/releases/tag/v1.11.5) - 2020-05-09
+
+* BUGFIXES
+  * Prevent timer leaks in Workerpool and others (#11333) (#11340)
+  * Fix tracked time issues (#11349) (#11354)
+  * Add NotifySyncPushCommits to indexer notifier (#11309) (#11338)
+  * Allow X in addition to x in tasks (#10979) (#11335)
+  * When delete tracked time through the API return 404 not 500 (#11319) (#11326)
+  * Prevent duplicate records in organizations list when creating a repository (#11303) (#11325)
+  * Manage port in submodule refurl (#11305) (#11323)
+  * api.Context.NotFound(...) should tolerate nil (#11288) (#11306)
+  * Show pull request selection even when unrelated branches (#11239) (#11283)
+  * Repo: milestone: make /milestone/:id endpoint accessible (#11264) (#11282)
+  * Fix GetContents(): Dont't ignore Executables (#11192) (#11209)
+  * Fix submodule paths when AppSubUrl is not root (#11098) (#11176)
+  * Prevent clones and pushes to disabled wiki (#11131) (#11134)
+  * Remove errant third closing curly-bracket from account.tmpl and send account ID in account.tmpl (#11130)
+  * On Repo Deletion: Delete related TrackedTimes too (#11110) (#11125)
+  * Refresh codemirror on show pull comment tab (#11100) (#11122)
+  * Fix merge dialog on protected branch with missing required statuses (#11074) (#11084)
+  * Load pr Issue Poster on API too (#11033) (#11039)
+  * Fix release counter on API repository info (#10968) (#10996)
+  * Generate Diff and Patch direct from Pull head (#10936) (#10938)
+  * Fix rebase conflict detection in git 2.26 (#10929) (#10930)
+* ENHANCEMENT
+  * Fix 404 and 500 image size in small size screen (#11043) (#11049)
+  * Multiple Gitea Doctor improvements (#10943) (#10990) (#10064) (#9095) (#10991)
+
+## [1.11.4](https://github.com/go-gitea/gitea/releases/tag/v1.11.4) - 2020-04-01
+
+* BUGFIXES
+  * Only update merge_base if not already merged (#10909)
+  * Fix milestones too many SQL variables bug (#10880) (#10904)
+  * Protect against NPEs in notifications list (#10879) (#10883)
+  * Convert plumbing.ErrObjectNotFound to git.ErrNotExist in getCommit (#10862) (#10868)
+  * Convert plumbing.ErrReferenceNotFound to git.ErrNotExist in GetRefCommitID (#10676) (#10797)
+  * Account for empty lines in receive-hook message (#10773) (#10784)
+  * Fix bug on branch API (#10767) (#10775)
+  * Migrate to go-git/go-git v5.0.0 (#10735) (#10753)
+  * Fix hiding of fields in authorization source page (#10734) (#10752)
+  * Prevent default for linkAction (#10742) (#10743)
+
+## [1.11.3](https://github.com/go-gitea/gitea/releases/tag/v1.11.3) - 2020-03-10
+
+* BUGFIXES
+  * Prevent panic in stopwatch (#10670) (#10673)
+  * Fix bug on pull view when required status check no ci result (#10648) (#10651)
+  * Build explicitly with Go 1.13 (#10684)
+
+## [1.11.2](https://github.com/go-gitea/gitea/releases/tag/v1.11.2) - 2020-03-06
+
+* BREAKING
+  * Various fixes in login sources (#10428) (#10429)
+* SECURITY
+  * Ensure only own addresses are updated (#10397) (#10399)
+  * Logout POST action (#10582) (#10585)
+  * Org action fixes and form cleanup (#10512) (#10514)
+  * Change action GETs to POST (#10462) (#10464)
+  * Fix admin notices (#10480) (#10483)
+  * Change admin dashboard to POST (#10465) (#10466)
+  * Update markbates/goth (#10444) (#10445)
+  * Update crypto vendors (#10385) (#10398)
+* BUGFIXES
+  * Allow users with write permissions to modify issue descriptions and comments. (#10623) (#10626)
+  * Handle deleted base branch in PR (#10618) (#10619)
+  * Delete dependencies when deleting a repository (#10608) (#10616)
+  * Ensure executable bit is kept on the web editor (#10607) (#10614)
+  * Update mergebase in pr checker (#10586) (#10605)
+  * Fix release attachments being deleted while upgrading (#10572) (#10573)
+  * Fix redirection path if Slack webhook channel is invalid (#10566)
+  * Fix head.tmpl og:image picture location (#10531) (#10556)
+  * Fix 404 after activating secondary email (#10547) (#10553)
+  * Show Signer in commit lists and add basic trust (#10425 & #10511) (#10524)
+  * Fix potential bugs (#10513) (#10518)
+  * Use \[:space:\] instead of \\s (#10508) (#10509)
+  * Avoid mailing users that have explicitly unwatched an issue (#10475) (#10500)
+  * Handle push rejection message in Merge & Web Editor (#10373) (#10497)
+  * Fix SQLite concurrency problems by using BEGIN IMMEDIATE (#10368) (#10493)
+  * Fix double PR notification from API (#10482) (#10486)
+  * Show the username as a fallback on feeds if full name is blank (#10461)
+  * Trigger webhooks on issue label-change via API too (#10421) (#10439)
+  * Fix git reference type in webhooks (#10427) (#10432)
+  * Prevent panic on merge to PR (#10403) (#10408)
+  * Fix wrong num closed issues on repository when close issue via commit… (#10364) (#10380)
+  * Reading pull attachments should depend on read UnitTypePullRequests (#10346) (#10354)
+  * Set max-width on review-box comment box (#10348) (#10353)
+  * Prevent nil pointer in GetPullRequestCommitStatusState (#10342) (#10344)
+  * Fix protected branch status check settings (#10341) (#10343)
+  * Truncate long commit message header (#10301) (#10319)
+  * Set the initial commit status to Success otherwise it will always be Pending (#10317) (#10318)
+  * Don't manually replace whitespace during render (#10291) (#10315)
+* ENHANCEMENT
+  * Admin page for managing user e-mail activation (#10557) (#10579)
+
+## [1.11.1](https://github.com/go-gitea/gitea/releases/tag/v1.11.1) - 2020-02-15
+
+* BUGFIXES
+  * Repo name added to automatically generated commit message when merging (#9997) (#10285)
+  * Fix Workerpool deadlock (#10283) (#10284)
+  * Divide GetIssueStats query in smaller chunks (#10176) (#10282)
+  * Fix reply on code review (#10257)
+  * Stop hanging issue indexer initialisation from preventing shutdown (#10243) (#10249)
+  * Fix filter label emoji width (#10241) (#10244)
+  * Fix issue sidebar menus having an infinite height (#10239) (#10240)
+  * Fix commit between two commits calculation if there is only last commit (#10225) (#10226)
+  * Only check for conflicts/merging if the PR has not been merged in the interim (#10132) (#10206)
+  * Blacklist manifest.json & milestones user (#10292) (#10293)
+
+## [1.11.0](https://github.com/go-gitea/gitea/releases/tag/v1.11.0) - 2020-02-10
+
+* BREAKING
+  * Fix followers and following tabs in profile (#10202) (#10203)
+  * Make CertFile and KeyFile relative to CustomPath (#9868) (#9874)
+  * Remove unused endpoints (#9538)
+  * Prefix all user-generated IDs in markup (#9477)
+  * Enforce Gitea environment for pushes (#8982)
+  * Hide some user information via API if user have not enough permissions (#8655)
+  * Move startpage/homepage translation to crowdin (#8596)
+* SECURITY
+  * Never allow an empty password to validate (#9682) (#9683)
+  * Prevent redirect to Host (#9678) (#9679)
+  * Swagger hide search field (#9554)
+  * Add "search" to reserved usernames (#9063)
+  * Switch to fomantic-ui (#9374)
+  * Only serve attachments when linked to issue/release and if accessible by user (#9340)
+* FEATURES
+  * Webhooks should only show sender if it makes sense (#9601)
+  * Provide Default messages for merges (#9393)
+  * Add description to labels on create issue (#9392)
+  * Graceful Queues: Issue Indexing and Tasks (#9363)
+  * Default NO_REPLY_ADDRESS to DOMAIN (#9325)
+  * Allow FCGI over unix sockets (#9298)
+  * Graceful: Xorm, RepoIndexer, Cron and Others (#9282)
+  * Add API for Reactions (#9220)
+  * Graceful: Cancel Process on monitor pages & HammerTime (#9213)
+  * Graceful: Allow graceful restart for unix sockets (#9113)
+  * Graceful: Allow graceful restart for fcgi (#9112)
+  * Sign protected branches (#8993)
+  * Add Graceful shutdown for Windows and hooks for shutdown of goroutines (#8964)
+  * Add Gitea icon to Emojis (#8950)
+  * Expand/Collapse Files and Blob Excerpt while Reviewing/Comparing code (#8924)
+  * Allow Custom Reactions (#8886)
+  * Close/reopen issues by keywords in titles and comments (#8866)
+  * Allow incompletely specified Time Formats (#8816)
+  * Prevent upload (overwrite) of lfs locked file (#8769)
+  * Template Repositories (#8768)
+  * Add /milestones endpoint (#8733)
+  * Make repository management section handle lfs locks (#8726)
+  * Respect LFS File Lock on UI (#8719)
+  * Add team option to grant rights for all organization repositories (#8688)
+  * Enabling and disabling the commit button to prevent empty commits (web editor) (#8590)
+  * Add setting to disable BASIC authentication (#8586)
+  * Expose db.SetMaxOpenConns and allow non MySQL dbs to set conn pool params (#8528)
+  * Allow Protected Branches to Whitelist Deploy Keys (#8483)
+  * Push to create repo (#8419)
+  * Sign merges, CRUD, Wiki and Repository initialisation with gpg key (#7631)
+  * Add basic repository lfs management (#7199)
+* BUGFIXES
+  * Fix code-expansion arc-green theme bug (#10180) (#10185)
+  * Prevent double wait-group decrement (#10170) (#10175)
+  * Allow emoji on review head comments (#10159) (#10174)
+  * Fix issue/pull link (#10158) (#10173)
+  * Fix push-create SSH bugs (#10145) (#10151)
+  * Prevent DeleteUser API abuse (#10125) (#10128)
+  * Fix issues/pulls dashboard paging error (#10114) (#10115)
+  * Add button to revert SimpleMDE to plain textarea (#10099) (#10102)
+  * Fix branch page pull request title and link error (#10092) (#10097)
+  * Fix PR API: Only try to get HeadBranch if HeadRepo exist (#10029) (#10088)
+  * Update topics repo count when deleting repository (#10051) (#10081)
+  * Show pull icon on pull requests (#10061) (#10062)
+  * Fix milestone API state parameter unhandled (#10049) (#10052)
+  * Move to using a temporary repo for pushing new PRs (#10009) (#10042)
+  * Fix wiki raw view on sub path (#10002) (#10040)
+  * Ensure that feeds are appropriately restricted (#10018) (#10019)
+  * Sanitize credentials in mirror form (#9975) (#9991)
+  * Close related pull requests when deleting head repository or head branch (#9927) (#9974)
+  * Switch to use -f instead of -F for sendmail (#9961) (#9970)
+  * Fix file rename/copy not supported by indexer (#9965) (#9967)
+  * Fix repo indexer not updating upon push (#9957) (#9963)
+  * Don't convert ellipsis in markdown (#9905) (#9937)
+  * Fixed repo link in generated comment for cross repository dependency (#9863) (#9935)
+  * Check if diff actually contains sections when rendering (#9926) (#9933)
+  * Fix wrong hint when status checking is running on pull request view (#9886) (#9928)
+  * Fix RocketChat (#9908) (#9921)
+  * Do not try to recreate ldap user if they are already created (#9900) (#9919)
+  * Create terminated channel in queue_redis (#9910) (#9911)
+  * Prevent empty LDAP search result from deactivating all users (#9879) (#9896)
+  * Fix wrong permissions check when issues/prs shared operations (#9885) (#9889)
+  * Check user != nil before checking values (#9881) (#9883)
+  * Allow hyphen in language name (#9873) (#9880)
+  * Ensure that 2fa is checked on reset-password (#9857) (#9876)
+  * Fix issues/pulls dependencies problems (#9842) (#9864)
+  * Fix markdown anchor links (#9673) (#9840)
+  * Allow assignee on Pull Creation when Issue Unit is deactivated (#9836) (#9837)
+  * Fix download file wrong content-type (#9825) (#9834)
+  * Fix wrong poster identity on a migrated pull request when submit review (#9827) (#9830)
+  * Fix database dump when log directory is missing (#9818) (#9819)
+  * Fix compare (#9808) (#9814)
+  * Fix push-to-create (#9772) (#9797)
+  * Fix missing msteam webhook on organization (#9781) (#9794)
+  * Fix missing unlock in uniquequeue (#9790) (#9791)
+  * Fix add team on collaborator page when same name as organization (#9778)
+  * DeleteRepoFile incorrectly handles Delete to new branch (#9769) (#9775)
+  * Fix milestones page (#9771)
+  * Fix SimpleMDE quote reply (#9757) (#9768)
+  * Fix missing updated time on migrated issues and comments (#9744) (#9764)
+  * Move Errored PRs out of StatusChecking (#9675) (#9726)
+  * Make hook status printing configurable with delay (#9641) (#9725)
+  * ​Fix /repos​/issues​/search (#9698) (#9724)
+  * Silence fomantic error regarding tabs (#9713) (#9718)
+  * Remove unused lock (#9709) (#9710)
+  * Remove q.lock.Unlock() in setInternal to prevent panic (#9705) (#9706)
+  * Load milestone in API PR list (#9671) (#9700)
+  * Don't attempt to close issue if already closed (#9696) (#9699)
+  * Remove google font call (#9668) (#9681)
+  * Eliminate horizontal scroll caused by footer (#9674)
+  * Fix nil reference in repo generation (#9660) (#9666)
+  * Add HTML URL to API Issues (#9654) (#9661)
+  * Add PR review webhook to Telegram (#9653) (#9655)
+  * Use filepath.IsAbs instead of path.IsAbs (#9651) (#9652)
+  * Disable remove button on repository teams when have access to all (#9640)
+  * Clean up old references on branch delete (#9614)
+  * Hide public repos owned by private orgs (#9609)
+  * Fix access issues on milestone and issue overview pages. (#9603)
+  * Fix error logged when repos qs is empty (#9591)
+  * Dont trigger notification twice on issue assignee change (#9582)
+  * Fix mirror pushed commit actions (#9572)
+  * Allow only specific columns to be updated on issue via API (#9189) (#9539)
+  * Fix default avatar for ghost user (#9536)
+  * Fix download of release attachments with same name (#9529)
+  * Resolve deprecated INI conversion (#9525)
+  * Ignore empty avatars during database migration (#9520)
+  * Fix deleted branch isn't removed when push the branch again (#9516)
+  * Fix repository issues pagination bug when there are more than one label filter (#9512)
+  * Fix SetExpr failed (#9506)
+  * Remove obsolete file private/push_update.go (#9503)
+  * When recreating hooks, delete them first so they are recreated with the umask (#9502)
+  * Properly enforce gitea environment for pushes (#9501)
+  * Fix datarace on repo indexer queue (#9490)
+  * Add call to load repo prior to redirect in add/remove dependency code (#9484)
+  * Wrap the code indexer (#9476)
+  * Use Req.URL.RequestURI() to cope with FCGI urls (#9473)
+  * Set default ssh.minimum_key_sizes (#9466)
+  * Fixed issue with paging in /repos/{owner}/{repo}/git/trees/{sha} api (#9459)
+  * Fix wrong notification on merge (#9450)
+  * Issue with Migration rule v111 (#9449)
+  * Trigger webhook when deleting a branch after merging a PR (#9424)
+  * Add migration to sanitize repository original_url (#9423)
+  * Use OriginalURL instead of CloneAddr in migration logging (#9418)
+  * Push update after branch is restored (#9416)
+  * Fix wrong migration (#9381)
+  * Fix show repositories filter (#9234) (#9379)
+  * Fix Slack webhook payload title generation to work with Mattermost (#9378)
+  * Fix double webhook for new PR (#9375)
+  * AuthorizedKeysCommand should not query db directly (#9371)
+  * Fix missed change to GetManager() (#9361)
+  * Fix cache problem on dashboard (#9358)
+  * RepoIndexer: DefaultBranch needs to be prefixed by BranchPrefix (#9356)
+  * Fix protected branch using IssueID (#9348)
+  * Fix nondeterministic behavior (#9341)
+  * Fix PR/issue redirects when having external tracker (#9339)
+  * Remove release attachments which repository has been deleted (#9334)
+  * Fix issue indexer not triggered when migrating a repository (#9332)
+  * Add SyncTags to uploader interface (#9326)
+  * Fix bug that release attachment files not deleted when deleting repository (#9322)
+  * Only sync tags after all migration release batches are completed (#9319)
+  * File Edit: Author/Committer interchanged (#9297)
+  * prebuild CSS/JS before xgo release binaries (#9293)
+  * Log: Ensure FLAGS=none shows no flags (#9287)
+  * Make Diff Detail on Pull Request Changed File UI always on Top (#9280)
+  * Switch CSS minifier to cssnano (#9260)
+  * Fix latest docker image haven't include static files. (#9252)
+  * Don't link wiki revision to commit (#9244)
+  * Change review content column to type text in db (#9229)
+  * Fixed topic regex pattern and added search by topic links after save (#9219)
+  * Add language to user API responce (#9215)
+  * Correct tooltip message blocked by dependencies (#9211)
+  * Add SimpleMDE and Fix Image Paste for Issue/Comment Editor (#9197)
+  * Fix panic when diff (#9187)
+  * Fix #9151 - smtp logger configuration sendTos should be an array (#9154)
+  * Fix max length check and limit in multiple repo forms (#9148)
+  * Always Show Password Field on Link Account Sign-in Page (#9147)
+  * Properly fix displaying virtual session provider in admin panel (#9137)
+  * Fix race condition on indexer (#9136)
+  * Fix team links in HTML rendering (#9127)
+  * Fix race condition in ReplaceSanitizer (#9123)
+  * Fix what information is shown about user in API (#9115)
+  * Fix nil context user for template repositories (#9099)
+  * Hide given credentials for migrated repos. (#9097)
+  * Fix reCAPTCHA API URL (#9083)
+  * Fix password checks on admin create/edit user (#9076)
+  * Update golang.org/x/crypto vendor to use acme v2 (#9056)
+  * Ensure Written is set in GZIP ProxyResponseWriter (#9018)
+  * Fix wrong system notice when repository is empty (#9010)
+  * Fix broken link to branch from issue list (#9003)
+  * Fix bug when pack js (#8992)
+  * New review approvals shouldn't require a message (#8991)
+  * Shadow password correctly for session config (#8984)
+  * Don't send notification on pending reviews (#8943)
+  * Fix Notify Create Ref Error on tag creation (#8936)
+  * Convert EOL to UNIX-style to render MD properly (#8925)
+  * Migrate temp_repo.go to use git.NewCommand  (#8918)
+  * Fix issue with user.fullname (#8902)
+  * Add Close() method to gogitRepository (#8901)
+  * Enable punctuations ending mentions (#8889)
+  * Fix password complexity check on registration (#8887)
+  * Fix require external registration password (#8885)
+  * Fix edit content button on migrated issue content (#8877)
+  * Fix permission checks for close/reopen from commit (#8875)
+  * Fix API Bug (fail on empty assignees) (#8873)
+  * Stop using git count-objects and use raw directory size for repository (#8848)
+  * Fix count for commit graph last page (#8843)
+  * Fix to close opened io resources as soon as not needed (#8839)
+  * Improve notification (#8835)
+  * Fix new user form for non-local users (#8826)
+  * Fix: remove duplicated signed commit icons (#8820)
+  * Fix (open/closed) issue count when label excluded (#8815)
+  * Fix SSH2 conditional in key parsing code (#8806)
+  * Fix 500 when edit hook (#8782)
+  * On windows set core.longpaths true (#8776)
+  * Fix commit expand button to not go to commit link (#8745)
+  * Avoid re-issuing redundant cross-references. (#8734)
+  * Fix milestone close timestamp function (#8728)
+  * Move webhook codes from service to webhook notification (#8712)
+  * Show zero lines on the line counter if the file empty (#8700)
+  * Fix deadline on update issue or PR via API (#8696)
+  * make call createMilestoneComment on newIssue func (#8678)
+  * Send tag create and push webhook when release created on UI (#8671)
+  * Prevent chrome download page as html with alt + click (#8669)
+  * Fix 500 when getting user as unauthenticated user (#8653)
+  * Graceful fixes (#8645)
+  * Add SubURL to redirect path (#8632) (#8634)
+  * Fix extra columns from `label` table (#8633)
+  * Add SubURL to redirect path for transferred/renamed repos (#8632)
+  * Fix bug when migrate from API (#8631)
+  * Allow to merge if file path contains " or \ (#8629)
+  * Prevent removal of non-empty emoji panel following selection of duplicate (#8609)
+  * Ensure default gpg settings not nil and found commits have reference to repo (#8604)
+  * Set webhook Content-Type for application/x-www-form-urlencoded (#8599)
+  * Fix #8582 by handling empty repos (#8587)
+  * Fix of the diff statistics view on pull request's (#8581)
+  * Fix bug on pull requests when transfer head repository (#8564)
+  * Fix template error on account page (#8562)
+  * Allow externalID to be UUID (#8551)
+  * Fix ignored error on editorconfig api (#8550)
+  * Fix user avatar name (#8547)
+  * Ensure that GitRepo is set on Empty repositories (#8539)
+  * Add missed close in ServeBlobLFS (#8527)
+  * Fix migrate mirror 500 bug (#8526)
+  * Fix password complexity regex for special characters (on master) (#8525)
+* ENHANCEMENTS
+  * Explicitly refer to PR in squash-merge commit message in case of external tracker (#9844) (#9855)
+  * Add a /user/login landing page option (#9622)
+  * Some more e-mail notification fixes (#9596)
+  * Add branch protection option to block merge on requested changes. (#9592)
+  * Add footer extra links template (#9576)
+  * Fix for a wrong URL in activity page of repository.  (#9571)
+  * Update default issue template (#9568)
+  * Change markdown rendering from blackfriday to goldmark  (#9533)
+  * Extend file create api with dates (#9464)
+  * Add ActionCommentPull action (#9456)
+  * Response for context on retry database connection (#9444)
+  * Refactor webhooks to reduce code duplication (#9422)
+  * update couchbase deps for new license (#9419)
+  * Add .ignore file for search tools (#9417)
+  * Remove unsued struct (#9405)
+  * Hide not allowed Reactions (#9387)
+  * Remove text from action-only webhooks (#9377)
+  * Move PushToBaseRepo from models to services/pull (#9352)
+  * Site admin could view org's members (#9346)
+  * Sleep longer if request speed is over github limitation (#9335)
+  * Refactor comment (#9330)
+  * Refactor code indexer (#9313)
+  * Remove SavePatch and generate patches on the fly (#9302)
+  * Move some pull request functions from models to services (#9266)
+  * Update JS dependencies (#9255)
+  * Show label list on label set (#9251)
+  * Redirect issue if repo has configured external tracker. (#9247)
+  * Allow kbd tags (#9245)
+  * Remove unused comment actions (#9222)
+  * Fixed errors logging in dump.go (#9218)
+  * Expose release counter to repo API response (#9214)
+  * Make consistent links to repository in the Slack/Mattermost notificiations (#9205)
+  * Expose pull request counter to repo API response (#9202)
+  * Extend TrackedTimes API (#9200)
+  * Extend StopWatch API (#9196)
+  * Move code indexer related code to a new package (#9191)
+  * Docker: ask s6 to stop all service when gitea stop (#9171)
+  * Variable expansion in repository templates (#9163)
+  * Add avatar and issue labels to template repositories (#9149)
+  * Show single review comments in the PR conversation tab (#9143)
+  * Extract createComment (#9125)
+  * Move PushUpdateOptions from models to repofiles (#9124)
+  * Alternate syntax for cross references (#9116)
+  * Add USE_SERVICE_WORKER setting (#9110)
+  * Only show part of members on orgnization dashboard and add paging for orgnization members page (#9092)
+  * Explore page: Add topic param to pagination (#9077) (#9078)
+  * Markdown: Sanitizier Configuration (#9075)
+  * Add password requirement info on error (#9074)
+  * Allow authors to use act keywords in PR content (#9059)
+  * Move modules/gzip to gitea.com/macaron/gzip (#9058)
+  * Branch protection: Possibility to not use whitelist but allow anyone with write access (#9055)
+  * Context menus for comments, add quote reply (#9043)
+  * Update branch API endpoint to show effective branch protection. (#9031)
+  * Move git graph from models to modules/graph (#9027)
+  * Move merge actions to notification (#9024)
+  * Move mirror sync actions to notification (#9022)
+  * Add retry for migration http/https requests (#9019)
+  * Rewrite delivery of issue and comment mails (#9009)
+  * Add review comments to mail notifications (#8996)
+  * Refactor pull request review (#8954)
+  * Githook highlighter (#8932)
+  * Add git hooks and webhooks to template repositories; move to services (#8926)
+  * Only view branch or tag if it match refType requested. (#8899)
+  * Drop Admin attribute based on LDAP when login (continue #1743) (#8849)
+  * Add additional periods to activity page (#8829)
+  * Update go-org to optimize code (#8824)
+  * Move some actions to notification/action (#8779)
+  * Webhook support custom proxy (#8760)
+  * Fix API deadline removal (#8759)
+  * Mark review comment as invalidated when file is deleted (#8751)
+  * Move pull list code to a separate file (#8748)
+  * Move webhook to a standalone package under modules (#8747)
+  * Multi repo select on issue page (#8741)
+  * apply exclude label on milestone issue list (#8739)
+  * Move issue notifications and assignee man (#8713)
+  * Move issue change content from models to service (#8711)
+  * Move issue change status from models to service (#8691)
+  * Move more issue assignee code from models to issue service (#8690)
+  * Create PR on Current Repository by Default (#8670)
+  * Improve Open Graph Protocol (#8637)
+  * Batch hook pre- and post-receive calls (#8602)
+  * Improve webhooks (#8583)
+  * Move transfer repository and rename repository on a service package and start action notification (#8573)
+  * Implement/Fix PR review webhooks (#8570)
+  * Rewrite markdown rendering to blackfriday v2 and rewrite orgmode rendering to go-org (#8560)
+  * Move some repositories' operations to a standalone service package (#8557)
+  * Allow more than 255 characters for tokens in external_login_user table (#8554)
+  * Move issue label operations to issue service package (#8553)
+  * Adjust error reporting from merge failures and use LC_ALL=C for git (#8548)
+  * Mail assignee when issue/pull request is assigned (#8546)
+  * Allow committing / adding empty files using the web ui (#8420) (#8532)
+  * Move sync mirror actions to mirror service package (#8518)
+  * Remove arrows on numeric inputs (#8516)
+  * Support inline rendering of CUSTOM_URL_SCHEMES (#8496)
+  * Recalculate repository access only for specific user (#8481)
+  * Add download button for rull request diff- and patch-file (#8470)
+  * Add single sign-on support via SSPI on Windows (#8463)
+  * Move change issue title from models to issue service package (#8456)
+  * Add included tag on  branch view (#8449)
+  * Make static resouces web browser cache time customized on app.ini (#8442)
+  * Enable Uploading/Removing Attachments When Editing an Issue/Comment (#8426)
+  * Add pagination to commit graph page (#8360)
+  * Use templates for issue e-mail subject and body (#8329)
+  * Move clearlabels from models to issue service (#8326)
+  * Move AddTestPullRequestTask to pull service package from models (#8324)
+  * Team permission to create repository in organization (#8312)
+  * Allows external rendering of other filetypes (#8300)
+  * Add 'Alt + click' feature to exclude labels (#8199)
+  * Configurable close and reopen keywords for PRs (#8120)
+  * Configurable URL for static resources (#7911)
+  * Unifies commit list in repository commit table and wiki revision page (#7907)
+  * Allow cross-repository dependencies on issues (#7901)
+  * Auto-subscribe user to repository when they commit/tag to it (#7657)
+  * Restore Graceful Restarting & Socket Activation (#7274)
+  * wiki - add 'write' 'preview' buttons to wiki edit like in issues (#7241)
+  * Change target branch for pull request (#6488)
+  * Display PR commits and diffs using base repo rather than forked (#3648)
+* TESTING
+  * Add debug option to serv to help debug problems (#9492)
+  * Fix the intermittent TestGPGGit failures (#9360)
+  * Testing: Update postgres sequences (#9304)
+  * Missed defer prepareTestEnv (#9285)
+  * Fix "data race" in testlogger (#9159)
+  * Yet another attempt to fix the intermittent failure of gpg git test (#9146)
+  * integrations: Fix Dropped Test Errors (#9040)
+  * services/mirror: fix dropped test errors (#9007)
+  * Fix intermittent GPG Git test failure (#8968)
+  * Update Github Migration Tests (#8893) (#8938)
+  * Update heatmap fixtures to restore tests (#8615)
+* TRANSLATION
+  * Fix Korean locales (#9761) (#9780)
+  * Fix placeholders in the error message (#9060)
+  * Fix spelling of admin.users.max_repo_creation (#8934)
+  * Improve german translation of homepage (#8549)
+* BUILD
+  * Fix webpack polyfills (#9735) (#9738)
+  * Update gitea.com/macaron to 1.4.0 (#9608)
+  * Upgrade lato fonts to v16. (#9498)
+  * Update alpine to 3.11 (#9440)
+  * Upgrade blevesearch (#9177)
+  * Remove built js/css files from git (#9114)
+  * Move semantic.dropdown.custom.js to webpack (#9064)
+  * Check compiled files during build (#9042)
+  * Enable lazy-loading of gitgraph.js (#9036)
+  * Pack web_src/js/draw.js to public/js/index.js (#8975)
+  * Modernize js and use babel (#8973)
+  * Move index.js to web_src and use webpack to pack them (#8598)
+  * Restrict modules/graceful to non-windows build and shim IsChild (#8537)
+  * Upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501)
+* DOCS
+  * Swagger info corrections (#9441) (#9558)
+  * Add ALLOW_ONLY_EXTERNAL_REGISTRATION to config cheat sheet (#8986)
+  * Rephrase comment about RuntimeDirectory option in systemd config (#8912)
+  * Explicitly indicate the socket unit to use the service unit "gitea.service" (#8804)
+  * Adjust the must-change-password help (#8755)
+  * Add notice to docs for migrating from more recent versions of Gogs (#8724)
+  * Add explicit info about customization of homepage (#8694)
+  * Change external asciidoctor tool to embedded mode (#8677)
+  * Add Docker fail2ban configuration (#8642)
+  * Correct some outdated statements in the contributing guidelines (#8612)
+  * Basic Design guidelines (describing different parts of the code) (#8601)
+  * Display Gitea logo in Readme (#8592)
+  * Fix building from source docs to ref AppWorkPath (#8567)
+  * Update the provided gitea.service to mention socket activation (#8531)
+  * Doc added how to setup email (#8520)
+* MISC
+  * Backport Locales [2020-01-14] (#9773)
+  * Add translatable Powered by Gitea text in footer (#9600)
+  * Add contrib/environment-to-ini (#9519)
+  * Remove unnecessary loading of settings in update hook (#9496)
+  * Update gitignore list (#9437)
+  * Update license list (#9436)
+  * Fix background reactions in the arc-green theme (#9421)
+  * Update and fix chardet import (#9351)
+  * Ensure LF on checkouts and in editors (#9259)
+  * Fixed topics margin (#9248)
+  * Add comment to exported function WindowsServiceName (make revive) (#9241)
+  * Remove empty lines on issues/pulls page (#9232)
+  * Fix Add Comment Button's "+" Position (#9140)
+  * Add first issue comment hashtag (#9052)
+  * Change some label colors (#9051)
+  * Fix double scroll in branch dropdown (#9048)
+  * Add comment highlight when target from url (#9047)
+  * Update display of reactions to issues and comments (#9038)
+  * Button tooltip formatting under Branches (#9034)
+  * Allow setting default branch via API (#9030)
+  * Update dashboard context for PR reviews (#8995)
+  * Show repository size in repo home page and settings (#8940)
+  * Allow to add and remove all repositories to/from team. (#8867)
+  * Show due date in dashboard issues list (#8860)
+  * Theme arc-green: reverse heatmap colors (#8840)
+  * Project files table style update (#8757)
+  * gitignore debugging file from vscode (#8740)
+  * Add API for Issue set Subscription (#8729)
+  * Make 100% width search bar (#8710)
+  * Update color theme for heatmap (#8709)
+  * Add margin to title_wip_desc (#8705)
+  * Improve visibility of "Pending" indicator (#8685)
+  * Improve accessibility of dropdown menus (#8638)
+  * Make /users/{username}/repos list private repos the current user has access to (#8621)
+  * Prevent .code-view from overriding font on icon fonts (#8614)
+  * Add id references on all issue events to allow internal linking (#8608)
+  * Upgrade xorm to v0.8.0 (#8536)
+  * Upgrade gopkg.in/ini.v1 (#8500)
+  * Update CodeMirror to version 5.49.0 (#8381)
+  * Wiki editor: enable side-by-side button (#7242)
+
+## [1.10.6](https://github.com/go-gitea/gitea/releases/tag/v1.10.6) - 2020-03-10
+
+This is a re-tag version of v1.10.5 and also explicitly built with Go 1.13.
+
+WARNING: v1.10.5 is incorrectly tagged targeting 1.12-dev and should __not__ be used.
+
+## [1.10.5](https://github.com/go-gitea/gitea/releases/tag/v1.10.5) - 2020-03-06
+
+* BUGFIXES
+  * Fix release attachments being deleted while upgrading (#10572) (#10574)
+
+## [1.10.4](https://github.com/go-gitea/gitea/releases/tag/v1.10.4) - 2020-02-16
+
+* FEATURE
+  * Prevent empty LDAP search from deactivating all users (#9879) (#9890)
+* BUGFIXES
+  * Fix reply on code review (#10261) (#10227)
+  * Fix branch page pull request title and link error (#10092) (#10098)
+  * Fix milestone API state parameter unhandled (#10049) (#10053)
+  * Fix wiki raw view on sub path (#10002) (#10041)
+  * Fix RocketChat Webhook (#9908) (#9921) (#9925)
+  * Fix bug about wrong dependencies permissions check and other wrong permissions check (#9884) (Partial backport #9842)
+  * Ensure that 2fa is checked on reset-password (#9857) (#9877)
+
+## [1.10.3](https://github.com/go-gitea/gitea/releases/tag/v1.10.3) - 2020-01-17
+
+* SECURITY
+  * Hide credentials when submitting migration (#9102) (#9704)
+  * Never allow an empty password to validate (#9682) (#9684)
+  * Prevent redirect to Host (#9678) (#9680)
+  * Hide public repos owned by private orgs (#9609) (#9616)
+* BUGFIXES
+  * Allow assignee on Pull Creation when Issue Unit is deactivated (#9836) (#9838)
+  * Fix download file wrong content-type (#9825) (#9835)
+  * Fix wrong identify poster on a migrated pull request when submit review (#9827) (#9831)
+  * Fix dump non-exist log directory (#9818) (#9820)
+  * Fix compare (#9808) (#9815)
+  * Fix missing msteam webhook on organization (#9781) (#9795)
+  * Fix add team on collaborator page when same name as organization (#9783)
+  * Fix cache problem on dashboard (#9358) (#9703)
+  * Send tag create and push webhook when release created on UI (#8671) (#9702)
+  * Branches not at ref commit ID should not be listed as Merged (#9614) (#9639)
+
+## [1.10.2](https://github.com/go-gitea/gitea/releases/tag/v1.10.2) - 2020-01-02
+
+* BUGFIXES
+  * Allow only specific Columns to be updated on Issue via API (#9539) (#9580)
+  * Add ErrReactionAlreadyExist error (#9550) (#9564)
+  * Fix bug when migrate from API (#8631) (#9563)
+  * Use default avatar for ghost user (#9536) (#9537)
+  * Fix repository issues pagination bug when there are more than one label filter (#9512) (#9528)
+  * Fix deleted branch not removed when push the branch again (#9516) (#9524)
+  * Fix missing repository status when migrating repository via API (#9511)
+  * Trigger webhook when deleting a branch after merging a PR (#9510)
+  * Fix paging on /repos/{owner}/{repo}/git/trees/{sha} API endpoint (#9482)
+  * Fix NewCommitStatus (#9434) (#9435)
+  * Use OriginalURL instead of CloneAddr in migration logging (#9418) (#9420)
+  * Fix Slack webhook payload title generation to work with Mattermost (#9404)
+  * DefaultBranch needs to be prefixed by BranchPrefix (#9356) (#9359)
+  * Fix issue indexer not triggered when migrating a repository (#9333)
+  * Fix bug that release attachment files not deleted when deleting repository (#9322) (#9329)
+  * Fix migration releases (#9319) (#9326) (#9328)
+  * Fix File Edit: Author/Committer interchanged (#9297) (#9300)
+
+## [1.10.1](https://github.com/go-gitea/gitea/releases/tag/v1.10.1) - 2019-12-05
+
+* BUGFIXES
+  * Fix max length check and limit in multiple repo forms (#9148) (#9204)
+  * Properly fix displaying virtual session provider in admin panel (#9137) (#9203)
+  * Upgrade levelqueue to 0.1.0 (#9192) (#9199)
+  * Fix panic when diff (#9187) (#9193)
+  * Smtp logger configuration sendTos should be an array (#9154) (#9157)
+  * Always Show Password Field on Link Account Sign-in Page (#9150)
+  * Create PR on Current Repository by Default (#8670) (#9141)
+  * Fix race on indexer (#9136) (#9139)
+  * Fix reCAPTCHA URL (#9119)
+  * Hide migrated credentials (#9098)
+  * Update golang.org/x/crypto vendor to use acme v2 (#9056) (#9085)
+  * Fix password checks on admin create/edit user (#9076) (#9081)
+  * Fix add search as a reserved username (#9063) (#9065)
+  * Fix permission checks for close/reopen from commit (#8875) (#9033)
+  * Ensure Written is set in GZIP ProxyResponseWriter (#9018) (#9025)
+  * Fix broken link to branch from issue list (#9003) (#9021)
+  * Fix wrong system notice when repository is empty (#9020)
+  * Shadow password correctly for session config (#8984) (#9002)
+
+## [1.10.0](https://github.com/go-gitea/gitea/releases/tag/v1.10.0) - 2019-11-13
+
+* BREAKING
+  * Fix deadline on update issue or PR via API (#8698)
+  * Hide some user information via API if user doesn't have enough permission (#8655) (#8657)
+  * Remove legacy handling of drone token (#8191)
+  * Change repo search to use exact match for topic search. (#7941)
+  * Add pagination for admin api get orgs and fix only list public orgs bug (#7742)
+  * Implement the ability to change the ssh port to match what is in the gitea config (#7286)
+* SECURITY
+  * Fix issue with user.fullname (#8903)
+  * Ignore mentions for users with no access (#8395)
+  * Be more strict with git arguments (#7715)
+  * Extract the username and password from the mirror url (#7651)
+  * reserve .well-known username (#7637)
+* FEATURES
+  * Org/Members: display 2FA members states + optimize sql requests (#7621)
+  * SetDefaultBranch on pushing to empty repository (#7610)
+  * Adds side-by-side diff for images (#6784)
+  * API method to list all commits of a repository (#6408)
+  * Password Complexity Checks  (#6230)
+  * Add option to initialize repository with labels (#6061)
+  * Add additional password hash algorithms (#6023)
+* BUGFIXES
+  * Allow to merge if file path contains " or \ (#8629) (#8771)
+  * On windows set core.longpaths true (#8776) (#8786)
+  * Fix 500 when edit hook (#8782) (#8789)
+  * Fix Checkbox at RepoSettings Protected Branch (#8799) (#8801)
+  * Fix SSH2 conditional in key parsing code (#8806) (#8810)
+  * Fix commit expand button to not go to commit link (#8745) (#8825)
+  * Fix new user form for non-local users (#8826) (#8828)
+  * Fix to close opened io resources as soon as not needed (#8839) (#8846)
+  * Fix edit content button on migrated issue content (#8877) (#8884)
+  * Fix require external registration password (#8885) (#8890)
+  * Fix password complexity check on registration (#8887) (#8888)
+  * Update Github Migration Tests (#8896) (#8938) (#8945)
+  * Enable punctuations ending mentions (#8889) (#8894)
+  * Add Close() method to gogitRepository (#8901) (#8956)
+  * Hotfix for review actions and notifications (#8965)
+  * Expose db.SetMaxOpenConns and allow non MySQL dbs to set conn pool params (#8528) (#8618)
+  * Fix milestone close timestamp (#8728) (#8730)
+  * Fix 500 when getting user as unauthenticated user (#8653) (#8663)
+  * Fix 'New Issue Missing Milestone Comment' (#8678) (#8681)
+  * Use AppSubUrl for more redirections (#8647) (#8651)
+  * Add SubURL to redirect path (#8632) (#8634)
+  * Fix template error on account page (#8562) (#8622)
+  * Allow externalID to be UUID (#8551) (#8624)
+  * Prevent removal of non-empty emoji panel following selection of duplicate (#8609) (#8623)
+  * Update heatmap fixtures to restore tests (#8615) (#8616)
+  * Ensure that diff stats can scroll independently of the diff (#8581) (#8621)
+  * Webhook: set Content-Type for application/x-www-form-urlencoded (#8600)
+  * Fix #8582 by handling empty repos (#8587) (#8594)
+  * Fix bug on pull requests when transfer head repository (#8564) (#8569)
+  * Add missed close in ServeBlobLFS (#8527) (#8542)
+  * Ensure that GitRepo is set on Empty repositories (#8539) (#8541)
+  * Fix migrate mirror 500 bug (#8526) (#8530)
+  * Fix password complexity regex for special characters (#8524)
+  * Prevent .code-view from overriding font on icon fonts (#8614) (#8627)
+  * Allow more than 255 characters for tokens in external_login_user table (#8554)
+  * Fix errors in create org UI regarding team access permission (#8506)
+  * Fix bug on FindExternalUsersByProvider (#8504)
+  * Create .ssh dir as necessary (#8486)
+  * IsBranchExist: return false if provided name is empty (#8485)
+  * Making openssh listen on SSH_LISTEN_PORT not SSH_PORT (#8477)
+  * Add check for empty set when dropping indexes during migration (#8471)
+  * LFS files are relative to LFS content path, ensure that when deleting they are made relative to this (#8455)
+  * Ensure Request Body Readers are closed in LFS server (#8454)
+  * Fix template bug on mirror repository setting page (#8438)
+  * Fix migration v96 to keep issue attachments (#8435)
+  * Update strk.kbt.io/projects/go/libravatar to latest (#8429)
+  * Singular form for files that has only one line (#8416)
+  * Check for either escaped or unescaped wiki filenames (#8408)
+  * Allow users with explicit read access to give approvals (#8382)
+  * Fix editor commit to new branch if PR disabled (#8375)
+  * readd .markdown class to all markup renderers (#8357)
+  * Upgrade xorm to v0.7.9 to fix some bugs (#8354)
+  * Fix column name ambiguity in GetUserIssueStats() (#8347)
+  * Change general form binding to gogs form (#8334)
+  * Fix pull request commit status in user dashboard list (#8321)
+  * Fix repo_admin_change_team_access always checked in org settings (#8319)
+  * Update to github.com/lafriks/xormstore@v1.3.0 (#8317)
+  * Show correct commit status in PR list (#8316)
+  * Bugfix for image compare and minor improvements to image compare (#8289)
+  * Update xorm (#8286)
+  * Fix API for edit and delete release attachment (#8285)
+  * Fix nil object access in some conditions when parsing cross references (#8281)
+  * Fix label count (#8267)
+  * Only show teams access for organization repositories on collaboration setting page (#8265)
+  * Test more reserved usernames (#8263)
+  * Rewrite reference processing code in preparation for opening/closing from comment references (#8261)
+  * Fix assets key on release webhook (#8253)
+  * Allow registration when button is hidden (#8237)
+  * Fix release API URL generation (#8234)
+  * Fix milestone num_issues (#8221)
+  * MS Teams webhook misses commit messages (#8209)
+  * Fix data race (#8204)
+  * Fix team user api (#8172)
+  * Fix pull merge 500 error caused by git-fetch breaking behaviors (#8161)
+  * Make show private icon when repo avatar set (#8144)
+  * Add reviewers as participants (#8121)
+  * Fix Go 1.13 private repository go get issue (#8112)
+  * feat: highlight issue references with : (#8101)
+  * Make AllowedUsers configurable in sshd_config (#8094)
+  * Strict name matching for Repository.GetTagID() (#8074)
+  * Avoid ambiguity of branch/directory names for the git-diff-tree command (#8066)
+  * Add change title notification for issues (#8061)
+  * [ssh] fix the config specification in the authorized_keys template (#8031)
+  * Fix reading git notes from nested trees (#8026)
+  * Fixes synchronize tags to releases for repository - makes sure we are only getting tag refs (#7990)
+  * Fix adding default Telegram webhook (#7972)
+  * Run CORS handler first for /api routes (#7967)
+  * Abort synchronization from LDAP source if there is some error. (#7960)
+  * Fix wrong sender when send slack webhook (#7918)
+  * Fix bug when migrating a private repository (#7917)
+  * Evaluate emojis in commit messages in list view (#7906)
+  * Fix upload file type check (#7890)
+  * lfs/lock: round locked_at timestamp to second (#7872)
+  * fix non existent milestone with 500 error instead of 404 (#7867)
+  * gpg/bugfix: Use .ExpiredUnix.IsZero to display green color of forever valid gpg key (#7846)
+  * Fix duplicate call of webhook (#7821)
+  * Enable switching to a different source branch when PR already exists (#7819)
+  * Convert files to utf-8 for indexing (#7814)
+  * Do not fetch all refs in pull-request compare (#7797)
+  * Fix multiple bugs with statuses endpoints at API (#7785)
+  * Restore functionality for early gits (#7775)
+  * Fix Slack webhook fork message (#7774)
+  * Rewrite existing repo units if setting is not included in api body (#7763)
+  * Fix rename failed when rewrite public keys (#7761)
+  * Fix approvals counting (#7757)
+  * Add migration step to remove old repo_indexer_status orphaned records (#7746)
+  * Fix repo_index_status lingering when deleting a repository (#7734)
+  * Remove camel case tokenization from repo indexer (#7733)
+  * Fix milestone completness calculation when migrating (#7725)
+  * Regression: Include "executable" files in the index, as they are not necessarily … (#7718)
+  * Fixes indexed repos keeping outdated indexes when files grow too large (#7712)
+  * Skip non-regular files (e.g. submodules) on repo indexing (#7711)
+  * Fix dropTableColumns sqlite implementation (#7710)
+  * Update gopkg.in/src-d/go-git.v4 to v4.13.1 (#7705)
+  * improve branches list performance and fix protected branch icon when no-login (#7695)
+  * Correct wrong datetime format for git (#7689)
+  * Move add to hook queue for created repo to outside xorm session. (#7675)
+  * sugestion to use range .Branches (#7674)
+  * Fix bug on migrating milestone from github (#7665)
+  * hide delete/restore button on archived repos (#7658)
+  * css: use flex to fix floating paginate (#7656)
+  * Fix syntax highlight initialization (#7617)
+  * Fix panic on push at - Merging pull request causes 500 error (#7615)
+  * Make PKCS8, PEM and SSH2 keys work (#7600)
+  * Fix mistake in arc-green.less split-diff css code. (#7587)
+  * Handle ErrUserProhibitLogin in http git (#7586)
+  * Fix bug create/edit wiki pages when code master branch protected (#7580)
+  * Fixes Malformed URLs in API git/commits response (#7565)
+  * Fix file header overflow in file and blame views (#7562)
+  * Improve SSH key parser to handle newlines in keys (#7522)
+  * Fix empty commits now showing in repo overview (#7521)
+  * Fix repository's pull request count error (#7518)
+  * Fix markdown invoke sequence (#7513)
+  * Remove duplicated webhook trigger (#7511)
+  * Update User.NumRepos atomically in createRepository (#7493)
+  * Fix settings page of repo you aren't admin print error - Settings pages giving UnitType error message (#7482)
+  * Fix redirection after file edit - Handles all redirects for Web UI File CRUD (#7478)
+  * cmd/serv: actually exit after fatal errors (#7458)
+  * Fix an issue with some pages throwing 'not defined' js exceptions (#7450)
+  * fix Dropzone.js integration (#7445)
+  * Fix regex for issues in commit messages (#7444)
+  * Diff: Fix indentation on unhighlighted code (#7435)
+  * Only show "New Pull Request" button if repo allows pulls (#7426)
+  * Upgrade macaron/captcha to fix random error problem (#7407)
+  * create class for inline positioned lists (#7393)
+  * Fetch refs for successful testing for tag (#7388)
+  * add missing template variable on organisation settings (#7385)
+  * fix post parameter - on issue list - unset assignee (#7380)
+  * fix/define autochecked checkboxes on issue list in firefox (#7320)
+  * only return head: null if source branch was deleted (#6705)
+* ENHANCEMENTS
+  * Add nofollow to sign in links (#8509)
+  * vendor: update mvdan.cc/xurls/v2 to v2.1.0 (#8495)
+  * Update milestone issues numbers when save milestone and other code improvements (#8411)
+  * Add extra user information when migrating release (#8331)
+  * Require overall success if no context is given for status check (#8318)
+  * Transaction-aware retry create issue to cope with duplicate keys (#8307)
+  * Change link on issue milestone (#8246)
+  * Alwaywas return local url for users avatar (#8245)
+  * Move some milestone functions to a standalone package (#8213)
+  * Move create issue comment to comments package (#8212)
+  * Disable max height property of comment textarea (#8203)
+  * Add 'Mentioning you' group to /issues page (#8201)
+  * oauth2 with remote Gitea (#8149)
+  * Reference issues from pull requests and other issues (#8137)
+  * Fix webhooks to use proxy from environment (#8116)
+  * Add merged commit id on pull view when it's merged (#8062)
+  * Add teams to repo on collaboration page. (#8045)
+  * Update swagger to 0.20.1  (#8010)
+  * Make link last commit massages in repository home page and commit tables (#8006)
+  * Add API endpoint for accessing repo topics (#7963)
+  * Include description in repository search (#7942)
+  * Use gitea forked macaron (#7933)
+  * Fix pull creation with empty changes (#7920)
+  * Allow token as authorization for accessing attachments (#7909)
+  * Retry create issue to cope with duplicate keys (#7898)
+  * Move git diff codes from models to services/gitdiff (#7889)
+  * migrate gplus to google oauth2 provider (#7885)
+  * Remove unique filter from repo indexer analyzer. (#7878)
+  * Detect delimiter in CSV rendering (#7869)
+  * Import topics during migration (#7851)
+  * Move CreateReview to modules/pull (#7841)
+  * vendor: update pdf.js to v2.1.266 (#7834)
+  * Support SSH_LISTEN_PORT env var in docker app.ini template (#7829)
+  * Add Ability for User to Customize Email Notification Frequency (#7813)
+  * Move database settings from models to setting (#7806)
+  * Display ui time with customize time location (#7792)
+  * Implement webhook branch filter (#7791)
+  * Restrict repository indexing by glob match (#7767)
+  * Api: advanced settings for repository (external wiki, issue tracker etc.) (#7756)
+  * Update migrated repositories' issues/comments/prs poster id if user has a github external user saved (#7751)
+  * deps: Upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#7749)
+  * Apply emoji on commit graph page (#7743)
+  * Add a lot of extension to language mappings for syntax highlights (#7741)
+  * Add SQL execution on log and indexes on table repository and comment (#7740)
+  * Set DB connection error level to error (#7724)
+  * Check commit message hashes before making links (#7713)
+  * remove unnecessary fmt on generate bindata (#7706)
+  * Fix specific highlighting (CMakeLists.txt ...) (#7686)
+  * Add file status on API (#7671)
+  * Add support for DEFAULT_ORG_MEMBER_VISIBLE (#7669)
+  * Provide links in commit summaries in commits table/view list (#7659)
+  * Change length of some repository's columns (#7652)
+  * Move commit repo action from models to repofiles package (#7645)
+  * fix wrong email when use gitea as OAuth2 provider (#7640)
+  * [Branch View] add download button (#7604)
+  * Update to xorm@v0.7.4 (#7596)
+  * use 403 instead of 401 for ErrUserProhibitLogin (#7591)
+  * Removed unnecessary conversions (#7557)
+  * Un-lambda base.FileSize (#7556)
+  * Added missing error checks in tests (#7554)
+  * Move create release from models to a standalone package (#7539)
+  * Make default branch name link to default branch (#7519)
+  * Added total count of contributions to heatmap (#7517)
+  * Move mirror to a standalone package from models (#7486)
+  * Move models.PushUpdate to repofiles.PushUpdate (#7485)
+  * Include thread related headers in issue/coment mail (#7484)
+  * Refuse merge until all required status checks success (#7481)
+  * convert all js var to let/const (#7464)
+  * Only create branches for opened pull requestes when migrating from github (#7463)
+  * jQuery 3 (#7425)
+  * Add notification placeholder (#7409)
+  * Search Commits via Commit Hash (#7400)
+  * Move status table to cron package (#7370)
+  * wiki - page revisions list  (#7369)
+  * Display original author and URL information when showing migrated issues/comments (#7352)
+  * Refactor filetype is not allowed errors (#7309)
+  * switch to use gliderlabs/ssh for builtin server (#7250)
+  * Remove settting dependency on modules/session (#7237)
+  * Move all mail related codes from models to services/mailer (#7200)
+  * Support git.PATH entry in app.ini (#6772)
+  * Support setting cookie domain (#6288)
+  * Move migrating repository from frontend to backend (#6200)
+  * Delete releases attachments if release is deleted (#6068)
+* TRANSLATION
+  * Latvian translation for home page (#8468)
+  * Add home template italian translation (#8352)
+  * fix misprint (#7452)
+* BUILD
+  * use go 1.13 (#8088)
+* MISC
+  * add file line count info on UI (#8396)
+  * Make issues page left menu 100% width and add reponame as title attribute (#8359)
+  * [arc-green] white on hover for active menu items (#8344)
+  * Move ref (branch or tag) location on issue list page (#8157)
+  * apply emoji on dashboard issue list labels (#8156)
+  * 1148: Take up the full width when viewing the diff in split view. (#8114)
+  * Display description of 'make this repo private' as help text, not as tooltip (#8097)
+  * Fixes deformed emoji in pull request reviews (#8047)
+  * Add strike to old header on comment (#8046)
+  * Add tooltip for the visibility checkbox in /repo/create (#8025)
+  * Update github.com/lafriks/xormstore and tidy up mod.go (#8020)
+  * keep blame view buttons sequence consistent with normal view when view a file (#8007)
+  * Use "Pull Request" instead of "Merge Request" (#8003)
+  * Move line number to :before attr to hide from search on browser (#8002)
+  * Changed black color to white for (read) number label on issue list page (#8000)
+  * [Branch View] show "New Pull Request" Button only if posible (#7977)
+  * Fix hook problem by only setting the git environment variables if we are passed them (#7854)
+  * Prevent Commit Status and Message From Overflowing On Branch Page (#7800)
+  * Fix global search result CSS, misc CSS tweaks (#7789)
+  * Tweak label border CSS (#7739)
+  * Fix create menu item widths (#7708)
+  * [Branch View] Delete duplicate protection symbol (#7624)
+  * [Branch View] Delete Table Header (#7622)
+  * [Branch View] icons to buttons (#7602)
+  * update js dependencies (#7462)
+  * Add Extra Info to Branches Page (#7461)
+  * Bump lodash from 4.17.11 to 4.17.14 (#7459)
+  * wiki history improvements (#7391)
+  * ui fixes - compare view and archieved repo issues (#7345)
+  * dark theme scrollbars (#7269)
+  * wiki - editor - add buttons 'inline code', 'empty checkbox', 'checked checkbox' (#7243)
+  * Fix Statuses API only shows first 10 statuses: Add paging and extend API GetCommitStatuses (#7141)
+
+## [1.9.6](https://github.com/go-gitea/gitea/releases/tag/v1.9.6) - 2019-11-13
+
+* BUGFIXES
+  * Allow to merge if file path contains " or \ (#8629) (#8772)
+  * Fix 500 when edit hook (#8782) (#8790)
+  * Fix issue with user.fullname (#8904)
+  * Update Github Migration Test (#8897) (#8946)
+  * Add Close() method to gogitRepository (#8901) (#8958)
+
+## [1.9.5](https://github.com/go-gitea/gitea/releases/tag/v1.9.5) - 2019-10-30
+
+* BREAKING
+  * Hide some user information via API if user doesn't have enough permission (#8655) (#8658)
+* BUGFIXES
+  * Fix milestone close timestamp (#8728) (#8731)
+  * Fix deadline on update issue or PR via API (#8699)
+  * Fix 'New Issue Missing Milestone Comment' (#8678) (#8682)
+  * Fix 500 when getting user as unauthenticated user (#8653) (#8662)
+  * Use AppSubUrl for more redirections (#8647) (#8652)
+  * Add SubURL to redirect path (#8632) (#8634) (#8640)
+  * Fix #8582 by handling empty repos (#8587) (#8593)
+  * Fix bug on pull requests when transfer head repository (#8571)
+  * Add missed close in ServeBlobLFS (#8527) (#8543)
+  * Return false if provided branch name is empty for IsBranchExist (#8485) (#8492)
+  * Create .ssh dir as necessary (#8369) (#8486) (#8489)
+  * Restore functionality for early gits (#7775) (#8476)
+  * Add check for empty set when dropping indexes during migration (#8475)
+  * Ensure Request Body Readers are closed in LFS server (#8454) (#8459)
+  * Ensure that LFS files are relative to the LFS content path (#8455) (#8458)
+* SECURITY
+  * Ignore mentions for users with no access (#8395) (#8484)
+* TESTING
+  * Update heatmap fixtures to restore tests (#8615) (#8617)
+
+## [1.9.4](https://github.com/go-gitea/gitea/releases/tag/v1.9.4) - 2019-10-08
+
+* BUGFIXES
+  * Highlight issue references (#8101) (#8404)
+  * Fix bug when migrating a private repository #7917 (#8403)
+  * Change general form binding to gogs form (#8334) (#8402)
+  * Fix editor commit to new branch if PR disabled (#8375) (#8401)
+  * Fix milestone num_issues (#8221) (#8400)
+  * Allow users with explicit read access to give approvals (#8398)
+  * Fix commit status in PR #8316 and PR #8321 (#8339)
+  * Fix API for edit and delete release attachment (#8290)
+  * Fix assets on release webhook (#8283)
+  * Fix release API URL generation (#8239)
+  * Allow registration when button is hidden (#8238)
+  * MS Teams webhook misses commit messages (backport v1.9) (#8225)
+  * Fix data race (#8206)
+  * Fix pull merge 500 error caused by git-fetch breaking behaviors (#8194)
+  * Fix the SSH config specification in the authorized_keys template (#8193)
+  * Fix reading git notes from nested trees (#8189)
+  * Fix team user api (#8172) (#8188)
+  * Add reviewers as participants (#8124)
+* BUILD
+  * Use vendored go-swagger (#8087) (#8165)
+  * Fix version-validation for GO 1.13 (go-macaron/cors) (#8389)
+* MISC
+  * Make show private icon when repo avatar set (#8144) (#8175)
+
+## [1.9.3](https://github.com/go-gitea/gitea/releases/tag/v1.9.3) - 2019-09-06
+
+* BUGFIXES
+  * Fix go get from a private repository with Go 1.13 (#8100)
+  * Strict name matching for Repository.GetTagID() (#8082)
+  * Avoid ambiguity of branch/directory names for the git-diff-tree command (#8070)
+  * Add change title notification for issues (#8064)
+  * Run CORS handler first for /api routes (#7967) (#8053)
+  * Evaluate emojis in commit messages in list view (#8044)
+  * Fix failed to synchronize tags to releases for repository (#7990) (#7994)
+  * Fix adding default Telegram webhook (#7972) (#7992)
+  * Abort synchronization from LDAP source if there is some error (#7965)
+  * Fix deformed emoji in commit message (#8071)
+* ENHANCEMENTS
+  * Keep blame view buttons sequence consistent with normal view when viewing a file (#8007) (#8009)
+
+## [1.9.2](https://github.com/go-gitea/gitea/releases/tag/v1.9.2) - 2019-08-22
+
+* BUGFIXES
+  * Fix wrong sender when send slack webhook (#7918) (#7924)
+  * Upload support text/plain; charset=utf8 (#7899)
+  * Lfs/lock: round locked_at timestamp to second (#7872) (#7875)
+  * Fix non existent milestone with 500 error (#7867) (#7873)
+* SECURITY
+  * Fix No PGP signature on 1.9.1 tag (#7874)
+  * Release built with go 1.12.9 to fix security fixes in golang std lib, ref: https://groups.google.com/forum/#!msg/golang-announce/oeMaeUnkvVE/a49yvTLqAAAJ
+* ENHANCEMENTS
+  * Fix pull creation with empty changes (#7920) (#7926)
+* BUILD
+  * Drone/docker: prepare multi-arch release + provide arm64 image (#7571) (#7884)
+
+## [1.9.1](https://github.com/go-gitea/gitea/releases/tag/v1.9.1) - 2019-08-14
+
+* BREAKING
+  * Add pagination for admin api get orgs and fix only list public orgs bug (#7742) (#7752)
+* SECURITY
+  * Be more strict with git arguments (#7715) (#7762)
+  * Release built with go 1.12.8 to fix security fixes in golang std lib, ref: https://groups.google.com/forum/#!topic/golang-nuts/fCQWxqxP8aA
+* BUGFIXES
+  * Fix local runs of ssh-requiring integration tests (#7855) (#7857)
+  * Fix hook problem (#7856) (#7754)
+  * Use .ExpiredUnix.IsZero to display green color of forever valid gpg key (#7850) (#7846)
+  * Do not fetch all refs (#7797) (#7837)
+  * Fix duplicate call of webhook (#7824) (#7821)
+  * Enable switching to a different source branch when PR already exists (#7823)
+  * Rewrite existing repo units if setting is not included in api body (#7811)
+  * Prevent Commit Status and Message From Overflowing On Branch Page (#7800) (#7808)
+  * API: fix multiple bugs with statuses endpoints (Backport #7785) (#7807)
+  * Fix Slack webhook fork message (1.9 release backport) (#7783)
+  * Fix approvals counting (#7757) (#7777)
+  * Fix rename failed when rewrite public keys (#7761) (#7769)
+  * Fix dropTableColumns sqlite implementation (#7710) (#7765)
+  * Fix repo_index_status lingering when deleting a repository (#7738)
+  * Fix milestone completness calculation when migrating (#7725) (#7732)
+  * Fixes indexed repos keeping outdated indexes when files grow too large (#7731)
+  * Skip non-regular files (e.g. submodules) on repo indexing (#7717)
+  * Improve branches list performance and fix protected branch icon when no-login (#7695) (#7704)
+  * Correct wrong datetime format for git (#7689) (#7690)
+
+## [1.9.0](https://github.com/go-gitea/gitea/releases/tag/v1.9.0) - 2019-07-30
+
+* BREAKING
+  * Better logging (#6038) (#6095)
+* SECURITY
+  * Shadow the password on cache and session config on admin panel (#7300)
+  * Fix markdown invoke sequence (#7513) (#7560)
+  * Reserve .well-known username (#7638)
+  * Do not leak secrets via timing side channel (#7364)
+  * Ensure that decryption of cookie actually suceeds (#7363)
+* FEATURES
+  * Content API for Creating, Updating, Deleting Files (#6314)
+  * Enable tls-alpn-01: Use certmanager provided TLSConfig for LetsEncrypt (#7229)
+  * Add command to convert mysql database from utf8 to utf8mb4 (#7144)
+  * Fixes #2738 - Adds the /git/tags API endpoint (#7138)
+  * Compare branches, commits and tags with each other (#6991)
+  * Show Pull Request button or status of latest PR in branch list (#6990)
+  * Repository avatars (#6986)
+  * Show git-notes (#6984)
+  * Add commit statuses reports on pull request view (#6845)
+  * Number of commits ahead/behind in branch overview (#6695)
+  * Add CLI commands to manage LDAP authentication source (#6681)
+  * Add support for MS Teams webhooks (#6632)
+  * OAuth2 Grant UI (#6625)
+  * Add SUBJECT_PREFIX mailer config option (#6605)
+  * Include custom configuration file in dump (#6516)
+  * Add API for manipulating Git hooks (#6436)
+  * Improve migrations to support migrating milestones/labels/issues/comments/pullrequests (#6290)
+  * Add option to blame files (#5721)
+  * Implement Default Webhooks (#4299)
+  * Telegram webhook (#4227)
+* BUGFIXES
+  * Send webhook after commit when creating issue with assignees (#7681) (#7684)
+  * Upgrade macaron/captcha to fix random error problem (#7407) (#7683)
+  * Move add to hook queue for created repo to outside xorm session. (#7682) (#7675)
+  * Show protection symbol if needed on default branch (#7660) (#7668)
+  * Hide delete/restore button on archived repos (#7660)
+  * Fix bug on migrating milestone from github (#7665) (#7666)
+  * Use flex to fix floating paginate (#7656) (#7662)
+  * Change length of some repository's columns (#7652) (#7655)
+  * Fix wrong email when use gitea as OAuth2 provider (#7640) (#7647)
+  * Fix syntax highlight initialization (#7617) (#7626)
+  * Fix bug create/edit wiki pages when code master branch protected (#7580) (#7623)
+  * Fix panic on push at #7611 (#7615) (#7618)
+  * Handle ErrUserProhibitLogin in http git (#7586, #7591) (#7590)
+  * Fix color of split-diff view in dark theme (#7587) (#7589)
+  * Fix file header overflow in file and blame views (#7562) (#7579)
+  * Malformed URLs in API git/commits response (#7565) (#7567)
+  * Fix empty commits now showing in repo overview (#7521) (#7563)
+  * Fix repository's pull request count error (#7518) (#7524)
+  * Remove duplicated webhook trigger (#7511) (#7516)
+  * Handles all redirects for Web UI File CRUD (#7478) (#7507)
+  * Fix regex for issues in commit messages (#7444) (#7466)
+  * cmd/serv: actually exit after fatal errors (#7458) (#7460)
+  * Fix an issue with some pages throwing 'not defined' js exceptions #7450 (#7453)
+  * Fix Dropzone.js integration (#7445) (#7448)
+  * Create class for inline positioned lists (#7439) (#7393)
+  * Diff: Fix indentation on unhighlighted code (#7435) (#7443)
+  * jQuery 3 (#7442) (#7425)
+  * Only show "New Pull Request" button if repo allows pulls (#7426) (#7432)
+  * Fix vendor references (#7394) (#7396)
+  * Only return head: null if source branch was deleted (#6705) (#7376)
+  * Add missing template variable on organisation settings (#7386) (#7385)
+  * Fix post parameter on issue list which had unset assignee (#7380) (#7383)
+  * Fix migration tests due to issue 7 being resolved (#7375) (#7381)
+  * Correctly adjust mirror url (#6593)
+  * Handle early git version's lack of get-url (#7065)
+  * Fix icon position in issue view (#7354)
+  * Cut timeline length with last element on issue view (#7355)
+  * Fix mirror repository webhooks (#7366)
+  * Fix api route for hooks (#7346)
+  * Fix bug conflict between SyncReleasesWithTags and InsertReleases (#7337)
+  * Fix pull view ui merge section (#7335)
+  * Fix 7303 - remove unnessesary buttons on archived repos (#7326)
+  * Fix topic bar to allow prefixes (#7325)
+  * Fixes #7152 - Allow create/update/delete message to be empty, use default message (#7324)
+  * Fixes #7238 - Annotated tag commit ID incorrect (#7321)
+  * Dark theme fixes (#7319)
+  * Gitea own dark codemirror theme (#7317)
+  * Fixes #7292 - API File Contents bug (#7301)
+  * Fix API link header (#7298)
+  * Fix extra newlines when copying from diff in Firefox (#7288)
+  * Make diff line-marker non-selectable (#7279)
+  * Fix Submodule dection in subdir (#7275)
+  * Fix error log when loading issues caused by a xorm bug (#7271)
+  * Add .fa icon margin like .octicon (#7258)
+  * Fix hljs unintenionally highlighting commit links (#7244)
+  * Only check and config git on web subcommand but not others (#7236)
+  * Fix migration panic when Head.User is not exist (#7226)
+  * Only warn on errors in deleting LFS orphaned files during repo deletion (#7213)
+  * Fix duplicated file on pull request conflicted files (#7211)
+  * Allow colon between fixing word and issue (#7207)
+  * Fix overflow issues in repo (#7190)
+  * API error cleanup (#7186)
+  * Add error for fork already existing (#7185)
+  * Fixes diff on merged pull requests (#7171)
+  * If milestone id is zero don't get it from database (#7169)
+  * Fix pusher name via ssh push (#7167)
+  * Fix database lock when use random repository fallback image (#7166)
+  * Various fixes for issue mail notifications (#7165)
+  * Allow archived repos to be (un)starred and (un)watched (#7163)
+  * Fix GCArgs load from ini (#7156)
+  * Detect noreply email address as user (#7133)
+  * Avoid arbitrary format strings upon calling fail() function (#7112)
+  * Validate External Tracker URL Format (#7089)
+  * Repository avatar fallback configuration (#7087)
+  * Fix #732: Add LFS objects to base repository on merging  (#7082)
+  * Install page - Handle invalid administrator username better (#7060)
+  * Workaround for posting single comments in split diff view (#7052)
+  * Fix possbile mysql invalid connnection error (#7051)
+  * Fix charset was not saved after installation finished (#7048)
+  * Handle insecure and ports in go get (#7041)
+  * Avoid bad database state after failed migration (#7040)
+  * Fix wrong init dependency on markup extensions (#7038)
+  * Fix default for allowing new organization creation for new users (#7017)
+  * Fix content download and /verify LFS handler expecting wrong content-type (#7015)
+  * Fix missing repo description when migrating (#7000)
+  * Fix LFS Locks over SSH (#6999)
+  * Do not attempt to return blob on submodule (#6996)
+  * Fix U2F for Chrome >= 74 (#6980)
+  * Fix index produces problem when issues/pulls deleted (#6973)
+  * Allow collaborators to view repo owned by private org (#6965)
+  * Stop running hooks on pr merge (#6963)
+  * Run hooks on merge/edit and cope with protected branches (#6961)
+  * Webhook Logs show proper HTTP Method, and allow change HTTP method in form (#6953)
+  * Stop colorizing log files by default (#6949)
+  * Rotate serv.log, http.log and hook logs and stop stacktracing in these (#6935)
+  * Fix plain text overflow line wrap (#6915)
+  * Fix input size for dependency select (#6913)
+  * Change drone token name to let users know to use oauth2 (#6912)
+  * Fix syntax highlight in blame view #6895 (#6909)
+  * Use AppURL for Oauth user link (#6894)
+  * Fixes #6881 - API users search fix (#6882)
+  * Fix 404 when send pull request some situation  (#6871)
+  * Enforce osusergo build tag for releases (#6862)
+  * Fix 500 when reviewer is deleted with integration tests (#6856)
+  * Fix v85.go (#6851)
+  * Make dropTableColumns drop columns on sqlite and constraints on all (#6849)
+  * Fix double-generation of scratch token (#6832) (#6833)
+  * When mirroring we should set the remote to mirror (#6824)
+  * Fix the v78 migration "Drop is_bare" on MSSQL #6707 (#6823)
+  * Change verbose flag in dump command to avoid colliding with global version flag (#6822)
+  * Fix #6813: Allow git.GetTree to take both commit and tree names (#6816)
+  * Remove `seen` map from `getLastCommitForPaths` (#6807)
+  * Show scrollbar only when needed (#6802)
+  * Restore IsWindows variable assignment (#6722) (#6790)
+  * Service worker js is a missing comma (#6788)
+  * Fix team edit API panic (#6780)
+  * Set user search base field optional in LDAP (simple auth) edit page (#6779)
+  * Ignore already existing public keys after ldap sync (#6766)
+  * Fix pulls broken when fork repository deleted (#6754)
+  * Fix missing return (#6751)
+  * Fix new team 500 (#6749)
+  * OAuth2 token can be used in basic auth (#6747)
+  * Fix org visibility bug when git cloning (#6743)
+  * Fix bug when sort repos on org home page login with non-admin (#6741)
+  * Stricter domain name pattern in email regex (#6739)
+  * Fix admin template error (#6737)
+  * Drop is_bare IDX only when it exists for MySQL and MariaDB (#6736)
+  * UI: Detect and restore encoding and BOM in content  (#6727)
+  * Load issue attributes when editing an issue with API (#6723)
+  * Fix team members API (#6714)
+  * Unfortunately MemProvider Init does not actually Init properly (#6692)
+  * Fix partial reversion of #6657 caused by #6314 (#6685)
+  * Prevent creating empty sessions (#6677)
+  * Fixes #6659 - Swagger schemes selection default to page's protocol (#6660)
+  * Update highlight.js to 9.15.6 (#6658)
+  * Properly escape on the redirect from the web editor (#6657)
+  * Fix #6655 - Don't EscapePound .Link as it is already escaped (#6656)
+  * Use ctx.metas for SHA hash links (#6645)
+  * Fix wrong GPG expire date (#6643)
+  * upgrade version of lib/pq to v1.1.0 (#6640)
+  * Fix forking an empty repository (#6637)
+  * Fix issuer of OTP URI should be URI-encoded. (#6634)
+  * Return a UserList from /api/v1/admin/users (#6629)
+  * Add json tags for oauth2 form (#6627)
+  * Remove extra slash from twitter card (#6619)
+  * remove bash requirement in makefile (#6617)
+  * Fix Open Graph og:image link (#6612)
+  * Fix cross-compile builds (#6609)
+  * Change commit summary to full message in API (#6591)
+  * Fix bug user search API pagesize didn't obey ExplorePagingNum (#6579)
+  * Prevent server 500 on compare branches with no common history (#6555)
+  * Properly escape release attachment URL (#6512)
+  * Delete local branch when repo branch is deleted (#6497)
+  * Fix bug when user login and want to resend register confirmation email (#6482)
+  * Fix upload attachments (#6481)
+  * Avoid multi-clicks in oauth2 login (#6467)
+  * Hacky fix for alignment of the create-organization dialog (#6455)
+  * Change order that PostProcess Processors are run (#6445)
+  * Clean up ref name rules (#6437)
+  * Fix Hook & HookList in Swagger (#6432)
+  * Fixed unitTypeCode not being used in accessLevelUnit (#6419)
+  * Display correct error for invalid mirror interval (#6414)
+  * Don't Unescape redirect_to cookie value (#6399)
+  * Fix dump table name error and add some test for dump database (#6394)
+  * Fix migrations 82 to ignore unsynced tags between database and git data and missing is_archived on repository table (#6387)
+  * Make sure units of a team are returned (#6379)
+  * Fix bug manifest.json will not request with cookie so that session will created every request (#6372)
+  * Disable benchmarking during tag events on DroneIO (#6365)
+  * Comments list performance optimization (#5305)
+* ENHANCEMENTS
+  * Update Drone docker generation to standard format (#7480) (#7496) (#7504)
+  * Add API Endpoint for Repo Edit (#7006)
+  * Add state param to milestone listing API (#7131)
+  * Make captcha and password optional for external accounts (#6606)
+  * Detect migrating batch size (#7353)
+  * Fix 7255 - wrap long texts on user profile info (#7333)
+  * Use commit graph files for listing pages (#7314)
+  * Add git command line commitgraph support global default true when git version >= 2.18 (#7313)
+  * Add LFS_START_SERVER option to control git-lfs support (#7281)
+  * Dark theme markdown fixes (#7260)
+  * Update go-git to v4.12.0 (#7249)
+  * Show lfs config on admin panel (#7220)
+  * Disable same user check for internal SSH (#7215)
+  * Add LastLogin to the User API (#7196)
+  * Add missing description of label on API (#7159)
+  * Use go method to calculate ssh key fingerprint (#7128)
+  * Enable Rust highlighting (#7125)
+  * Refactor submodule URL parsing (#7100)
+  * Change issue mail title. (#7064)
+  * Use batch insert on migrating repository to make the process faster (#7050)
+  * Improve github downloader on migrations (#7049)
+  * When git version >= 2.18, git command could run with git wire protocol version 2 param if enabled (#7047)
+  * Fix Erlang and Elixir highlight mappings (#7044)
+  * API Org Visibility (#7028)
+  * Improve handling of non-square avatars (#7025)
+  * Bugfix: Align comment label and actions to the right (#7024)
+  * Change UpdateRepoIndex api to include watchers (#7012)
+  * Move serv hook functionality & drop GitLogger (#6993)
+  * Add support of utf8mb4 for mysql (#6992)
+  * Make webhook http connections resuable (#6976)
+  * Move xorm logger bridge from log to models so that log module could be a standalone package (#6944)
+  * Refactor models.NewRepoContext to extract git related codes to modules/git (#6941)
+  * Remove macaron dependent on models (#6940)
+  * Add less linter via npx (#6936)
+  * Remove macaron dependent on modules/log (#6933)
+  * Remove macaron dependent on models/mail.go (#6931)
+  * Clean less files (#6921)
+  * Fix code overflow (#6914)
+  * Style orgs list in user profile (#6911)
+  * Improve description of branch protection (fix #6886) (#6906)
+  * Move sdk structs to modules/structs (#6905)
+  * update sdk to latest (#6903)
+  * Escape the commit message on issues update and title in telegram hook (#6901)
+  * SearchRepositoryByName improvements and unification (#6897)
+  * Change the color of issues/pulls list, merged is purple and closed is red (#6874)
+  * Refactor table width to have more info shown in file list (#6867)
+  * Monitor all git commands; move blame to git package and replace git as a variable (#6864)
+  * Fix config ui error about cache ttl (#6861)
+  * Improve localization of git activity stats (#6848)
+  * Generate access token in admin cli (#6847)
+  * Update github.com/urfave/cli to version 1.2.0 (#6838)
+  * Rename LFS_JWT_SECRET cli option to include OAUTH2 as well (#6826)
+  * internal/ssh: ignore env command totally (#6825)
+  * Allow Recaptcha service url to be configured (#6820)
+  * update github.com/mcuadros/go-version to v0.0.0-20190308113854-92cdf37c5b75 (#6815)
+  * Use modules/git for git commands (#6775)
+  * Add GET requests to webhook (#6771)
+  * Move PushUpdate dependency from models to repofiles (#6763)
+  * Tweak tab text and icon colors (#6760)
+  * Ignore non-standard refs in git push (#6758)
+  * Disable web preview for telegram webhook (#6719)
+  * Show full name if DEFAULT_SHOW_FULL_NAME setting enabled (#6710)
+  * Reorder file actions (#6706)
+  * README WordPress the code is overflowing #6679 (#6696)
+  * Improve issue reference on commit (#6694)
+  * Handle redirects for git clone commands (#6688)
+  * Fix one performance/correctness regression in #6478 found on Rails repository. (#6686)
+  * API OTP Context (#6674)
+  * Remove local clones & make hooks run on merge/edit/upload (#6672)
+  * Bump github.com/stretchr/testify from 1.2.2 to 1.3.0 (#6663)
+  * Bump gopkg.in/src-d/go-git.v4 from 4.8.0 to 4.10.0 (#6662)
+  * Fix dropdown icon padding (#6651)
+  * Add more title attributes on shortened names (#6647)
+  * Update UI for topics labels on projects (#6639)
+  * Trace Logging on Permission Denied & ColorFormat (#6618)
+  * Add .gpg url (match github behaviour) (#6610)
+  * Support for custom GITEA_CUSTOM env var in docker(#6608)
+  * Show "delete branch" button on closed pull requests (#6570) (#6601)
+  * Add option to disable refresh token invalidation (#6584)
+  * Fix new repo dropdown alignment (#6583)
+  * Fix mail notification when close/reopen issue (#6581)
+  * Pre-calculate the absolute path of git (#6575)
+  * Minor CSS cleanup for the navbar (#6553)
+  * Render SHA1 links as code blocks (#6546)
+  * Add username flag in create-user command (#6534)
+  * Unifies pagination template usage (#6531) (#6533)
+  * Fixes pagination width on mobile view (#5711) (#6532)
+  * Improve SHA1 link detection (#6526)
+  * Fixes #6446 - Sort team members and team's repositories (#6525)
+  * Use stricter boundaries for auto-link detection (#6522)
+  * Use regular line-height on frontpage entries (#6518)
+  * Fixes #6514 - New Pull Request on files and pulls pages the same (#6515)
+  * Make distinction between DisplayName and Username in email templates (#6495)
+  * Add X-Auto-Response-Suppress header to outgoing messages (#6492)
+  * Cleaned permission checks for API -> site admin can now do anything (#6483)
+  * Support search operators for commits search (#6479)
+  * Improve listing performance by using go-git (#6478)
+  * Fix repo sub_menu font color in arc-green (#6477)
+  * Show last commit status in pull request lists (#6465)
+  * Add signatures to webhooks (#6428)
+  * Optimize all images in public/img (#6427)
+  * Add golangci (#6418)
+  * Make "Ghost" not link to 404 page (#6410)
+  * Include more variables on admin/config page (#6378)
+  * Markdown: enable some more extensions (#6362)
+  * Include repo name in page title tag (#6343)
+  * Show locale string on timestamp (#6324)
+  * Handle CORS requests (#6289)
+  * Improve issue autolinks (#6273)
+  * Migration Tweaks (#6260)
+  * Add title attributes to all items in the repo list viewer (#6258)
+  * Issue indexer queue redis support (#6218)
+  * Add bio field for user (#6113)
+  * Make the version within makefile overwriteable (#6080)
+  * Updates to API 404 responses (#6077)
+  * Use Go1.11 module (#5743)
+  * UX + Security current user password reset (#5042)
+  * Refactor: append, build variable and type switch (#4940)
+  * Git statistics in Activity tab (#4724)
+  * Drop the bits argument when generating an ed25519 key (#6504)
+* TESTING
+  * Exclude pull_request from fetch-tags step, fixes #7108 (#7120)
+  * Refactor and improve git test (#7086)
+  * Fix TestSearchRepo by waiting till indexing is done (#7004)
+  * Add mssql migration tests (needs #6823) (#6852)
+  * Add tests for Org API (#6731)
+  * Context.ServerError and NotFound should log from their caller (#6550)
+* TRANSLATION
+  * Add french specific rule for translating plural texts (#6846)
+* BUILD
+  * Update mssql driver to last working version 20180314172330-6a30f4e59a44 (#7306)
+  * Alpine 3.10 (#7256)
+  * Use vfsgen instead of go-bindata (#7080)
+  * remove and disable package-lock (#6969)
+  * add make targets for js and css, add js linter (#6952)
+  * Added tags pull step to drone config to show correct version hashes i… (#6836)
+  * Make CustomPath, CustomConf and AppWorkPath configurable at build (#6631)
+  * chore: update drone format to 1.0 (#6602)
+  * Fix race in integration testlogger (#6556)
+  * Quieter Integration Tests (#6513)
+  * Drop the docker Makefile from the image (#6507)
+  * Add make version on gitea version (#6485)
+  * Fix #6468 - Uses space match and adds newline for all sed flavors (#6473)
+  * Move code.gitea.io/git to code.gitea.io/gitea/modules/git (#6364)
+  * Update npm dependencies and various tweaks (#7344)
+  * Fix updated drone file (#7336)
+  * Add 'npm' and 'npm-update' make targets and lockfile (#7246)
+* DOCS
+  * Add work path CLI option (#6922)
+  * Fix logging documentation (#6904)
+  * Some logging documentation (#6498)
+  * Fix link to Hacking on Gitea on From-Source doc page (#6471)
+  * Fix typos in docs command-line examples (#6466)
+  * Added docker example for backup (#5846)
+
+## [1.8.3](https://github.com/go-gitea/gitea/releases/tag/v1.8.3) - 2019-06-17
+
+* BUGFIXES
+  * Always set userID on LFS authentication (#7224) (Part of #6993)
+  * Fix LFS Locks over SSH (#6999) (#7223)
+  * Fix duplicated file on pull request conflicted files (#7211) (#7214)
+  * Detect noreply email address as user (#7133) (#7195)
+  * Don't get milestone from DB if ID is zero (#7169) (#7174)
+  * Allow archived repos to be (un)starred and (un)watched (#7163) (#7168)
+  * Fix GCArgs load from ini (#7156) (#7157)
+
+## [1.8.2](https://github.com/go-gitea/gitea/releases/tag/v1.8.2) - 2019-05-29
+
+* BUGFIXES
+  * Fix possbile mysql invalid connnection error (#7051) (#7071)
+  * Handle invalid administrator username on install page (#7060) (#7063)
+  * Disable arm7 builds (#7037) (#7042)
+  * Fix default for allowing new organization creation for new users (#7017) (#7034)
+  * SearchRepositoryByName improvements and unification (#6897) (#7002)
+  * Fix u2f registrationlist ToRegistrations() method (#6980) (#6982)
+  * Allow collaborators to view repo owned by private org (#6965) (#6968)
+  * Use AppURL for Oauth user link (#6894) (#6925)
+  * Escape the commit message on issues update (#6901) (#6902)
+  * Fix regression for API users search (#6882) (#6885)
+  * Handle early git version's lack of get-url (#7065) (#7076)
+  * Fix wrong init dependency on markup extensions (#7038) (#7074)
+
+## [1.8.1](https://github.com/go-gitea/gitea/releases/tag/v1.8.1) - 2019-05-08
+
+* BUGFIXES
+  * Fix 404 when sending pull requests in some situations (#6871) (#6873)
+  * Enforce osusergo build tag for releases (#6862) (#6869)
+  * Don't post process commit summary in templates (#6842) (#6868)
+  * Fix 500 when reviewer is deleted (#6856) (#6860)
+  * Fix v78 migration for MSSQL (#6823) (#6854)
+  * Added tags pull step to drone config to show correct version hashes (#6836) (#6839)
+  * Fix double-generation of scratch token (#6833) (#6835)
+  * When mirroring we should set the remote to mirror (#6824) (#6834)
+  * Show scrollbar only when needed (#6802) (#6803)
+  * Service worker js is missing a comma (#6788) (#6795)
+  * Set user search base field optional in LDAP (simple auth) edit page (#6779) (#6789)
+  * Fix team edit API panic (#6780) (#6785)
+  * Minor CSS cleanup for the navbar (#6553) (#6781)
+  * Stricter domain name pattern in email regex (#6739) (#6768)
+  * Detect and restore encoding and BOM in content (#6727) (#6765)
+  * Fix org visibility bug when git cloning (#6743) (#6762)
+  * OAuth2 token can be used in basic auth (#6747) (#6761)
+  * Fix missing return (#6751) (#6756)
+  * Fix sorting repos on org home page with non-admin login (#6741) (#6746)
+  * Drop is_bare IDX only when it exists for MySQL and MariaDB (#6736) (#6744)
+  * Fix team members API (#6714) (#6729)
+  * Load issue attributes when editing an issue with API (#6723) (#6725)
+  * Fix config ui error about cache ttl (#6861) (#6865)
+
+## [1.8.0](https://github.com/go-gitea/gitea/releases/tag/v1.8.0) - 2019-04-20
+
+* SECURITY
+  * Prevent remote code execution vulnerability with mirror repo URL settings (#6593) (#6594)
+  * Resolve 2FA bypass on API (#6676) (#6674)
+  * Prevent the creation of empty sessions for non-logged in users (#6690) (#6677)
+* BREAKING
+  * Add "ghost" and "notifications" to list of reserved user names. (#6208)
+  * Change sqlite DB path default to data directory (#6198)
+  * Adds MustChangePassword to user create/edit API (#6193)
+  * Disable redirect for i18n (#5910)
+  * Releases API paging (#5831)
+  * Allow Macaron to be set to log through to gitea.log (#5667)
+  * Don't close issues via commits on non-default branch (#5622)
+* FEATURES
+  * Add regenerate secret feature for oauth2 (#6291)
+  * Expose issue stopwatch toggling via API (#5970)
+  * Add other session providers (#5963)
+  * Pull request conflict files detection (#5951)
+  * Integrate OAuth2 Provider (#5378)
+  * Implement "conversation lock" for issue comments (#5073)
+  * Feature: Archive repos (#5009)
+  * Discord Oauth2 support (#4476)
+  * Allow to set organization visibility (public, internal, private) (#1763)
+  * Added URL mapping for Release attachments like on github.com (#1707)
+* ENHANCEMENTS
+  * Add support for client basic auth for exchanging access tokens (#6293)
+  * Add ability to sort issues by due date (#6206) (#6244)
+  * Style tweaks to issue selection (#6196)
+  * Increase Username and Orgname MaxSize 35 -> 40 (#6178)
+  * Coverage profile with multiple packages (#6167)
+  * Split setting.go to multiple files (#6154)
+  * Allow labels to contain emoji (#6063)
+  * Disable git fsck for mirrored repos by default (#6018)
+  * Add default time out for git operations (#6015)
+  * Split setting.go as multiple files (#6014)
+  * Make dashboard navbar and footer full-width (#6013)
+  * Add lang specific font stacks for CJK (#6007)
+  * Fix header menu misalignment (#6002)
+  * Enhance closed PR and Issue status in the list (#6000)
+  * Make navbar full width (#5998)
+  * Add option to close issues via commit on a non master branch (#5992)
+  * Support n as a line highlight prefix (#5987)
+  * Search for org repos (#3031) (#5986)
+  * Minor UI tweaks (#5980)
+  * Use native golang SSH library but ssh-keygen when enable built-in SSH server to remove dependent on that command lines (#5976)
+  * Dashboard tweaks (#5974)
+  * Fixes for repo topic editor (#5971)
+  * Display the branch name in the commit view (#5950)
+  * handle milestone events for issues and PR (#5947)
+  * Add label names as filter in issue search api (#5946)
+  * Repo header tweaks (#5945)
+  * Better support for long repo names (#5932)
+  * Fix wrapping long code lines (#5927)
+  * Change GPG Validation colors and remove inline CSS (#5404) (#5896)
+  * Fix "pulls.blocked_by_approvals" text (#5879)
+  * Rename reject to 'request changes' (#5858)
+  * Move input fields to add members to a team and repos to a team (#5853)
+  * Config option to disable automatic repo watching (#5852)
+  * New Issue ?body= query (#5851)
+  * Add API to list tags (#5850)
+  * Pagination for git tree API (#5838)
+  * Add InternalTokenURI to load InternalToken from an external file (#5812)
+  * Allow markdown files to read from the LFS (#5787)
+  * Add the ability to use multiple labels as filters (#5786)
+  * Adjust log settings when a user is not found. (#5771)
+  * Log IP of failed ssh connection (#5766)
+  * Moved defaults in defaults.go to setting.go (#5764)
+  * Make DB connect more robust (#5738)
+  * Add Default Pull Request Title (#5735)
+  * Refactor repo.isBare to repo.isEmpty #5629 (#5714)
+  * Add flag to skip repository dumping (#5695)
+  * Prioritize "readme.md" (#5691)
+  * Improve "Fork button" for guests by showing a pop up asking them to log in before forking (#5690)
+  * Allow for user specific themes (#5668)
+  * Display branch name in delete branch confirmation modal. (#5654)
+  * New API routes added (#5594)
+  * Refactor notification for indexer (#5111)
+  * Refactor mail notification (#5110)
+  * Show email if the authenticated user owns the profile page being requested for (#4981)
+  * Optimize pulls merging (#4921)
+  * Sort Repositories widget by most recently updated (#3963) (#4599)
+  * Allow markdown table to scroll (#4401)
+  * Automatically clear stopwatch on merging a PR (#4327)
+  * Add the Owner Name to differentiate when merging (#3807)
+  * Add title attributes to all items in the repo list viewer (#6258) (#6650)
+* BUGFIXES
+  * Fix dropdown icon padding (#6651) (#6654)
+  * Fix wrong GPG expire date (#6643) (#6644)
+  * Fix forking an empty repository (#6637) (#6653)
+  * Remove call to EscapePound .Link as it is already escaped (#6656) (#6666)
+  * Properly escape on the redirect from the web editor (#6657) (#6667)
+  * Allow resend of confirmation email when logged in (#6482) (#6486)
+  * Fix mail notification when close/reopen issue (#6581) (#6588)
+  * Change API commit summary to full message (#6591) (#6592)
+  * Add option to disable refresh token invalidation (#6584) (#6587)
+  * Fix bug user search API pagesize didn't obey ExplorePagingNum (#6579) (#6586)
+  * Fix new repo alignment (#6583) (#6585)
+  * Prevent server 500 on compare branches with no common history (#6555) (#6558)
+  * Properly escape release attachment URL (#6512) (#6523)
+  * Hacky fix for alignment of the create-organization dialog (#6455) (#6462)
+  * Disable benchmarking during tag events on DroneIO (#6365) (#6366)
+  * Make sure units of a team are returned (#6379) (#6381)
+  * Don't Unescape redirect_to cookie value (#6399) (#6401)
+  * Fix dump table name error and add some test for dump database (#6394) (#6402)
+  * Fix migration v82 to ignore unsynced tags between database and git data; Add missing is_archived column on repository table (#6387) (#6403)
+  * Display correct error for invalid mirror interval (#6414) (#6429)
+  * Clean up ref name rules (#6437) (#6439)
+  * Fix Hook & HookList in Swagger (#6432) (#6440)
+  * Change order that PostProcess Processors are run (#6445) (#6447)
+  * Clean up various use of escape/unescape functions for URL generation (#6334)
+  * Return 409 when creating repo if it already exists. (#6330)
+  * Add same changes from issues page to milestone->issues page (#6328)
+  * Fix ParsePatch function to work with quoted diff --git strings (#6323)
+  * Fix reported issue in repo description (#6306)
+  * Use url.PathEscape to escape the branchname (#6304)
+  * Add robots.txt as reserved username (#6272)
+  * Replace linkRegex with xurls library (#6261)
+  * Remove visitLinksForShortLinks features (#6257)
+  * Add unit types to repo action URL to correctly show 404 when archived (#6247)
+  * Check organization visibility before everything else (#6234) (#6235)
+  * Prevent double-close of issues (#6233)
+  * Override xorm type mapping for U2F counter (#6232)
+  * Add isAdmin to user API response (#6231)
+  * Update git vendor to fix wrong release commit id and add migrations (#6224)
+  * Fix fork button (#6223)
+  * Fix renames over redirects (#6216)
+  * Fix display dashboard even if require to change password (#6214)
+  * Create a repo redirect when transferring ownership (#6210) (#6211)
+  * Fix issue update race condition (#6194)
+  * Fix bug when migrate repository 500 when repo is existed (#6188)
+  * Fix scrollbar always present on page body (#6177)
+  * Fix bug when set indexer as db and add tests (#6173)
+  * Modify linkRegex to require http|https (#6171)
+  * Fix bug user could change private repository to public when force private enabled. (#6156)
+  * Fix admin list user/org API (#6143)
+  * Make repo creation for API similar to UI (#6142)
+  * Make document body a flexbox (#6139)
+  * Refactor issue indexer, add some testing and fix a bug (#6131)
+  * Load Issue attributes for API call (#6122)
+  * Fix bug when update owner team then visit team's repo return 404 (#6119)
+  * Fix heatmap and repository menu display in Internet Explorer 9+ (#6117)
+  * Show private organization for admin, fix #6111 (#6112)
+  * Fix prohibit login check on authorization (#6106)
+  * Move to ldap.v3 to fix #5928 (#6105)
+  * Remove use MakeAssigneeList in webhooks to fix deadlock (#6102)
+  * Allow display of LFS stored Readme.md on directory page (#6073) (#6099)
+  * Make sure labels are actually returned (#6053)
+  * Fix panic: template: repo/issue/list:210: unexpected "=" in operand (#6041)
+  * After deleting a repo on admin panel, UI should remember the last sort type (#6033)
+  * Default create repository on organisation on its dashboard (#6026)
+  * Swagger: Remove spaces in MergePullRequestOption enum (#6016)
+  * Fix metrics auth token detection (#6006)
+  * Fix repo header issues (#5995)
+  * Fix bug when deleting a linked account will removed all (#5989)
+  * Make organization dropdown scrollable when using mouse wheel (#5988)
+  * Fix empty ssh key importing in ldap (#5984)
+  * Admin config page mailertype setting option update (#5973)
+  * Fix redirect loop during forced password change (#5965)
+  * Show user who created the repository instead of the organisation in action feed (#5948)
+  * Remove all CommitStatus when a repo is deleted (#5940)
+  * Fix ssh deploy and user key constraints (#1357) (#5939)
+  * Fix log output (#5938)
+  * Set PusherName and PusherID to owner on deploy key to fix pushing with deploy keys (#5935)
+  * Fix compare button (#5929)
+  * Fix bug when read public repo lfs file (#5912)
+  * Only allow local login if password is non-empty (#5906)
+  * Recover panic in orgmode.Render if bad orgfile (#4982) (#5903)
+  * Provide better panic handling (#5902)
+  * Respect value of REQUIRE_SIGNIN_VIEW (#5901)
+  * Show a 404 not a 500 if a repo does not exist (#5900)
+  * Ensure repo is loaded in mailer (Completely fix #5891) (#5895)
+  * Ensure issue.Poster is loaded in mailIssueCommentToParticipants (#5891)
+  * Correct footer height if screen-width is to small (fixes #5878) (#5889)
+  * In gitea serv switch off console logger to fix #5866 (#5887)
+  * Don't allow pull requests to be created on an archived repository (#5883)
+  * Support reviews on a deleted file path (#5880)
+  * Fix compare button on upstream repo leading to 404 (#5877)
+  * Fix null pointer on not logged in attempt to Sudo (#5872)
+  * Fix new release creation API to allow empty target (#5870)
+  * Fix an error while adding a dependency via UI. (#5862)
+  * Fix failing migration v67 (#5849)
+  * Fix delete correct temp directory (#5839)
+  * Make sure .git/info is created before generating .git/info/sparse-che… (#5825)
+  * Fix topics saving internal error and disable for archived repos (#5821)
+  * Fix TLS errors when using acme/autocert for local connections (#5820)
+  * When creating new repository fsck option should be enabled (#5817)
+  * Request for public keys only if LDAP attribute is set  (#5816)
+  * Fix serving of raw wiki files other than .md (#5814)
+  * Fix migration 78 error mssql (#5791)
+  * Disallow empty titles (#5785)
+  * Fix the v78 migration script (#5776)
+  * Ensure valid git author names passed in signatures (#5774)
+  * Fix wrong assumption where a user is always said to have unassigned (her)himself (#5769)
+  * Upgrade go-sql-driver/mysql to fix invalid connection error (#5748)
+  * Fixing PostgreSQL dump creation (#5747)
+  * Add proper CORS preflight origin validation (#5740)
+  * Disable auto-migrate in docker container (#5730)
+  * In basic auth check for tokens before call UserSignIn (#5725)
+  * Pooled and buffered gzip implementation (#5722)
+  * Ensure that sessions are passed into queries that could use the database to prevent deadlocks (#5718)
+  * Keep file permissions during database migration (#5707)
+  * Use correct value for "MSpan Structures Obtained" #4742 (#5706)
+  * Refactor editor upload, update and delete to use git plumbing and add LFS support (#5702)
+  * Update xorm to fix issue #5659 and #5651 (#5680)
+  * Fix public will not be reused as public key after deleting as deploy key (#5671)
+  * When redirecting, clean the path (#5669)
+  * Don't list an issue on its own dependency list UI. (#5658)
+  * Fix commit page showing status for current default branch (#5649) (#5650)
+  * Only count users own actions for heatmap contributions (#5647)
+  * Fix sqlite deadlock when assigning to a PR (#5640)
+  * Refactor issue indexer (#5363)
+* TESTING
+  * Run benchmark at tag to track performances (#6035)
+  * Add test environment for MySQL8 (#5234)
+* BUILD
+  * Use go 1.12 for tests and deprecate go 1.9 (#6186)
+  * Makefile changes for Windows and easier development (#6103)
+  * Update bleve dependency to latest master revision (#6100)
+  * Switch to more recent build of xgo (#6070)
+  * Add autoprefixer to css build (#6029)
+  * Update the version of less (#6010)
+  * Make log mailer for testing (#5893)
+* DOCS
+  * Add more tests and docs for issue indexer, add db indexer type for searching from database (#6144)
+  * update default value of `--must-change-password` cli flag (#6032)
+  * Update and expand information about building Gitea (#6019)
+  * Update U2F Section of app.ini.sample (#5994)
+  * Update swagger for release API pagination (#5841)
+  * Added docs for the tree api (#5834)
+* MISC
+  * Add single commit API support (#5843)
+  * Add missing GET teams endpoints (#5382)
+  * Migrate database if app.ini found (#5290)
+
+## [1.7.6](https://github.com/go-gitea/gitea/releases/tag/v1.7.6) - 2019-04-12
+
+* SECURITY
+  * Prevent remote code execution vulnerability with mirror repo URL settings (#6593) (#6595)
+* BUGFIXES
+  * Allow resend of confirmation email when logged in (#6482) (#6487)
+
+## [1.7.5](https://github.com/go-gitea/gitea/releases/tag/v1.7.5) - 2019-03-27
+
+* BUGFIXES
+  * Fix unitTypeCode not being used in accessLevelUnit (#6419) (#6423)
+  * Fix bug where manifest.json was being requested without cookies and continuously creating new sessions (#6372) (#6383)
+  * Fix ParsePatch function to work with quoted diff --git strings (#6323) (#6332)
+
+## [1.7.4](https://github.com/go-gitea/gitea/releases/tag/v1.7.4) - 2019-03-12
+
+* SECURITY
+  * Fix potential XSS vulnerability in repository description. (#6306) (#6308)
+* BUGFIXES
+  * Fix wrong release commit id (#6224) (#6300)
+  * Fix panic on empty signed commits (#6292) (#6300)
+  * Fix organization dropdown not being scrollable when using mouse wheel (#5988) (#6246)
+  * Fix displaying dashboard even if required to change password (#6214) (#6215)
+
+## [1.7.3](https://github.com/go-gitea/gitea/releases/tag/v1.7.3) - 2019-02-27
+
+* BUGFIXES
+  * Fix server 500 when trying to migrate to an already existing repository (#6188) (#6197)
+  * Load Issue attributes for API /repos/{owner}/{repo}/issues/{index} (#6122) (#6185)
+  * Fix bug whereby user could change private repository to public when force private enabled. (#6156) (#6165)
+  * Fix bug when update owner team then visit team's repo return 404 (#6119) (#6166)
+  * Fix heatmap and repository menu display in Internet Explorer 9+ (#6117) (#6137)
+  * Fix prohibit login check on authorization (#6106) (#6115)
+  * Fix LDAP protocol error regression by moving to ldap.v3 (#6105) (#6107)
+  * Fix deadlock in webhook PullRequest (#6102) (#6104)
+  * Fix redirect loop when password change is required and Gitea is installed as a suburl (#5965) (#6101)
+  * Fix compare button regression (#5929) (#6098)
+  * Recover panic in orgmode.Render if bad orgfile (#4982) (#5903) (#6097)
+
+## [1.7.2](https://github.com/go-gitea/gitea/releases/tag/v1.7.2) - 2019-02-14
+
+* BUGFIXES
+  * Remove all CommitStatus when a repo is deleted (#5940) (#5941)
+  * Fix notifications on pushing with deploy keys by setting hook environment variables (#5935) (#5944)
+  * Silence console logger in gitea serv (#5887) (#5943)
+  * Handle milestone webhook events for issues and PR (#5947) (#5955)
+  * Show user who created the repository instead of the organization in action feed (#5948) (#5956)
+  * Fix ssh deploy and user key constraints (#1357) (#5939) (#5966)
+  * Fix bug when deleting a linked account will removed all (#5989) (#5990)
+  * Fix empty ssh key importing in ldap (#5984) (#6009)
+  * Fix metrics auth token detection (#6006) (#6017)
+  * Create repository on organisation by default on its dashboard (#6026) (#6048)
+  * Make sure labels are actually returned in API (#6053) (#6059)
+  * Switch to more recent build of xgo (#6070) (#6072)
+  * In basic auth check for tokens before call UserSignIn (#5725) (#6083)
+
+## [1.7.1](https://github.com/go-gitea/gitea/releases/tag/v1.7.1) - 2019-01-31
+
+* SECURITY
+  * Disable redirect for i18n (#5910) (#5916)
+  * Only allow local login if password is non-empty (#5906) (#5908)
+  * Fix go-get URL generation (#5905) (#5907)
+* BUGFIXES
+  * Fix TLS errors when using acme/autocert for local connections (#5820) (#5826)
+  * Request for public keys only if LDAP attribute is set (#5816) (#5819)
+  * Fix delete correct temp directory (#5840) (#5839)
+  * Fix an error while adding a dependency via UI (#5862) (#5876)
+  * Fix null pointer in attempt to Sudo if not logged in (#5872) (#5884)
+  * When creating new repository fsck option should be enabled (#5817) (#5885)
+  * Prevent nil dereference in mailIssueCommentToParticipants (#5891) (#5895) (#5894)
+  * Fix bug when read public repo lfs file (#5913) (#5912)
+  * Respect value of REQUIRE_SIGNIN_VIEW (#5901) (#5915)
+  * Fix compare button on upstream repo leading to 404 (#5877) (#5914)
+* DOCS
+  * Added docs for the tree api (#5835)
+* MISC
+  * Include Go toolchain to --version (#5832) (#5830)
+
+## [1.7.0](https://github.com/go-gitea/gitea/releases/tag/v1.7.0) - 2019-01-22
+
+* SECURITY
+  * Do not display the raw OpenID error in the UI (#5705) (#5712)
+  * When redirecting clean the path to avoid redirecting to external site (#5669) (#5679)
+  * Prevent DeleteFilePost doing arbitrary deletion (#5631)
+* BREAKING
+  * Restrict permission check on repositories and fix some problems (#5314)
+  * Show only opened milestones on issues page milestone filter (#5051)
+* FEATURES
+  * Implement git refs API for listing references (branches, tags and other) (#5354)
+  * Approvals at Branch Protection (#5350)
+  * Add raw blob endpoint to get objects by SHA ID (#5334)
+  * Add api for user to create org (#5268)
+  * Create AuthorizedKeysCommand (#5236)
+  * User action heatmap (#5131)
+  * Refactor heatmap to vue component (#5401)
+  * Webhook for Pull Request approval/rejection (#5027)
+  * Add command for migrating database (#4954)
+  * Search keyword by splitting provided values by , (#4939)
+  * Create Progressive Web App (#4730)
+  * Give user a link to create PR after push (#4716)
+  * Add rebase with merge commit merge style (#3844) (#4052)
+* BUGFIXES
+  * Disallow empty titles (#5785) (#5794)
+  * Fix sqlite deadlock when assigning to a PR (#5640) (#5642)
+  * Don't close issues via commits on non-default branch. (#5622) (#5643)
+  * Fix commit page showing status for current default branch (#5650) (#5653)
+  * Only count users own actions for heatmap contributions (#5647) (#5655)
+  * Update xorm to fix issue postgresql dumping issues (#5680) (#5692)
+  * Use correct value for "MSpan Structures Obtained" (#5706) (#5716)
+  * Fix bug on modifying sshd username (#5624)
+  * Delete tags in mirror which are removed for original repo. (#5609)
+  * Fix wrong text getting saved on editing second comment on an issue. (#5608)
+  * Fix nil pointer when adding a due date  (#5587)
+  * Fix type mismatch of format string (#5574)
+  * Fix bug on upload file name (#5571)
+  * Issue is not overdue when it is on the same date #5566 (#5568)
+  * Fix indexer reindex bug when gitea restart (#5563)
+  * Fix table name typo on SQL (#5562)
+  * Synchronize SSH keys on login with LDAP + Fix SQLite deadlock on ldap ssh key deletion (#5557)
+  * Fix makefile generate buildstep (#5556)
+  * Fix nil pointer base branch bug (#5555)
+  * Fix permission check on api create org (#5523)
+  * Fix detect force push failure on deletion of protected branches (#5522)
+  * Fix approvals limitation (#5521)
+  * Fix bug when a read perm user to edit his issue (#5516)
+  * Fix adding reaction fail for read permission user (#5515)
+  * Fixing MSSQL timestamp type (#5511)
+  * Fix forgot deletion of notification when delete repository (#5506)
+  * Fix empty wiki (#5504)
+  * Fix clone wiki failed via ssh (#5503)
+  * Fix code review on mssql (#5502)
+  * Fix lfs version check warning log when using ssh protocol (#5501)
+  * Fix topic name length on database (#5493)
+  * Ensure that the `closed_at` is set for closed issues (#5449)
+  * Admin should be able to delete repos via the API even if he is not a member of the organization (#5443)
+  * Word-Break the WebHook url to prevent a ui-break (#5432)
+  * Fix forgot removed records when deleting user (#5429)
+  * Fix repository deletion when there is large number of issues in it (#5426)
+  * Fix heatmap colors for Chrome/Safari (#5421)
+  * Fix password variable shadowing (#5405)
+  * Fix dependent issue searching when gitea is run in subpath (#5392)
+  * Don't force a password change for the admin user when creating an account via cli (#5391)
+  * API: '/orgs/:org/repos': return private repos with read access (#5383)
+  * Don't send assign webhooks when creating issue (#5365)
+  * Removing Labels via EditPullRequest API (#5348)
+  * Migration fixes for gogs (0.11.66) to gitea (1.6.0) #5318 (#5341)
+  * Fix bug when users have serval teams with different units on different repositories (#5307)
+  * Fix U2F if gitea is configured in subpath (#5302)
+  * Fix file edit change preview functionality (#5300)
+  * Update gitignore list (#5258)
+  * Fixed heatmap not working in mssql (#5248)
+  * Fixed wrong api request url for instances running in subfolders (#5247)
+  * Fix compatibility heatmap with mysql 8 (#5232)
+  * Fix data race on migrate repository (#5224)
+  * Fix sqlite and mssql lock (#5214)
+  * Fix sqlite lock (#5210)
+  * Fix: Accept web-command cli flags if web-command is commited (#5200)
+  * Fix: Add secret to all webhook's payload where it has been missing (#5199)
+  * Fix race on updatesize (#5190)
+  * Fix create team, update team missing units (#5188)
+  * Fix sqlite lock (#5184 & #5176)
+  * Fix showing pull request link when delete a branch (#5166)
+  * Fix JSON result of empty array in heatmap data array (#5154)
+  * Update build tags for sqlite_unlock notify (#5144)
+  * This commit will reduce join star, repo_topic, topic tables on repo search, so that fix extra columns problem on mssql (#5136)
+  * Fix deadlock when sqlite (#5118)
+  * Add comment replies (#5104)
+  * Fix home page template regression (#5102)
+  * Fix regex to support optional end line of old section in diff hunk (#5096)
+  * LDAP via simple auth separate bind user and search base (#5055)
+  * Fix markdown image with link (#4675)
+  * Fix to 3819 - Filtering issues by tags on main screen issues (#3824)
+* ENHANCEMENTS
+  * Delete organization endpoint added (#5601)
+  * Update Licenses (#5558)
+  * Support reverse proxy providing email (#5554)
+  * Add git protocol v2 support via SSH on Docker image (#5520)
+  * Add tests for api user orgs (#5494)
+  * Allow link verification for services like Mastodon (#5481)
+  * Improve team members and repositories settings UI (#5457)
+  * Remove the required class from optional ssh port in installation page (#5428)
+  * Explicitly disable Git credential helper (#5367)
+  * Setting Labels via EditPullRequest API (#5347)
+  * Implement pasting image from clipboard for browsers that supports that (#5317)
+  * Milestone issues and pull requests (#5293)
+  * Support envs on external render commands (#5278)
+  * Add option to disable automatic mirror syncing. (#5242)
+  * Remove unused db init on commands serv, update, hooks (#5225)
+  * Serve audio files using HTML5 audio tag (#5221)
+  * Pass link prefixes to external markup parsers (#5201)
+  * Add AutoHead functionality. (#5186)
+  * Fix emojis not showing in commit messages (#5168)
+  * Block registration based on email domain (#5157)
+  * Update vendor/go-sqlite3 (#5133 & #5162)
+  * Update x/net lib (#5169)
+  * Show review summary in pull requests (#5132)
+  * Use type switch (#5122)
+  * Remove duplicated if bodies (#5121)
+  * Remove check for negative length (#5120)
+  * Make switch more clear (#5119)
+  * Use named const instead of a raw string (#5115)
+  * Fix issue where ecdsa and other key types are not synced from LDAP (#5092) (#5094)
+  * Refactor: err != nil check, just return error instead (#5093)
+  * Add notification interface and refactor UI notifications (#5085)
+  * Use APP_NAME on home page (#5048)
+  * Explicitly decide whether to  use TLS in mailer's configuration (#5024)
+  * Generate random password (#5023)
+  * UX of link account (Step 1) (#5006)
+  * Make sure argsSet verifies string isn't empty too (#4980)
+  * Improve performance of dashboard (#4977)
+  * Keys API changes (#4960)
+  * Add must-change-password flag to cli for creating a user (#4955)
+  * Use native go method to get current user rather than environment variable (#4930)
+  * Make gitea serv use api/internal (#4886)
+  * Add support for search by uid (#4876)
+  * Allow to add organization members as collaborators on organization owned repositories (#4748)
+* TESTING
+  * Kill testing processes if the test takes too long (#5174)
+  * Update outdated Go toolchain version for .drone.yml (#5146)
+  * Increase the retry limit to 20 times and the interval to 200ms (#5134)
+  * Retry test-fixtures loading in case of transaction rollback (#5125)
+  * Added test environment for mssql (#4282)
+* BUILD
+  * Replace lint to revive (#5422)
+  * Update golang version in Dockerfile (#5246)
+* DOCS
+  * Typo in routers/api/v1/org/org.go fixed. (#5598)
+  * Update the docs for sqlite_unlock_notify (#5145)
+  * CN translation of docs part (#5049)
+  * Kubernetes deployment file (#5046)
+* MISC
+  * Upgrade alpine to 3.8 (#5423)
+  * Git-Trees API (#5403)
+  * Only chown directories during docker setup if necessary. Fix #4425 (#5064)
+
+## [1.6.4](https://github.com/go-gitea/gitea/releases/tag/v1.6.4) - 2019-01-15
+
+* BUGFIX
+  * Fix SSH key now can be reused as public key after deleting as deploy key (#5671) (#5685)
+  * When redirecting clean the path to avoid redirecting to external site (#5669) (#5703)
+  * Fix to use correct value for "MSpan Structures Obtained" (#5706) (#5715)
+
+## [1.6.3](https://github.com/go-gitea/gitea/releases/tag/v1.6.3) - 2019-01-04
+
+* SECURITY
+  * Prevent DeleteFilePost doing arbitrary deletion (#5631)
+* BUGFIX
+  * Fix wrong text getting saved on editing second comment on an issue (#5608)
+
+## [1.6.2](https://github.com/go-gitea/gitea/releases/tag/v1.6.2) - 2018-12-21
+
+* SECURITY
+  * Sanitize uploaded file names (#5571) (#5573)
+  * HTMLEncode user added text (#5570) (#5575)
+* BUGFIXES
+  * Fix indexer reindex bug when gitea restart (#5563) (#5564)
+  * Remove a double slash in the HTTPS redirect with Let's Encrypt (#5537) (#5539)
+  * Fix bug when a read perm user to edit his issue (#5516) (#5534)
+  * Detect force push failure on deletion of protected branches (#5522) (#5531)
+  * Let's Encrypt handler listens on correct port for certificate validation (#5525) (#5527)
+  * Fix forgot deletion of notification when delete repository (#5506) (#5514)
+  * Fix undeleted content when deleting user (#5429) (#5509)
+  * Fix empty wiki (#5504) (#5508)
+
+## [1.6.1](https://github.com/go-gitea/gitea/releases/tag/v1.6.1) - 2018-12-08
+
+* BUGFIXES
+  * Fix dependent issue searching when gitea is run in subpath (#5392) (#5400)
+  * API: '/orgs/:org/repos': return private repos with read access (#5393)
+  * Fix repository deletion when there is large number of issues in it (#5426) (#5434)
+  * Word-break the WebHook url to prevent a ui-break (#5445)
+  * Admin should be able to delete repos via the API even if they are not a member of the organization (#5443) (#5447)
+  * Ensure that the `closed_at` is set for closed (#5450)
+  * Fix topic name length on database (#5493) (#5495)
+
+## [1.6.0](https://github.com/go-gitea/gitea/releases/tag/v1.6.0) - 2018-11-22
+
+* BREAKING
+  * Respect email privacy option in user search via API (#4512)
+  * Simply remove tidb and deps (#3993)
+  * Swagger.v1.json template (#3572)
+* SECURITY
+  * Add CSRF checking to reqToken and add reqToken to admin API routes (#5272) (#5250)
+  * Improve URL validation for external wiki  and external issues (#4710)
+  * Make cookies HttpOnly and obey COOKIE_SECURE flag (#4706)
+  * Don't disclose emails of all users when sending out emails (#4664)
+  * Check that repositories can only be migrated to own user or organizations (#4366)
+* FEATURES
+  * Add comment replies (#5147) (#5104)
+  * Pull request review/approval and comment on code (#3748)
+  * Added dependencies for issues (#2196) (#2531)
+  * Add the ability to have built in themes in Gitea and provide dark theme arc-green (#4198)
+  * Add sudo functionality to the API (#4809)
+  * Add oauth providers via cli (#4591)
+  * Disable merging a WIP Pull request (#4529)
+  * Force user to change password (#4489)
+  * Add letsencrypt to Gitea (#4189)
+  * Add push webhook support for mirrored repositories (#4127)
+  * Add csv file render support defaultly (#4105)
+  * Add Recaptcha functionality to Gitea (#4044)
+* ENHANCEMENTS
+  * Fix milestones sorted wrongly (#4987)
+  * Allow api to create tags for releases if they don't exist (#4890)
+  * Fix #4877 to follow the OpenID Connect Audiences spec (#4878)
+  * Enforce token on api routes [fixed critical security issue #4357] (#4840)
+  * Update legacy branch and tag URLs in dashboard to new format (#4812)
+  * Slack webhook channel name cannot be empty or just contain an hashtag (#4786)
+  * Add whitespace handling to PR-comparsion (#4683)
+  * Make reverse proxy auth optional (#4643)
+  * MySQL TLS (#4642)
+  * Make sure to set PR split view when creating/previewing a pull request  (#4617)
+  * Log user in after a successful sign up (#4615)
+  * Fix typo IsPullReuqestBroken -> IsPullRequestBroken (#4578)
+  * Allow admin toggle forcing a password change for newly created users (#4563)
+  * Update jQuery to v1.12.4 (#4551)
+  * Env var GITEA_PUSHER_EMAIL (#4516)
+  * Feat(repo): support search repository by topic name (#4505)
+  * Small improvements to dependency UI (#4503)
+  * Make max commits in graph configurable (#4498)
+  * Add valid for lfs oid (#4461)
+  * Add shortcut to save wiki page (#4452)
+  * Allow administrator to create repository for any organization (#4368)
+  * Fix repository last updated time update when delete a user who watched the repo (#4363)
+  * Switch plaintext scratch tokens to use hash instead (#4331)
+  * Increase default TOTP secret size to 320 bits (#4287)
+  * Keep preseeded database password (#4284)
+  * Implemented hover text showing user FullName (#4261)
+  * Add ability to delete a token (#4235)
+  * Fix typos in i18n variable names. (#4080)
+  * Api: repos/search: add parameters to control the sort order (#3964)
+  * Add missing path in the Docker app.ini template (#2181)
+  * Add file name and branch to page title (#4902)
+  * Offline use of google fonts (#4872)
+  * Add missing History link to directory listings v2 (#4829)
+  * Locale for Edit and Remove due date issue (#4802)
+  * Disable 'May Import Local Repository' when is disabled by setting (Is… (#4780)
+  * API /admin/users/{username} missing parameter (#4775)
+  * Display error when adding a user to a team twice (#4746)
+  * Remove UsePrivilegeSeparation from the Docker sshd_config, see #2876 (#4722)
+  * Focus title input when clicking helper link (#4696)
+  * Add vendor to user reserved words and format words list according alphabet (#4685)
+  * Add gitea/issues link to 500 page (#4654)
+  * Hide home button when landing page is not set to home (#4651)
+  * Remove link to GitHub issues in 404 template (#4639)
+  * Cmd/serve: pprof cpu and memory profile dumps to disk (#4560)
+  * Add flash message after an account has been successfully activated (#4510)
+  * Prevent html entity escaping on delete branch (#4471)
+  * Locale for button Edit on protected branch (#4442)
+  * Update notification icon (#4343)
+  * Added front-end topics validation (#4316)
+  * Don't display buttons if there are no system notifications (#4280)
+  * Issue due date api (#3890)
+* BUGFIXES
+  * dont' send assign webhooks when creating issue (#5365)
+  * Fix create team, update team missing units (#5188)
+  * Fix file edit change preview functionality (#5300)
+  * *ix bug when users have serval teams with different units on different repositories (#5307)
+  * Fix U2F if gitea is configured in subpath (#5302)
+  * Fix markdown image with link (#4675)
+  * Remove maxlines option for file logger (#5282)
+  * Fix wrong api request url for instances running in subfolders (#5261) (#5247)
+  * Accept web-command cli flags if web-command is commited (#5245) (#5200)
+  * Reduce join star, repo_topic, topic tables on repo search, to resolve extra columns problem on MSSQL (#5136) (#5229)
+  * Fix data race on migrate repository (#5224) (#5230)
+  * Add secret to all webhook's payload where it has been missing (#5208) (#5199)
+  * Fix sqlite and MSSQL lock (#5210) (#5223) (#5214) (#5218) (#5176) (#5179)
+  * Fix race on updatesize (#5190) (#5215)
+  * Fix filtering issues by tags on main screen issues (#5219) (#3824)
+  * Fix SQL quoting (#5137) (#5117)
+  * Fix regex to support optional end line of old section in diff hunk (#5097) (#5096)
+  * Fix release creation via API (#5076)
+  * Remove links from topics in edit mode  (#5026)
+  * Fix missing AppSubUrl in few more templates (fixup) (#5021)
+  * Fix missing AppSubUrl in some templates (#5020)
+  * Hide outdated comments in file view (#5017)
+  * Upgrade gopkg.in/testfixtures.v2 (#4999)
+  * Disable debug routes unless PPROF is enabled in configuration (#4995)
+  * Fix user menu item styling (#4985)
+  * Fix layout of the topics editing form (#4971)
+  * Fix null pointer dereference in ParseCommitWithSignature (#4962)
+  * Fix url in discord webhook (#4953)
+  * Detect charset and convert non UTF-8 files for display (#4950)
+  * Make sure to catch the right error so it is displayed on the UI (#4945)
+  * Fix(topics): don't redirect to explore page. (#4938)
+  * Fix bug forget to remove Stopwatch when remove repository (#4928)
+  * Fix bug when repo remained bare if multiple branches pushed in single push (#4923)
+  * Fix: Crippled diff (#4726) (#4900)
+  * Fix trimming of markup section names (#4863)
+  * Issues api allow pulls and fix #4832 (#4852)
+  * Do not autocreate directory for new users/orgs (#4828) (#4849)
+  * Fix redirect with non-ascii branch names (#4764) (#4810)
+  * Fix missing release title in webhook (#4783) (#4796)
+  * User shouldn't be able to approve or reject his/her own PR (#4729)
+  * Make sure to reset commit count in the cache on mirror syncing (#4720)
+  * Fixed bug where team with admin privelege type doesn't get any unit  (#4719)
+  * Fix incorrect caption of webhook setting (#4701) (#4717)
+  * Allow WIP marker to contains < or > (#4709)
+  * Hide org/create menu item in Dashboard if user has no rights (#4678) (#4680)
+  * Site admin could create repos even MAX_CREATION_LIMIT=0 (#4645)
+  * Fix custom templates being ignored (#4638)
+  * Fix starring icon after semantic ui update (#4628)
+  * Fix Split-View line adjustment (#4622)
+  * Fix integer constant overflows in tests (#4616)
+  * Push whitelist now doesn't apply to branch deletion (#4601) (#4607)
+  * Fix bugs when too many IN variables (#4594)
+  * Fix failure on creating pull request with assignees (#4419) (#4583)
+  * Fix panic issue on update avatar email (#4580) (#4581)
+  * Fix status code label for a successful webhook (#4540)
+  * An inactive user shouldn't be able to be added as a collaborator (#4535)
+  * Don't fail silently if trying to add a collaborator twice (#4533)
+  * Fix incorrect MergeWhitelistTeamIDs check in CanUserMerge function (#4519) (#4525)
+  * Fix out-of-transaction query in removeOrgUser (#4521) (#4522)
+  * Fix migration from older releases (#4495)
+  * Accept 'Data:' in commit graph (#4487)
+  * Update xorm to latest version and fix correct `user` table referencing in sql (#4473)
+  * Relative URLs for LibreJS page (#4460)
+  * Redirect to correct page after using scratch token (#4458)
+  * Fix column droping for MSSQL that need new transaction for that (#4440)
+  * Replace src with raw to fix image paths (#4377)
+  * Add default merge options when creating new repository (#4369)
+  * Fix docker build (#4358)
+  * Fixes repo membership check in API (#4341)
+  * Dep upgrade mysql lib (#4161)
+  * Fix some issues with special chars in branch names (#3767)
+  * Responsive design fixes (#4508)
+* TRANSLATION
+  * Fix punctuation in English translation (#4958)
+  * Fix translation (#4355)
+
+## [1.5.3](https://github.com/go-gitea/gitea/releases/tag/v1.5.3) - 2018-10-31
+
+* SECURITY
+  * Fix remote command execution vulnerability in upstream library (#5177) (#5196)
+
+## [1.5.2](https://github.com/go-gitea/gitea/releases/tag/v1.5.2) - 2018-10-09
+
+* SECURITY
+  * Enforce token on api routes (#4840) (#4905)
+* BUGFIXES
+  * Remove links from topics in edit mode (#5030)
+  * Detect charset and convert non UTF-8 files for display (#4950) (#4994)
+  * Fix layout of the topics editing form (#4971) (#4993)
+  * Fix null pointer dereference in ParseCommitWithSignature (#4964)
+  * Fix url in discord webhook (#4951)
+  * Fix font-cropping UI bug in diff (#4726) (#4929)
+  * Fix bug forget to remove Stopwatch when remove repository (#4933)
+  * Fix bug when repo remained bare if multiple branches pushed (#4927)
+  * Fix redirect with non-ascii branch names (#4764) (#4887)
+  * Fix issues api allow pulls (#4852) (#4862)
+  * Fix trimming of markup section names (#4864)
+
+## [1.5.1](https://github.com/go-gitea/gitea/releases/tag/v1.5.1) - 2018-09-03
+
+* SECURITY
+  * Don't disclose emails of all users when sending out emails (#4784)
+  * Improve URL validation for external wiki and external issues (#4710) (#4740)
+  * Make cookies HttpOnly and obey COOKIE_SECURE flag (#4706) (#4707)
+* BUGFIXES
+  * Fix missing release title in webhook (#4783) (#4800)
+  * Make sure to reset commit count in the cache on mirror syncing (#4770)
+  * Fixed bug where team with admin privelege type doesn't get any unit (#4759)
+  * Fix failure on creating pull request with assignees (#4583) (#4727)
+  * Hide org/create menu item in Dashboard if user has no rights (#4678) (#4686)
+* TRANSLATION
+  * Fix incorrect caption of webhook setting (#4701) (#4718)
+
+## [1.5.0](https://github.com/go-gitea/gitea/releases/tag/v1.5.0) - 2018-08-10
+
+* SECURITY
+  * Check that repositories can only be migrated to own user or organizations (#4366) (#4370)
+  * Limit uploaded avatar image-size to 4096px x 3072px by default (#4353)
+  * Do not allow to reuse TOTP passcode (#3878)
+* BUGFIXES
+  * Fix column droping for MSSQL that need new transaction for that (#4440) (#4484)
+  * Redirect to correct page after using scratch token (#4458) (#4472)
+  * Replace src with raw to fix image paths (#4377) (#4386)
+  * Fixes repo membership check in API (#4341) (#4379)
+  * Add default merge options when adding new repository (#4369) (#4373)
+  * Fix repository last updated time update when delete a user who watched the repo (#4363) (#4371)
+  * Fix html entity escaping in branch deletion message (#4471) (#4485)
+  * Fix out-of-transaction query in removeOrgUser (#4521) (#4524)
+  * Fix incorrect MergeWhitelistTeamIDs check in CanUserMerge function (#4519)
+  * Fix panic issue on update avatar email (#4580) (#4590)
+  * Fix bugs when too many IN variables (#4594) (#4597)
+  * Push whitelist now doesn't apply to branch deletion (#4601) (#4640)
+  * Site admin could create repos even MAX_CREATION_LIMIT=0 (#4645) (#4650)
+* FEATURES
+  * Add cli commands to regen hooks & keys (#3979)
+  * Add support for FIDO U2F (#3971)
+  * Added user language setting (#3875)
+  * LDAP Public SSH Keys synchronization (#1844)
+  * Add topic support (#3711)
+  * Multiple assignees (#3705)
+  * Add protected branch whitelists for merging (#3689)
+  * Global code search support (#3664)
+  * Add label descriptions (#3662)
+  * Add issue search via API (#3612)
+  * Add repository setting to enable/disable health checks (#3607)
+  * Emoji Autocomplete (#3433)
+  * Implements generator cli for secrets (#3531)
+* ENHANCEMENTS
+  * Add more webhooks support and refactor webhook templates directory (#3929)
+  * Add new option to allow only OAuth2/OpenID user registration (#3910)
+  * Add option to use paged LDAP search when synchronizing users (#3895)
+  * Symlink icons (#1416)
+  * Improve release page UI (#3693)
+  * Add admin dashboard option to run health checks (#3606)
+  * Add branch link in branch list (#3576)
+  * Reduce sql query times in retrieveFeeds (#3547)
+  * Option to enable or disable swagger endpoints (#3502)
+  * Add missing licenses (#3497)
+  * Reduce repo indexer disk usage (#3452)
+  * Enable caching on assets and avatars (#3376)
+  * Add repository search ordered by stars/forks. Forks column in admin repo list (#3969)
+  * Add Environment Variables to Docker template (#4012)
+  * LFS: make HTTP auth period configurable (#4035)
+  * Add config path as an optionial flag when changing pass via CLI (#4184)
+  * Refactor User Settings sections (#3900)
+  * Allow square brackets in external issue patterns (#3408)
+  * Add Attachment API (#3478)
+  * Add EnableTimetracking option to app settings (#3719)
+  * Add config option to enable or disable log executed SQL (#3726)
+  * Shows total tracked time in issue and milestone list (#3341)
+* TRANSLATION
+  * Improve English grammar and consistency (#3614)
+* DEPLOYMENT
+  * Allow Gitea to run as different USER in Docker (#3961)
+  * Provide compressed release binaries (#3991)
+  * Sign release binaries (#4188)
+
+## [1.4.3](https://github.com/go-gitea/gitea/releases/tag/v1.4.3) - 2018-06-26
+
+* SECURITY
+  * HTML-escape plain-text READMEs (#4192) (#4214)
+  * Fix open redirect vulnerability on login screen (#4312) (#4312)
+* BUGFIXES
+  * Fix broken monitoring page when running processes are shown (#4203) (#4208)
+  * Fix delete comment bug (#4216) (#4228)
+  * Delete reactions added to issues and comments when deleting repository (#4232) (#4237)
+  * Fix wiki URL encoding bug (#4091) (#4254)
+  * Fix code tab link when viewing tags (#3908) (#4263)
+  * Fix webhook type conflation (#4285) (#4285)
+
+## [1.4.2](https://github.com/go-gitea/gitea/releases/tag/v1.4.2) - 2018-06-04
+
+* BUGFIXES
+  * Adjust z-index for floating labels (#3939) (#3950)
+  * Add missing token validation on application settings page (#3976) #3978
+  * Webhook and hook_task clean up (#4006)
+  * Fix webhook bug of response info is not displayed in UI (#4023)
+  * Fix writer cannot read bare repo guide (#4033) (#4039)
+  * Don't force due date to current time (#3830) (#4057)
+  * Fix wiki redirects (#3919) (#4065)
+  * Fix attachment ENABLED (#4064) (#4066)
+  * Added deletion of an empty line at the end of file (#4054) (#4074)
+  * Use ResolveReference instead of path.Join (#4073)
+  * Fix #4081 Check for leading / in base before removing it (#4083)
+  * Respository's home page not updated after first push (#4075)
+
+## [1.4.1](https://github.com/go-gitea/gitea/releases/tag/v1.4.1) - 2018-05-03
+
+* BREAKING
+  * Add "error" as reserved username (#3882) (#3886)
+* SECURITY
+  * Do not allow inactive users to access repositories using private key (#3887) (#3889)
+  * Fix path cleanup in file editor, when initilizing new repository and LFS oids  (#3871) (#3873)
+  * Remove unnecessary allowed safe HTML (#3778) (#3779)
+  * Correctly check http git access rights for reverse proxy authorized users (#3721) (#3743)
+* BUGFIXES
+  * Fix to use only needed columns from tables to get repository git paths (#3870) (#3883)
+  * Fix GPG expire time display when time is zero (#3584) (#3884)
+  * Fix to update only issue last update time when adding a comment (#3855) (#3860)
+  * Fix repository star count after deleting user (#3781) (#3783)
+  * Use the active branch for the code tab (#3720) (#3776)
+  * Set default branch name on first push (#3715) (#3723)
+  * Show clipboard button if disable HTTP of git protocol (#3773) (#3774)
+
+## [1.4.0](https://github.com/go-gitea/gitea/releases/tag/v1.4.0) - 2018-03-25
+
+* BREAKING
+  * Drop deprecated GOGS\_WORK\_DIR use (#2946)
+  * Fix API status code for hook creation (#2814)
+* SECURITY
+  * Escape branch name in dropdown menu (#3691) (#3692)
+  * Refactor and simplify to correctly validate redirect to URL (#3674) (#3676)
+  * Fix escaping changed title in comments (#3530) (#3534)
+  * Escape search query (#3486) (#3488)
+  * Sanitize logs for mirror sync (#3057)
+* FEATURES
+  * Serve .patch and .diff for pull requests (#3305, #3293)
+  * Add repo-sync-releases admin command (#3254)
+  * Support default private when creating or migrating repository (#3239)
+  * Writable deploy keys (closes #671) (#3225)
+  * Add Pull Request merge options - Ignore white-space for conflict checking, Rebase, Squash merge (#3188)
+  * Added progressbar for issues with checkboxes (#1146). (#3171)
+  * Mention completion for issue editor. (#3136)
+  * Add 'mark all read' option to notifications (#3097)
+  * Git LFS lock api (#2938)
+  * Add reactions to issues/PR and comments (#2856)
+  * Add dingtalk webhook  (#2777)
+  * Responsive view (#2750)
+* BUGFIXES
+  * Fix wiki inter-links with spaces (#3560) (#3632)
+  * Fix query protected branch bug (#3563) (#3571)
+  * Fix remove team member issue (#3566) (#3570)
+  * Fix the protected branch panic issue (#3567) (#3569)
+  * If Mirrors repository no content is fetched, updated time should not be changed (#3551) (#3565)
+  * Bug fix for mirrored repository releases sorted (#3522) (#3555)
+  * Add issue closed time column to fix activity closed issues list (#3537) (#3540)
+  * Update markbates/goth library to support OAuth2 with new dropbox API (#3533) (#3539)
+  * Fixes missing avatars in offline mode (#3471) (#3477)
+  * Fix synchronization bug in repo indexer (#3455) (#3461)
+  * Fix rendering of wiki page list if wiki repo contains other files (#3454) (#3463)
+  * Fix webhook X-GitHub-* headers casing for better compatibility (#3429)
+  * Add content type and doctype to requests made with go-get (#3426, #3423)
+  * Fix SQL type error for webhooks (#3424)
+  * Fix PR merge error (#3421)
+  * Recognize more characters in crossreferenced repo name (#3413)
+  * Fix MSSQL bug on org (#3405)
+  * HTML escape all lines of the search result (#3402)
+  * Change local copy origin url after repository rename (#3399)
+  * Force-push to base repo's ref/pull/#/head (#3393)
+  * Fix bug when a user delete but assigned on issue (#3318)
+  * Use issue number/index instead of id for API URL. Fix #3297 (#3298)
+  * Fix repo-transfer-and-team-repo-count bug (#3241)
+  * Fix always-on SSL Mode checkbox in admin page (#3208)
+  * Fix source download link when no code unit allowed (#3166)
+  * Fix org owner cannot be removed if he is not in owner team (#3164)
+  * Fix run web with -p push failed (#3154)
+  * Fix gpg tmpl (#3153)
+  * Fix SSH auth lfs locks (#3152)
+  * Improvements for supporting UI Location (#3146)
+  * Fix new pull request link (#3133)
+  * Fix missing branch in release bug (#3108)
+  * Allow adding collaborators with (fullname) (#3103)
+  * Fix repo links (#3093)
+  * fix lfs url refs + keep path upper/lowercase in db. (#3092)
+  * Fix redis session failed (#3086)
+  * Fix bugs in issue dashboard stats (#3073)
+  * Fix avatar URLs (#3069)
+  * Fix ref parsing in commit messages (#3067)
+  * Fix issue list branch link broken (#3061)
+  * sendmail: correct option to set envelope-sender (#3044)
+  * Fix missing password length check when change password (#3039)
+  * Fix git lfs path (#3016)
+  * Fix API-Endpoint release (#3005) (#3012)
+  * Set OpenID support on by default when installing new instance (#3010)
+  * Various wiki bug fixes (#2996)
+  * Fix go-get, src and raw urls to new scheme (#2978)
+  * Fix error when add user has full name to team (#2973)
+  * Fix memcache support when value is returned as string always (#2924)
+* ENHANCEMENTS
+  * Use GiteaServer as the user agent for http requests (#3404)
+  * Delete indexer DB entries when (re)creating index (#3385)
+  * Change how merged PR commit info are prepared (#3368)
+  * Asynchronously populate the repo indexer (#3366)
+  * Make the default action for the gitea executable that of running the webserver (#3331)
+  * Templates for extra links in top navbar and repo tool tabs. (#3308)
+  * Fixed asterisk based tasklist items #3295 (#3296)
+  * Add more additional template snippets (#3286)
+  * Open external tracker in blank window, consistently with wiki (#3227)
+  * Fix repo links on user profile (#3197)
+  * Enable emoji for wiki view (#3158)
+  * Small improve on deleting attachements (#3145)
+  * Reduce overhead of upgrades for users with custom stylesheets/JS (#3051)
+  * Default log level to Info without hardcoding it in installer (#3041)
+  * Memory usage improvements (#3013)
+  * Add fingerprint to ssh key endpoints. (#3009)
+  * Improve memory usage when reaching diff limits (#2990)
+  * Expandable commit bodies (#2980)
+  * Update gitgraph.js to fix blurry commit graph on HiDPI screens (#2957)
+  * Fix language names (#2955)
+  * Remove render issue link (#2954)
+  * Page parameter for repo search API (#2915)
+  * Apply LANDING\_PAGE config options for logged in users (#2894)
+  * Enable admin to search by email (#2888)
+  * Hide add key button if SSH is disabled (#2873)
+  * Fix comment API paths (#2813)
+  * Add an option to allow redirect of http port 80 to https. (#1928)
+* MISC
+  * Fix organization profile on mobile devices (#3332)
+  * Fix guide link for webhooks in repository settings (#3291) (#3292)
+  * Enable Libravatar by default in new installations (#3287)
+  * Improve suppressed diff boxes (#3193)
+  * fix button heights on commits page (#3091)
+  * Minor copy changes (#3074)
+  * Sort repos in issues dashboard sidebar (#3072)
+  * Remove box-shadow from UI, fix dashboard issue (#3065)
+  * Adjust branch button size (#3063)
+  * Fix misalignment issue in repo header (#3062)
+  * Delete a user's public key via admin api (closes #3014) (#3059)
+  * Dashboard: Fix line height problem in issue titles (#3054)
+  * Remove duplicate "Max Diff Lines" from config view (#2987)
+  * Drop unmaintained gogs migration script (#2947)
+  * App restarts to quickly if it fails to start. (#2945)
+  * Add owner to delete repo message (#2886)
+
+## [1.3.1](https://github.com/go-gitea/gitea/releases/tag/v1.3.1) - 2017-12-08
+
+* BUGFIXES
+  * Sanitize logs for mirror sync (#3057, #3082) (#3078)
+  * Fix missing branch in release bug (#3108) (#3117)
+  * Fix repo indexer and submodule bug (#3107) (#3110)
+  * Fix legacy URL redirects (#3100) (#3106)
+  * Fix redis session failed (#3086) (#3089)
+  * Fix issue list branch link broken (#3061) (#3070)
+  * Fix missing password length check when change password (#3039) (#3071)
+
+## [1.3.0](https://github.com/go-gitea/gitea/releases/tag/v1.3.0) - 2017-11-29
+
+* BREAKING
+  * Make URL scheme unambiguous (#2408)
+* FEATURES
+  * Add branch overiew page (#2108)
+  * Code/repo search (#2582)
+  * Add Activity page to repository (#2674)
+  * Issue Timetracking (#2211)
+  * Add orgmode document type on file view and readme (#2525)
+  * Add external markup render support (#2570)
+  * Implementation of discord webhook (#2402)
+  * Webhooks for repo creation/deletion (#1663)
+  * Complete push webhooks (#2530)
+  * Add possibility to record branch information in an issue (#780)
+  * Create new branch from branch selection dropdown (#2130)
+  * Implementation of all repositories of a user from user->settings (#1740)
+  * Add LFS object verification step after upload (#2868)
+  * Configurable SSH cipher suite (#913)
+  * Disable custom Git Hooks globally via configuration file (#2450)
+  * Sync releases table with tags on push and for mirrors (#2459)
+* BUGFIXES
+  * Fix label comments for French locale (#3017)
+  * Remove duplicate "Max Diff Lines" from config view (#3001)
+  * Fix over-escaped characters (#2992)
+  * Fix go-get, src and raw urls to new scheme (#2986)
+  * Fix error when add user has full name to team (#2975)
+  * Fix files/commits of merged PRs (#2970)
+  * Update golang x/crypto dependencies - Fix SSH transport fail (#2951)
+  * Fix memcache support when value is returned as string always (#2950)
+  * Fix issue link rendering in commit messages (#2897)
+  * Fix adding a new authentication source after selecting OAuth (#2889)
+  * Fix new branch creation to new url scheme (#2884)
+  * Allow spaces in username for LDAP users (#2880)
+  * Fix LFS not returning correct content length when requesting a range … (#2864)
+  * Fix fork repository cycle to self (#2860)
+  * Fix click create pull request button 404 (#2859)
+  * Fix API raw file content access for default branch (#2849)
+  * Clean repository ROOT directory name with filepath.Clean (#2846)
+  * Fix API raw requests for commits and tags (#2841)
+  * Fix order of comments (#2835)
+  * Issue content should not be updated when closing with comment (#2833)
+  * Fix ordering in app.ini and fix run mode option (#2829)
+  * Fix redirect url of legacy commits route (#2825)
+  * Fix commits page url (#2823)
+  * Fix wrong translations (#2818)
+  * Fix dropdown menu position when explore repos (#2808)
+  * Fix Git LFS object/repo link storage in database and small refactoring (#2803)
+  * Use relative URLs for avatars on the dashboard (#2800)
+  * Add checks for commits with missing author and time (#2771)
+  * Fix emojify image URL (#2769)
+  * Hide unactive on explore users and some refactors (#2741)
+  * Fix IE unsupported javascript construction in branch dropdown (#2736)
+  * Only update mirror last update after successful sync (#2730)
+  * Fix semantic-ui style conflict with v-cloak (#2722)
+  * Fixing wrong translation on sort type oldest/latest (#2720)
+  * Fix PR, milestone and label functionality if issue unit is disabled (#2710)
+  * Fix plain readme didn't render correctly on repo home page (#2705)
+  * Fix organization removal from watch table migration (#2703)
+  * Fix repository search function (#2689)
+  * fix panic on gogs webhook creation (#2675)
+  * Fix orgnization user watch repository (#2670)
+  * GPG key email verification no longer case sensitive (#2661) (#2663)
+  * Fix index column deletion (#2651)
+  * table `pull_request` wasn't updated correctly (#2649)
+  * Fix go get response if only app URL is custom in configuration (#2634)
+  * Fix doubled issue tab introduced in migration v16 (#2611)
+  * Rewrite migrations to not depend on future code changes (#2604)
+  * Fix implementation of repo Home func (#2601)
+  * Fix translation upload to crowdin (#2599)
+  * Reduce usage of allcols on update (#2596)
+  * fix go get subpackage bug (#2584)
+  * Fix broken migration to add can_push field back to table (#2574)
+  * fix readme view bug (#2566)
+  * Fix sending mail with a non-latin display name. #2102 (#2559)
+  * Restricting access to fork functioanlity to users with Code access (#2534)
+  * fix updated update on public key (#2514)
+  * Added bucket name to s3 drone plugin (#2505)
+  * fixes 500 error on dashboard when using MSSQL (#2504)
+  * fix wrong rendering of commit detail page (#2503)
+  * Hotfix: Add time manually adds time in nanoseconds (#2499)
+  * Remove repository mirrors from "collaborative" list (#2497)
+  * fix release failed since the wrong token name (#2496)
+  * Fix slice out of bounds error in mailer (#2479)
+  * Fix #2470 (#2477)
+  * fix orgnization webhooks (#2422)
+  * fix webhook test (#2415)
+  * fix missing orgnization discord webhook (#2414)
+  * Fix route handler order (#2409)
+  * Prevent sending emails and notifications to inactive users (#2384)
+  * Move themes to plugin directory. Fixes #2372 (#2375)
+  * fix duplicated feed (#2370)
+  * Fix missing collabrative repos (#2367)
+  * Only check at least one email gpg key (#2266)
+  * don't check minimum key size when disabled (#1754)
+  * Fix run command race (#1470)
+  * fix .netrc authentication (#2700)
+  * Fix so that user can still fork his own repository to his organizations (#2699)
+  * Fix can_push value to false in protected_branch (#2560)
+  * Fix copy in email templates (#2801)
+  * Fix inconsistencies in user settings UI (#2901)
+  * Fix attachments icon size on zoom in/out (#2853)
+  * Fix ignored errors in API route (#2850)
+  * Fix activity css conflit with semantic ui (#2758)
+  * Fix notifications tabs according to semantic-ui docs (#2733)
+  * Fix typos in app.ini (#2732)
+  * Fix duplicated rel attribute (#2549)
+  * Fix tests code to prevent some runtime errors (#2381)
+* ENHANCEMENTS
+  * Memory usage improvements and lower minimal git requirement to 1.7.2 (#3013) (#3028)
+  * Set OpenID support on by default when installing new instance (#3010) (#3027)
+  * Use api.TrackedTime in API (#2807)
+  * Configurable SSH key exchange algorithm and MAC suite (#2806)
+  * Add Safari pinned tab icon (#2799)
+  * Improve force push detect when push (#2798)
+  * Add wrapping to long diff lines (#2789)
+  * Link members and repositories count to each page on org home. (#2787)
+  * Show Sendmail settings on admin config page (#2782)
+  * Add commit count caching (#2774)
+  * Use identicon image for default gravatar. (#2767)
+  * Add default ssh ciphers (#2761)
+  * Remove manual of unsupported option (#2757)
+  * Add search mode option to /api/repo/search (#2756)
+  * Move swagger-ui under /api/v1 (#2746)
+  * Add support for extra sendmail arguments (#2731)
+  * Use buffersize to reduce database connection when iterate (#2724)
+  * Render plain text README.txt monospaced (#2721)
+  * Integration test for activity page (#2704)
+  * Merge password and 2fa page on user settings (#2695)
+  * Allow custom SSH user in UI for built-in SSH server (#2617) (#2678)
+  * Refactor duplicated code in repo handlers (#2657)
+  * Replace deprecated Id method with ID (#2655)
+  * Remove redudant functions and code (#2652)
+  * hide navbar when only 1 sign-in method is available (#2444) (#2648)
+  * Change default sort order (#2647)
+  * Change pull description text (#2075) (#2646)
+  * Remove direct user adding to organization members (#2641)
+  * Use session when creating user (#2638)
+  * Use Semantic UI's Search component for user and repo search (#2636)
+  * Use AfterLoad instead of AfterSet on Structs (#2628)
+  * Remove redudant CheckUnit calls in router (#2627)
+  * Remove repo unit index (#2621)
+  * Remove redudant issue LoadAttributes() calls (#2614)
+  * Make indexer code more reusable (#2590)
+  * Use custom type and constants to hold available order by options (#2572)
+  * Use named ActionType constants in template helper (#2545)
+  * Make basic functionality work without JavaScript (#2541)
+  * Ctrl + Enter to submit forms (#2540)
+  * Automatically regenerate indexer for incompatible versions (#2524)
+  * Set default lfs content path to data/lfs (#2521)
+  * Convert spaces to tabs in footer.tmpl (#2520)
+  * Sort repository tree entries in natural way (#2506)
+  * Open external wiki in new window (#2489)
+  * Use created & updated instead BeforeInsert & BeforeUpdate (#2482)
+  * Hide branch on pull request view or create UI (#2454)
+  * improve protected branch to add whitelist support (#2451)
+  * some refactors for issue and comments (#2419)
+  * Restructure markup & markdown to prepare for multiple markup language… (#2411)
+  * Improve issue search (#2387)
+  * Add UseCompatSSHURI setting (#2356)
+  * Use custom search for each filter type in dashboard (#2343)
+  * Failed authentication are now properly logged (#2334)
+  * Add environment variable support for Docker image (#2201)
+  * Set session and indexers' data files rel to AppDataPath (#2192)
+  * Display commit status on landing page of repo (#1784)
+* TESTING
+  * Add integration test for logging out (#2892)
+  * Integration test for user deleting account (#2891)
+  * Use different directories for session files in integration tests (#2834)
+  * Add deleted_branch table fixture (#2832)
+  * Include HTTP method in test error message (#2815)
+  * Add repository search unit and integration tests (#2575)
+  * Expand fixtures (#2571)
+  * Fix /api/repo/search integration tests (#2550)
+  * Make integration tests more user-friendly (#2536)
+  * Fix unit test race condition (#2516)
+  * Add missing fixture to clean gpg_key table (#2494)
+  * Hotfix for integration testing (#2473)
+  * Make repo private to not interfere with other tests (#2467)
+  * Error message for integration test (#2410)
+  * Fix "index out of range" runtime error in repo_list tests (#2376)
+  * Add git clone test on integration test (#1682)
+* TRANSLATION
+  * Fix localization texts that contain semicolon (#2900)
+  * Fix activity locale (#2709)
+  * Update translation from crowdin (#2368)
+* BUILD
+  * change the email and name to GitBot account. (#2848)
+  * Fix removing backslash before quotes in translations (#2831)
+  * add gitea remote in drone. (#2817)
+  * add remote name for git push. (#2816)
+  * Launch Gitea with custom UID/GID for 'git' user (fixes #2286) (#2791)
+  * Download and pushing translations (#2727)
+  * Automatic update of translations (#2585)
+  * Add pre-build step for nodejs stuff (#2581)
+  * Compress css with nodejs (#2580)
+  * Remove go version check for make fmt (#2558)
+  * Fix lint errors (#2547)
+  * Always run fmt check in CI (#2546)
+  * Fix fmt errors (#2544)
+  * add codecov.io service. (#2493)
+  * Fix some tests : make coverage -> test (#2492)
+  * Fix fmt error in mailer (#2490)
+  * Allow changing integration test database connection using env variables (#2484)
+  * Add changelog config file for generate changelog (#2461)
+  * Changes for latest DroneCI (#2362)
+  * Use standard lessc and minify CSS using Node.js (#2337)
+* DOCS
+  * Update screenshots on README (#2910)
+  * Gogs -> Gitea (#2909)
+  * Update swagger documentation (#2899)
+  * Fix typo (#2810)
+  * Fix Polish language name spelling (#2766)
+  * Fix Various Grammar Issues and Adjust Unnatural Wording (#2737)
+  * Add maintainer label for docker file (#2658)
+  * Link to gitea-specific Vagrant example (#2624)
+  * add release notes of v1.1.4 (#2463)
+  * Wrap most paragraphs to 80 columns (#2396)
+  * Update CONTRIBUTING following #2329  discussion (#2394)
+  * Update hard-coded version to 1.3.0+dev (#2390)
+  * Clarify Translation Process. Also fix branch names (#2378)
+  * Admin grammar fixes and improvements (#2056)
+* MISC
+  * Sync MaxGitDiffLineCharacters with conf/app.ini (#2779)
+  * Dockerfile: Updated alpine image to 3.6. (#2486)
+  * Basic VSCode configuration for building and debugging (#2483)
+  * Added vendor dir for js/css libs; Documented sources (#1484) (#2241)
+
+## [1.2.3](https://github.com/go-gitea/gitea/releases/tag/v1.2.3) - 2017-11-03
+
+* BUGFIXES
+  * Only require one email when validating GPG key (#2266, #2467, #2663) (#2788)
+  * Fix order of comments (#2835) (#2839)
+
+## [1.2.2](https://github.com/go-gitea/gitea/releases/tag/v1.2.2) - 2017-10-26
+
+* BUGFIXES
+  * Add checks for commits with missing author and time (#2771) (#2785)
+  * Fix sending mail with a non-latin display name (#2559) (#2783)
+  * Sync MaxGitDiffLineCharacters with conf/app.ini (#2779) (#2780)
+  * Update vendor git (#2765) (#2772)
+  * Fix emojify image URL (#2769) (#2773)
+
+## [1.2.1](https://github.com/go-gitea/gitea/releases/tag/v1.2.1) - 2017-10-16
+
+* BUGFIXES
+  * Fix PR, milestone and label functionality if issue unit is disabled (#2710) (#2714)
+  * Fix plain readme didn't render correctly on repo home page (#2705) (#2712)
+  * Fix so that user can still fork his own repository to his organizations (#2699) (#2707)
+  * Fix .netrc authentication (#2700) (#2708)
+  * Fix slice out of bounds error in mailer (#2479) (#2696)
+
+## [1.2.0](https://github.com/go-gitea/gitea/releases/tag/v1.2.0) - 2017-10-10
+
+* SECURITY
+  * Sanitation fix from Gogs (#1461)
+* BREAKING
+  * Rename /forget_password url to /forgot_password (#1219)
+* FEATURES
+  * Logo: Add task to generate images from SVG and change to new logo (#2194)
+  * Status-API (#1332)
+  * Show commit status icon in commits table (#1688)
+  * Additional OAuth2 providers (#1010)
+  * GPG commit validation (#1150)
+  * Rework SSH key management UI to add GPG (#1293)
+  * Implement GPG api (#710)
+  * Login via OpenID-2.0 (#618)
+  * Add units to team (#947)
+  * Batch updates for issues (#926)
+  * Add Gitea Webhook (#1755)
+  * API: support '/orgs/:org/repos' (#2047)
+  * Display all organization from user settings (#1739)
+  * LDAP user synchronization (#1478)
+  * Adding #issuecomment to the URL in E-Mail notifications (#1674)
+  * Add download count field and unit testing for attachment. (#1512)
+  * Add repo mirror sync API endpoint (#1508)
+  * Add markup package to prepare for org markup format (#1493)
+  * Support for custom html meta  (#1423)
+  * Per issue/PR watch/unwatch (#1410)
+  * Allow ENABLE_OPENID_SIGNUP to depend on DISABLE_REGISTRATION (#1369)
+  * Repo size in admin panel (#1482)
+  * Show user OpenID URIs in their profile (#1314)
+  * Add change-password admin command (#1304)
+  * Only use issue and wiki on repo. (#1297)
+  * Allow push to init a wiki repo (#1279)
+* ENHANCEMENTS
+  * Make time diff translatable (#2057)
+  * Smaller watch, star, and fork buttons (#2052)
+  * Display config file path on admin panel (#2030)
+  * Only show SSH clone URL if signed in (#2169) (#2170)
+  * Only show "No Description" to repo admins (#2167)
+  * Always return valid go-get meta, even if unauthorized (#2010)
+  * Enable assignee e-mail notification (#2003)
+  * Let not-logged-in users view releases (#1999)
+  * No highlighting for .txt files (#1922)
+  * Make side nav on dashboard stackable (#1778)
+  * Setting to disable authorized_keys backup (#1856)
+  * Hide the create organization button (in dashboard/organization section) (#1705)
+  * LFS: Return 404 for unimplemented endpoints (#1330)
+  * Show a link to password reset from user settings requiring a password (#862)
+  * Reserve the "explore" user/org name (#1222)
+  * Send notifications to partecipants in issue comments (#1217)
+  * Improve style of user OpenID setting page (#1324)
+  * Use font-awesome OpenID icon more (#1320)
+  * Use readonly input form to show the validated OpenID URI (#1308)
+  * Add captcha support to OpenID based signup (#1307)
+  * Minor improvements on commit graph UI (#1380)
+  * Mirror sync interval specified as duration string (#1407)
+  * Make issue in commit graph "clickable" (#1392)
+  * Use whole button (commit graph) as link (#1390)
+  * Autofocus on 2fa passcode fields (#1460)
+  * Sort on repo size in admin panel (#1654)
+  * Improve dashboard repo search (#1652)
+  * Use a better default MAX_GIT_DIFF_LINE_CHARACTERS (#1845)
+  * Adds Parent property to the repo API (#1687)
+  * Add configuration option for default permission to create Organizations (#1686)
+  * Remove sha1 hash display in repository table (#1678)
+  * Download files to their original filename (#1676)
+  * Exposes in API the Repo entity's Size and IsBare property (#1668)
+  * Change two factor code entry box from text to number (#1733)
+  * Directly show error if user hit repository limit  (#1767)
+  * Generate small and large logos at 4x resolution (#2233)
+  * Tags listed in releases tab (#2389) (#2424)
+* BUGFIXES
+  * Fix adding branch as protected to not allow pushing to it (#2556)
+  * Orgs: fix org page title when full name is not defined (#1495)
+  * Fix double borders on edit page (#1152) (#1153)
+  * Search bar fixes for #1187 and #1205 (#1207)
+  * Fix upgrade failed after ever rollback (#1194)
+  * Fix FCGI (over TCP) support (#1368)
+  * Backport of migration fixes (#2604) (#2677)
+  * fix panic on gogs webhook creation (#2675) (#2676)
+  * Backport: Fixes 500 error on dashboard when using MSSQL (#2504) (#2662)
+  * Fix go get response if only app URL is custom in configuration (#2634) (#2640)
+  * Fix deletion of unprotected branches (#2630)
+  * Backport of 2611 / Fix doubled issue tab introduced in migration v16 (#2622)
+  * v38 migration used an outdated version of RepoUnit model (#2602)
+  * fix go get subpackage bug (#2584) (#2589)
+  * Backport: Sync releases table with tags on push and for mirrors (#2459) (#2554)
+  * Backport: Restricting access to fork functioanlity to users with Code access (#2542)
+  * Fix migration from pre-v15 to 1.2.0 (#2460) (#2465)
+  * Fix migration from pre-v15 to 1.2.0 (#2460)
+  * fix duplicated feed (#2370) (#2413)
+  * Fix releases to be counted from database not tags (#2389)
+  * Fix missing collabrative repos (#2367) (#2382)
+  * Add more test for login links and fix a bug on action retrieve (#2361)
+  * Fix SQL condition bug in GetFeeds(..) (#2360)
+  * fix bug on create repo link on dashboard (#2359)
+  * Fix order of elements in dashboard html (#2344)
+  * Fix repo-search template errors for go1.7 (#2336)
+  * Add missing forks key for dashboard repository component (#2325)
+  * fix template error on explore repos (#2319)
+  * Trigger sync webhooks on UI commit (#2302)
+  * fix 500 error when view an issue which's milestone deleted (#2297)
+  * Only update needed columns when update user (#2296)
+  * Fix rendering of external links (#2292)
+  * Fix and improve dashboard repo UI (#2285)
+  * Make short link pattern greedy (#2259)
+  * Temporarily patch go-ini/ini with fork (#2255)
+  * Convert xorm literal queries to method calls (#2253)
+  * update code.gitea.io/git in vendor to fix delete branch fails (#2250)
+  * Replace calls to xorm UseBool with Where (#2237)
+  * rhel7 has a git version with four digits (1.8.3.1) (#2236)
+  * Fix internal requests when gitea listens to unix socket or only external IP (#2234)
+  * Check for access in /repositories/:id (#2227)
+  * Fixed robots.txt 404 error (#2226)
+  * Fix counts on issues dashboard (#2215)
+  * Fix unclosed session bug (#2214)
+  * Add collaborative repositories to the dashboard (#2205)
+  * Fix issue updated_unix bug (#2204)
+  * Fix Commits nil pointer dereference (#2203)
+  * Fix bare-repo bugs (#2199)
+  * Fix PR nil-dereference bug (#2195)
+  * Allow only single fork per user/organization (#2193)
+  * Fix key usage time update if the key is used in parallel for multiple operations (#2185)
+  * Only allow token authentication with 2FA enabled (#2184)
+  * Fix profile update for non-local users (#2178)
+  * Fix compiling without sqlite and gcc (#2177)
+  * Make compare button URL aware if current repo is a fork (#2162) (#2163)
+  * Remove unit types commits and settings (#2161)
+  * Fix OpenID registration route (#2160)
+  * Fix repository settings collobration list display (#2151)
+  * Ignore invalid issue numbers in commit messages. Fixes  #2022 (#2150)
+  * Fix SHA1 hash linking (#2143)
+  * Fix repo API bug (#2133)
+  * Use POSIX complaint ! operator in find (#2132)
+  * Fix GET /users/:username/repos endpoint (#2125)
+  * Fix username rendering bug (#2122)
+  * Fix wiki preview links (#2119)
+  * vendor: update sqlite to fix "database is locked" errors (#2116)
+  * Fix unchecked error bug (#2110)
+  * Fix missing-return bug (#2109)
+  * Fix API for branches with slashes (#2096)
+  * Fix git hooks update to receive required arguments (#2095)
+  * upgrade git source code. (#2094)
+  * Fix SQL bug in models.PullRequests (#2092)
+  * Don't ignore gravatar error (#2083)
+  * Fix release display and correct paging (#2080)
+  * remove unnecessary blank lines and wrong error log (#2079)
+  * Check for valid renamed usernames (#2077)
+  * Update git module (#2074)
+  * Fix org hooks UI (#2072)
+  * Fix #1271: Call location.reload after XHR finishes (#2071)
+  * Fix default ghost assignee bug (#2069)
+  * Fix bug in issue labels API (#2048)
+  * Load label ID in NewLabels (#2045)
+  * Fix: `http: multiple response.WriteHeader calls` (#2038)
+  * Pagination on releases page (#2035)
+  * repo/editor: fix breadcrumb path cuts parent dirs (#3859) (#2032)
+  * Fix displaying commits and files of PR created from now deleted fork (#2023)
+  * Fix #2001 and fix issue comments hidden (#2016)
+  * Update code.gitea.io/git (#2014)
+  * Keep sort when switching page (#2013)
+  * Important: wrong PR merge commit ID saved (#2007)
+  * Don't show non-comments in comments API (#2001)
+  * Fix "Dashboard shows deleted comments" (#1995)
+  * Make branch deletion URL more like GitHub's, fixes #1397 (#1994)
+  * Fix fast-forward PR bug (#1989)
+  * Fix GPG email checking to be case insensitive (#1988)
+  * fix bug for normal user visit public repo (#1984)
+  * fix collborators lack of units on orgnization repositories (#1968)
+  * Fix diff of renamed and modified file (#1967)
+  * Fix uppercase default branch bug (#1965)
+  * Fix bug in Action.loadRepo() (#1959)
+  * Fix deleted milestone bug (#1942)
+  * Fix engine bug in getIssueByID (#1934)
+  * Switch to keybase go-crypto (for some elliptic curve key) + test (#1925)
+  * Fix setting.AppPath for integration tests (#1923)
+  * Fix search by issue type (#1914)
+  * Fix ghost user bug (#1913)
+  * Require token before checking membership/ownership (#1905)
+  * Bug fixes for org member API (#1904)
+  * A missing / to provide a correct endpoint (#1903)
+  * Fix 500 in public activity page (#1901)
+  * Center-aligned login topbar (#1880)
+  * Migration to fix existing owner team units (#1873)
+  * Fix paginater length (#1866)
+  * Fix bug in removeOrgRepo (#1858)
+  * Display draft releases (#1854)
+  * Fix 404 for external tracking issues (#1852)
+  * Update code.gitea.io/git (#1849)
+  * Fix user profile activity feed (#1848)
+  * Don't ignore error in getMergeCommit (#1843)
+  * Fix locking bug in removeOrgRepo (#1842)
+  * Fix status table race condition (#1835)
+  * Fix PR template error (#1834)
+  * Fix pull request compare link (#1832)
+  * Use ghost users in issues/PRs (#1831)
+  * Commitless repos should be bare (#1829)
+  * Update code.gitea.io/git (#1824)
+  * Fix invalid reference in feeds template (#1820)
+  * fix bug to deny to add orgnization as a member of an orgnization or team (#1815)
+  * xxx_active_code_live setting in printed in hours and minutes instead … (#1814)
+  * Fix deadlock in updateRepository (#1813)
+  * Give all units to owner team (#1812)
+  * Fix 500 for GET /teams/:id endpoints (#1811)
+  * fix bug not to trim space of login username (#1796)
+  * Fix renaming bug (#1786)
+  * Fix activity feed (#1779)
+  * Make navbar scroll on overflow (#1777)
+  * Delete repo redirects on repo deletion (#1776)
+  * Fix unloaded owner bug (#1770)
+  * Admin should always be allowed to create repositories even if hit limit (#1765)
+  * Update HighlightJS and fix YAML files highlighting (#1764)
+  * fix: #1757 fix set MAX_CREATION_LIMIT as zero. (#1762)
+  * fix admin lost permission caused by #947 (#1753)
+  * More fixes for dashboard search (#1750)
+  * fixes wrong after field in webhook payload (#1746)
+  * fix avatar update bug (#1729)
+  * Fix FOUC on Firefox (#1728)
+  * Fix changes introduce by update of go-swagger. (#1727)
+  * Fix #1719 (#1722)
+  * Correct flash after sending password reset email (#1718)
+  * Fix and test for delete user (#1713)
+  * Fix rendering of issue checkboxes (#1709)
+  * Enforce netgo build tag while cross-compilation (#1690)
+  * fix bug when push a branch name with / & fix an integration test bug (#1689)
+  * fix potential sqlite lock (#1680)
+  * Fix commit sha1 URL rendering in markdown (#1677)
+  * Fix static files permission under public/ (#1675)
+  * fix: tag contain character ) will http 500 on release page (#1670)
+  * Fix CSS for code in wiki markdown (#1660)
+  * fix multiple readme file rendering and fix #1657 (#1658)
+  * Add primary key and index to external login user table (#1656)
+  * fix #1643 and improve integration test (#1645)
+  * Fix version in Makefile (#1636)
+  * Handle display of GPG key without end date (#1628)
+  * fix bug on issue view when not login (#1624)
+  * bug fixed for API to get user's repos (#1622)
+  * fix lost text color on button on set as primary email (#1621)
+  * Add create_at and updated_at in PR json (#1616)
+  * update git and fix #1133 (#1614)
+  * fix bug on status API (#1533)
+  * Do not show empty collaborators segment (#1531)
+  * Fix markdown rendering (#1530)
+  * fix go get sub package and add domain on installation to let go get work defaultly (#1518)
+  * fix #1501 ssh hangs caused by #1461 (#1513)
+  * Fix empty file download (#1506)
+  * Fix broken v27 migration - change mirror interval from int to bigint (#1504)
+  * Do not allow commiting to protected branch from online editor (#1502)
+  * Add internal routes for ssh hook comands (#1471)
+  * Fix races within code.gitea.io/git.(*Command).RunInDirTimeoutPipeline (#1465)
+  * Simple quick fix for #1418 (#1456)
+  * fix gpg API panic when no verification (#1451)
+  * fix migrate failed and org dashboard failed on MSSQL database (#1448)
+  * Optimize and fix autolink function (#1442) (#1444)
+  * Fix and simplify repo branches (settings) UI (#1435)
+  * Fix disabled fields in repo settings UI (#1431)
+  * fixes pull request hanging when it contains normal and LFS files (#1425)
+  * Fix races in the log module by using syncmap (#1421)
+  * Add length check for the return string (#1420)
+  * Fix "Error: No issue number specified"  when pushing (#1393)
+  * Corrected Mirror.NextUpdate not set (#1388)
+  * fix: remove `str2html` from org full name (#1360)
+  * Correct broken unaligned load/store in armv5 (#1355)
+  * Remove href on first/last link when on first/last page (#1345)
+  * Fix broken table layout (#1344)
+  * LFS: Fix SSH authentication for trailing arguments (#1328)
+  * Remove empty file (#1326)
+  * Fix delete user failed on sqlite (#1321)
+  * Fix inconsistency in layout (#1316)
+  * Fix gpg wrong column types (#1303)
+  * Fix wiki bugs (#1294)
+  * Fix missing less sources for oauth (#1288)
+  * Make sure both scripts/ can live side by side (#1264)
+  * Fix nil-dereference bug (#1258)
+  * rewrite pre-commit, post-commit and options hooks (fixes #1250) (#1257)
+  * Commit search appearence fixes (#1254)
+  * Fix forget migration for wiki hooks (#1227)
+  * Fix repo settings external tracker failed and check external urls (#1215)
+  * Fix 500 caused by branches settings introduced by #1198 (#1214)
+  * fix #1189, commit messages containing a pipe (#1203)
+  * Bug fixed for delete repo failed (#1193)
+  * Fix migration failed when authorized_keys is not exist (#1180)
+  * Fix ini format incomiptable with crowdin (#1177)
+* TESTING
+  * Integration tests for issues API (#2059)
+  * Add integration tests for signin (#2363)
+  * Add INTERNAL_TOKEN to integration .ini file (#2346)
+  * Add public links check (#2323)
+  * Fix hooks for integration repo (#2216)
+  * More integration tests for comment API (#2156)
+  * Cache session cookies in tests (#2128)
+  * Less verbose integration tests (#2123)
+  * Fix improper setup for integration tests (#2050)
+  * Improve integration test helper functions (#2049)
+  * Add integration test for issue creating (#2002)
+  * Use testing/benchmark interface (#1993)
+  * Add integration test for repository migration (#1983)
+  * Consolidate boilerplate in integration tests (#1979)
+  * Set console to debug for integration tests (#1976)
+  * Add pull-create integration test (#1972)
+  * Coverage reports for integration tests (#1960)
+  * Add integration test for pull-request merge (#1912)
+  * Add integration test for file editing (#1907)
+  * Add integration test for repository forking (#1896)
+  * Run unused test (#1875)
+  * Don't recreate database in integration tests (#1697)
+  * remove sqlite tag when integration test with mysql/postgres and recreate database when init integration test (#1693)
+  * MySQL, Postgres integration tests in drone (#1638)
+  * improve integration test to resue models/fixtures and store git repos with tests (#1627)
+  * Improve govendor testing (#1623)
+  * Integration test framework (#1290)
+  * Unit tests for issue_list (#1209)
+  * Add integration test for signup (#1135)
+* TRANSLATION
+  * update translation from crowdin (#2368) (#2380)
+  * Small fixes (#2144)
+  * Missing signed commit display translations (#2134)
+  * Sync latest translations from crowdin (#2104)
+  * Add make command update-translations for update translations from crodwin (#2097)
+  * Fix some mistakes (#1833)
+  * Improve clarity between is_activated and prohibit_login (#1788)
+  * Improve grammar (#1775)
+  * Fix bad grammar and wordiness (#1741)
+  * Make strings translatable (#1188) (#1198)
+* BUILD
+  * Dockerfile for aarch64 (#1128) (#1130)
+  * backport from v1.2 branch: add secrets for github release (#2588) (#2598)
+  * Add secrets for github release to fix drone failed (#2588)
+  * Backport changes for latest drone (#2586)
+  * Removing .drone.yml.sig (#2579)
+  * Fix drone for tags (#2573) (#2576)
+  * Backport: Remove go version check for make fmt (#2558) (#2561)
+  * Backport: Fix lint, fmt and integration testing errors (#2553)
+  * update latest xorm version to vendor (#2353)
+  * Remove integration test executables on `make clean` (#2340)
+  * refactor(Makefile): allow overriding default go program (#2310)
+  * Revert to upstream ini dependency (#2304)
+  * Use /dev/urandom to create random password (#2298)
+  * update drone sig file. (#2262)
+  * go get github.com/wadey/gocovmerge when needed (#2235)
+  * fix typo (#2145)
+  * Revert "Reduce number of layer" (#2086)
+  * Reduce number of layer (#2078)
+  * Skip sqlite integration in CI (#2058)
+  * fix golint error and rename func for suggestion. (#1997)
+  * fix misspell (#1996)
+  * update drone sig file (#1981)
+  * send notification if status changed (#1973)
+  * switch gitter to discord for drone. (#1971)
+  * Fix missing backslash in Dockerfile.rpi (#1952)
+  * Don't run 'make release' on PRs (#1908)
+  * Update code.gitea.io/git (#1892)
+  * Use production version of vuejs (#1869)
+  * Add a variable for docker tag (#1825)
+  * resign drone and fix #1816 (#1819)
+  * Separate generate swagger + fix sed os specific (#1791)
+  * Only run coverage on merges/pushes to master (#1783)
+  * Remove stale rule from Makefile (#1782)
+  * feat: upgrade drone docker image to support multi-stage build. (#1732)
+  * Realy don't cache apk index (#1694)
+  * Limit clone depth when drone-building (#1644)
+  * Refactor Dockerfile (#1632)
+  * Check if missing/modified/unused deps in vendor and fix errors (#1468)
+  * Add GOFLAGS and EXTRA_GOFLAGS (#1438)
+  * Include formatting check to the `make test` (and thus also `check`) rule (#1366)
+* DOCS
+  * fix wrong changelog title (#2395)
+  * fix webhook link (#2289)
+  * Improve swagger doc (#2274)
+  * Add link to forum in issue template (#2070)
+  * add missing lfs config on example file (#2039)
+  * Add discourse link (#2027)
+  * Fix wording (#2024)
+  * Fix typo (#1974)
+  * Swagger docs for list/create forks (#1941)
+  * Update links to Discord server (#1940)
+  * [ci skip] update discord badge. (#1930)
+  * Change join chat from gitter to discord (#1929)
+  * Update changelog with v1.1.1 (#1926)
+  * Correct grammar in APIEmpty documentation (#1748)
+  * Add swagger comment for MirrorSync (#1747)
+  * Add "Table of Contents" in CONTRIBUTING.md (#1634)
+  * Fix service description in Debian init file (#1538)
+  * Use MAINTAINERS file in repository in CONTRIBUTING (#1489)
+  * Generate swagger json (#1402)
+  * Changed text when password reset disabled. (#1364)
+  * Removed email copyright year (#1348)
+  * Specify that time interval units are seconds (#1311)
+  * Gitea OpenID-2.0 login has been tested with livejournal.com too (#1306)
+  * Make wording of commit search more clear (#1291)
+  * Add notice that LFS mirroring is not supported (#1251)
+  * Fix typos in models/ and modules/ (#1248)
+  * Refactor and fix incorrect comment (#1247)
+  * Fix migration comment (#1241)
+  * Update locale_en-US.ini (#1235)
+  * Add LibreJS support (#1201)
+  * rename OSX to macOS (#1176)
+  * add mssql to app.ini db config comment (#1172)
+  * Add MSSQL to issues template (#1171)
+* MISC
+  * Add badge and link to the Matrix room (#2348)
+  * ignore coverage steps. (#2257)
+  * Use sqlite3 database as default for Docker image (#2182)
+  * update drone discord plugin to 0.0.4 version (#1992)
+  * fix typo (#1990)
+  * Move 3rd party js/css into `public/vendor` and document sources (#2383)
+  * Prevent conflicting TOTP accounts by adding AppURL to issuer parameter (#2335)
+  * Fix variable name typo (#2327)
+  * Make use of Vue more universal (#2318)
+  * Remove (almost) server side data rendering from repo-search component (#2317)
+  * Add OpenID configuration in install page (#2276)
+  * More tweaks to repo top panel (#2267)
+  * File path tweaks in UI (#2264)
+  * Make SHOW_USER_EMAIL also apply to profiles (#2258)
+  * EnableUnit() -> UnitEnabled() (#2242)
+  * Prevent selection of diff line numbers (#2240)
+  * Remove unused variable on makefile (#2225)
+  * No error log entries for repo 404 (#2200)
+  * Refactor vue delimeters to use es6 template delimeters (#2171)
+  * Replace tmp with TMPDIR. (#2152)
+  * Remove unused files (#2124)
+  * Improve org error handling (#2117)
+  * Absolute path for setting.CustomConf (#2085)
+  * remove deprecated code for Gogs compitable (#2041)
+  * Refactor session close as xorm already does everything needed internally  (#2020)
+  * SQLite has a query timeout. Hopefully fixes most 'database locked' errors (#1961)
+  * Use monospace font in githook editor (#1958)
+  * Fix import order (#1951)
+  * Gracefully handle bare repositories on API operations. (#1932)
+  * Fix errors caused by force push (#1927)
+  * Display URLs in integration test logs (#1924)
+  * Set TMPDIR enviroment variable for dump command (#1915)
+  * Cache ctx.User in retrieveFeeds (#1902)
+  * Make `LocalCopyPath` a setting instead of a hard-coded path (#1881)
+  * Add check misspelling (#1877)
+  * Fix misspelled variables (#1874)
+  * Gofmt (#1868, #1710, #1662)
+  * Rename misnamed migration (#1867)
+  * Support CRLF when splitting code lines for display (#1862)
+  * Add convert less css file step. (#1861)
+  * Prevent accidential selection of line numbers in code view (#1860)
+  * Delete Public SSH Key tmp file after calculating fingerprint (#1855)
+  * Remove annoying difference in button heights. (#1853)
+  * Only run test coverage on master branch. (#1838)
+  * Error from mktemp command in MacOS. (#1837)
+  * Use writeTmpKeyFile in calcFingerprint (#1828)
+  * ROOT_URL setting use the default as shown in conf/app.ini (#1823)
+  * Rename RepoCreationNum -> MaxCreationLimit (#1766)
+  * Add button to admin ui (#1738)
+  * Correct spelling mistakes (#1703)
+  * Make openid support default false for compitable with v1.1 (#1650)
+  * Send mails as HTML as default. Setting for send as plain text. (#1648)
+  * fix potential lock when sqlite (#1647)
+  * Optimize png images via Google zopflipng [ci skip] (#1639)
+  * Upgrade alpine to v3.5 in Dockerfile (#1633)
+  * remove unused vendor packages (#1620)
+  * markup: microoptimise for many short filenames in directory (#1534)
+  * support health check via / and fix #969 (#1520)
+  * Remove env user salt since no need to use (#1515)
+  * Drop db operations from hook commands (#1514)
+  * Better URL validation (#1507)
+  * Migrate WatchInfo struct to api (#1492)
+  * refactor: show command help message. (#1486)
+  * refactor update ssh key use time (#1466)
+  * Set VERSION from git once, in a variable (#1447)
+  * Remove unused mutex field (#1440)
+  * Simplify settings pages with item list (#1389)
+  * Clean-up PostgreSQL Tests (#1361)
+  * refactor: remove workaround after the golang 1.7 release. (#1349)
+  * Delete the useless code (#1335)
+  * Run "make fmt" with go-1.6 (#1333)
+  * Refactor admin/auth/new.tmpl (#1277)
+  * Refactor repo/issue/view_content.tmpl (#1276)
+  * Cleaner ui for admin, repo settings, and user settings page (#1269) (#1270)
+  * Cleaner UI for explore page (#1253) (#1255)
+  * Synced licenses with github repo (#1246)
+  * Synced gitignores with github repo (#1245)
+  * Simplify RepositoryList.loadAttributes() (#1211)
+  * Move user_follow to separate file (#1210)
+  * Reduce conditionals in signin/signup inner forms (#1138)
+
+## [1.1.4](https://github.com/go-gitea/gitea/releases/tag/v1.1.4) - 2017-09-04
+
+* BUGFIXES
+  * Fix rendering of external links (#2292) (#2315)
+  * Fix deleted milestone bug (#1942) (#2300)
+  * fix 500 error when view an issue which's milestone deleted (#2297) (#2299)
+  * Fix SHA1 hash linking (#2143) (#2293)
+  * back port from #1709 (#2291)
+
+## [1.1.3](https://github.com/go-gitea/gitea/releases/tag/v1.1.3) - 2017-08-03
+
+* BUGFIXES
+  * Fix PR template error (#2008)
+  * Fix markdown rendering (fix #1530) (#2043)
+  * Fix missing less sources for oauth (backport #1288) (#2135)
+  * Don't ignore gravatar error (#2138)
+  * Fix diff of renamed and modified file (#2136)
+  * Fix fast-forward PR bug (#2137)
+  * Fix some security bugs
+
+## [1.1.2](https://github.com/go-gitea/gitea/releases/tag/v1.1.2) - 2017-06-13
+
+* BUGFIXES
+  * Enforce netgo build tag while cross-compilation (Backport of #1690) (#1731)
+  * fix update avatar
+  * fix delete user failed on sqlite (#1321)
+  * fix bug not to trim space of login username (#1806)
+  * Backport bugfixes #1220 and #1393 to v1.1 (#1758)
+
+## [1.1.1](https://github.com/go-gitea/gitea/releases/tag/v1.1.1) - 2017-05-04
+
+* BUGFIXES
+  * Markdown Sanitation Fix [#1646](https://github.com/go-gitea/gitea/pull/1646)
+  * Fix broken hooks [#1376](https://github.com/go-gitea/gitea/pull/1376)
+  * Fix migration issue [#1375](https://github.com/go-gitea/gitea/pull/1375)
+  * Fix Wiki Issues [#1338](https://github.com/go-gitea/gitea/pull/1338)
+  * Forgotten migration for wiki githooks [#1237](https://github.com/go-gitea/gitea/pull/1237)
+  * Commit messages can contain pipes [#1218](https://github.com/go-gitea/gitea/pull/1218)
+  * Verify external tracker URLs [#1236](https://github.com/go-gitea/gitea/pull/1236)
+  * Allow upgrade after downgrade [#1197](https://github.com/go-gitea/gitea/pull/1197)
+  * 500 on delete repo with issue [#1195](https://github.com/go-gitea/gitea/pull/1195)
+  * INI compat with CrowdIn [#1192](https://github.com/go-gitea/gitea/pull/1192)
+
+## [1.1.0](https://github.com/go-gitea/gitea/releases/tag/v1.1.0) - 2017-03-09
+
+* BREAKING
+  * The SSH keys can potentially break, make sure to regenerate the authorized keys
+* FEATURES
+  * Git LFSv2 support [#122](https://github.com/go-gitea/gitea/pull/122)
+  * API endpoints for repo watching [#191](https://github.com/go-gitea/gitea/pull/191)
+  * Search within private repos [#222](https://github.com/go-gitea/gitea/pull/222)
+  * Hide user email address on explore page [#336](https://github.com/go-gitea/gitea/pull/336)
+  * Protected branch system [#339](https://github.com/go-gitea/gitea/pull/339)
+  * Sendmail for mail delivery [#355](https://github.com/go-gitea/gitea/pull/355)
+  * API endpoints for org webhooks [#372](https://github.com/go-gitea/gitea/pull/372)
+  * Enabled MSSQL support [#383](https://github.com/go-gitea/gitea/pull/383)
+  * API endpoints for org teams [#370](https://github.com/go-gitea/gitea/pull/370)
+  * API endpoints for collaborators [#375](https://github.com/go-gitea/gitea/pull/375)
+  * Graceful server restart [#416](https://github.com/go-gitea/gitea/pull/416)
+  * Commitgraph / timeline on commits page [#428](https://github.com/go-gitea/gitea/pull/428)
+  * API endpoints for repo forks [#509](https://github.com/go-gitea/gitea/pull/509)
+  * API endpoints for releases [#510](https://github.com/go-gitea/gitea/pull/510)
+  * Folder jumping [#511](https://github.com/go-gitea/gitea/pull/511)
+  * Stars tab on profile page [#519](https://github.com/go-gitea/gitea/pull/519)
+  * Notification system [#523](https://github.com/go-gitea/gitea/pull/523)
+  * Push and pull through reverse proxy basic auth [#524](https://github.com/go-gitea/gitea/pull/524)
+  * Search for issues and pull requests [#530](https://github.com/go-gitea/gitea/pull/530)
+  * API endpoint for stargazers [#597](https://github.com/go-gitea/gitea/pull/597)
+  * API endpoints for subscribers [#598](https://github.com/go-gitea/gitea/pull/598)
+  * PID file support [#610](https://github.com/go-gitea/gitea/pull/610)
+  * Two factor authentication (2FA) [#630](https://github.com/go-gitea/gitea/pull/630)
+  * API endpoints for org users [#645](https://github.com/go-gitea/gitea/pull/645)
+  * Release attachments [#673](https://github.com/go-gitea/gitea/pull/673)
+  * OAuth2 consumer [#679](https://github.com/go-gitea/gitea/pull/679)
+  * Add ability to fork your own repos [#761](https://github.com/go-gitea/gitea/pull/761)
+  * Search repository on dashboard [#773](https://github.com/go-gitea/gitea/pull/773)
+  * Search bar on user profile [#787](https://github.com/go-gitea/gitea/pull/787)
+  * Track label changes on issue view [#788](https://github.com/go-gitea/gitea/pull/788)
+  * Allow using custom time format [#798](https://github.com/go-gitea/gitea/pull/798)
+  * Redirects for renamed repos [#807](https://github.com/go-gitea/gitea/pull/807)
+  * Track assignee changes on issue view [#808](https://github.com/go-gitea/gitea/pull/808)
+  * Track title changes on issue view [#841](https://github.com/go-gitea/gitea/pull/841)
+  * Archive cleanup action [#885](https://github.com/go-gitea/gitea/pull/885)
+  * Basic Open Graph support [#901](https://github.com/go-gitea/gitea/pull/901)
+  * Take back control of Git hooks [#1006](https://github.com/go-gitea/gitea/pull/1006)
+  * API endpoints for user repos [#1059](https://github.com/go-gitea/gitea/pull/1059)
+* BUGFIXES
+  * Fixed counting issues for issue filters [#413](https://github.com/go-gitea/gitea/pull/413)
+  * Added back default settings for SSH [#500](https://github.com/go-gitea/gitea/pull/500)
+  * Fixed repo permissions [#513](https://github.com/go-gitea/gitea/pull/513)
+  * Issues cannot be created with labels [#622](https://github.com/go-gitea/gitea/pull/622)
+  * Add a reserved wiki paths check to the wiki [#720](https://github.com/go-gitea/gitea/pull/720)
+  * Update website binding MaxSize to 255 [#722](https://github.com/go-gitea/gitea/pull/722)
+  * User can see the private activity on public history [#818](https://github.com/go-gitea/gitea/pull/818)
+  * Wrong pages number which includes private repositories [#844](https://github.com/go-gitea/gitea/pull/844)
+  * Trim whitespaces for search keyword [#893](https://github.com/go-gitea/gitea/pull/893)
+  * Don't rewrite non-gitea public keys [#906](https://github.com/go-gitea/gitea/pull/906)
+  * Use fingerprint to check instead content for public key [#911](https://github.com/go-gitea/gitea/pull/911)
+  * Fix random avatars [#1147](https://github.com/go-gitea/gitea/pull/1147)
+* ENHANCEMENTS
+  * Refactored process manager [#75](https://github.com/go-gitea/gitea/pull/75)
+  * Restrict rights to create new orgs [#193](https://github.com/go-gitea/gitea/pull/193)
+  * Added label and milestone sorting [#199](https://github.com/go-gitea/gitea/pull/199)
+  * Make minimum password length configurable [#223](https://github.com/go-gitea/gitea/pull/223)
+  * Speedup conflict checking on pull requests [#276](https://github.com/go-gitea/gitea/pull/276)
+  * Added button to delete merged pull request branches [#441](https://github.com/go-gitea/gitea/pull/441)
+  * Improved issue references within markdown [#471](https://github.com/go-gitea/gitea/pull/471)
+  * Dutch translation for the landingpage [#487](https://github.com/go-gitea/gitea/pull/487)
+  * Added Gogs migration script [#532](https://github.com/go-gitea/gitea/pull/532)
+  * Support a .gitea folder for issue templates [#582](https://github.com/go-gitea/gitea/pull/582)
+  * Enhanced diff-view coloring [#584](https://github.com/go-gitea/gitea/pull/584)
+  * Added ETag header to avatars [#721](https://github.com/go-gitea/gitea/pull/721)
+  * Added option to config to disable local path imports [#724](https://github.com/go-gitea/gitea/pull/724)
+  * Allow custom public files [#782](https://github.com/go-gitea/gitea/pull/782)
+  * Added pprof endpoint for debugging [#801](https://github.com/go-gitea/gitea/pull/801)
+  * Added `X-GitHub-*` headers [#809](https://github.com/go-gitea/gitea/pull/809)
+  * Fill SSH key title automatically [#863](https://github.com/go-gitea/gitea/pull/863)
+  * Display Git version on admin panel [#921](https://github.com/go-gitea/gitea/pull/921)
+  * Expose URL field on issue API [#982](https://github.com/go-gitea/gitea/pull/982)
+  * Statically compile the binaries [#985](https://github.com/go-gitea/gitea/pull/985)
+  * Embed build tags into version string [#1051](https://github.com/go-gitea/gitea/pull/1051)
+  * Gitignore support for FSharp and Clojure [#1072](https://github.com/go-gitea/gitea/pull/1072)
+  * Custom templates for static builds [#1087](https://github.com/go-gitea/gitea/pull/1087)
+  * Add ProxyFromEnvironment if none set [#1096](https://github.com/go-gitea/gitea/pull/1096)
+* MISC
+  * Replaced remaining Gogs references
+  * Added more tests on various packages
+  * Use Crowdin for translations again
+  * Resolved some XSS attack vectors
+  * Optimized and reduced number of database queries
+
+## [1.0.2](https://github.com/go-gitea/gitea/releases/tag/v1.0.2) - 2017-02-21
+
+* BUGFIXES
+  * Fixed issue counter [#882](https://github.com/go-gitea/gitea/pull/882)
+  * Fixed XSS vulnerability on wiki page [#955](https://github.com/go-gitea/gitea/pull/955)
+  * Add data dir without session to dump [#587](https://github.com/go-gitea/gitea/pull/587)
+  * Fixed wiki page renaming [#958](https://github.com/go-gitea/gitea/pull/958)
+  * Drop default console logger if not required [#960](https://github.com/go-gitea/gitea/pull/960)
+  * Fixed docker docs link on install page [#972](https://github.com/go-gitea/gitea/pull/972)
+  * Handle SetModel errors [#957](https://github.com/go-gitea/gitea/pull/957)
+  * Fixed XSS vulnerability on milestones [#977](https://github.com/go-gitea/gitea/pull/977)
+  * Fixed XSS vulnerability on alerts [#981](https://github.com/go-gitea/gitea/pull/981)
+
+## [1.0.1](https://github.com/go-gitea/gitea/releases/tag/v1.0.1) - 2017-01-05
+
+* BUGFIXES
+  * Fixed localized `MIN_PASSWORD_LENGTH` [#501](https://github.com/go-gitea/gitea/pull/501)
+  * Fixed 500 error on organization delete [#507](https://github.com/go-gitea/gitea/pull/507)
+  * Ignore empty wiki repo on migrate [#544](https://github.com/go-gitea/gitea/pull/544)
+  * Proper check access for forking [#563](https://github.com/go-gitea/gitea/pull/563)
+  * Fix SSH domain on installer [#506](https://github.com/go-gitea/gitea/pull/506)
+  * Fix missing data rows on admin UI [#580](https://github.com/go-gitea/gitea/pull/580)
+  * Do not delete tags with releases by default [#579](https://github.com/go-gitea/gitea/pull/579)
+  * Fix missing session config data on admin UI [#578](https://github.com/go-gitea/gitea/pull/578)
+  * Properly show the version within footer on the UI [#593](https://github.com/go-gitea/gitea/pull/593)
+
+## [1.0.0](https://github.com/go-gitea/gitea/releases/tag/v1.0.0) - 2016-12-23
+
+* BREAKING
+  * We have various changes on the API, scripting against API must be updated
+* FEATURES
+  * Show last login for admins [#121](https://github.com/go-gitea/gitea/pull/121)
+* BUGFIXES
+  * Fixed sender of notifications [#2](https://github.com/go-gitea/gitea/pull/2)
+  * Fixed keyword hijacking vulnerability [#20](https://github.com/go-gitea/gitea/pull/20)
+  * Fixed non-markdown readme rendering [#95](https://github.com/go-gitea/gitea/pull/95)
+  * Allow updating draft releases [#169](https://github.com/go-gitea/gitea/pull/169)
+  * GitHub API compliance [#227](https://github.com/go-gitea/gitea/pull/227)
+  * Added commit SHA to tag webhook [#286](https://github.com/go-gitea/gitea/issues/286)
+  * Secured links via noopener [#315](https://github.com/go-gitea/gitea/issues/315)
+  * Replace tabs with spaces on wiki title [#371](https://github.com/go-gitea/gitea/pull/371)
+  * Fixed vulnerability on labels and releases [#409](https://github.com/go-gitea/gitea/pull/409)
+  * Fixed issue comment API [#449](https://github.com/go-gitea/gitea/pull/449)
+* ENHANCEMENTS
+  * Use proper import path for libravatar [#3](https://github.com/go-gitea/gitea/pull/3)
+  * Integrated DroneCI for tests and builds [#24](https://github.com/go-gitea/gitea/issues/24)
+  * Integrated dependency manager [#29](https://github.com/go-gitea/gitea/issues/29)
+  * Embedded bindata optionally [#30](https://github.com/go-gitea/gitea/issues/30)
+  * Integrated pagination for releases [#73](https://github.com/go-gitea/gitea/pull/73)
+  * Autogenerate version on every build [#91](https://github.com/go-gitea/gitea/issues/91)
+  * Refactored Docker container [#104](https://github.com/go-gitea/gitea/issues/104)
+  * Added short-hash support for downloads [#211](https://github.com/go-gitea/gitea/issues/211)
+  * Display tooltip for downloads [#221](https://github.com/go-gitea/gitea/issues/221)
+  * Improved HTTP headers for issue attachments [#270](https://github.com/go-gitea/gitea/pull/270)
+  * Integrate public as bindata optionally [#293](https://github.com/go-gitea/gitea/pull/293)
+  * Integrate templates as bindata optionally [#314](https://github.com/go-gitea/gitea/pull/314)
+  * Inject more ENV variables into custom hooks [#316](https://github.com/go-gitea/gitea/issues/316)
+  * Correct LDAP login validation [#342](https://github.com/go-gitea/gitea/pull/342)
+  * Integrate conf as bindata optionally [#354](https://github.com/go-gitea/gitea/pull/354)
+  * Serve video files in browser [#418](https://github.com/go-gitea/gitea/pull/418)
+  * Configurable SSH host binding [#431](https://github.com/go-gitea/gitea/issues/431)
+* MISC
+  * Forked from Gogs and renamed to Gitea
+  * Catching more errors with logs
+  * Fixed all linting errors
+  * Made the go linter entirely happy
+  * Really integrated vendoring
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 11c99d1e3a..5cd83a4898 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -8,7 +8,6 @@
     - [How to report issues](#how-to-report-issues)
     - [Types of issues](#types-of-issues)
     - [Discuss your design before the implementation](#discuss-your-design-before-the-implementation)
-    - [Issue locking](#issue-locking)
   - [Building Gitea](#building-gitea)
   - [Dependencies](#dependencies)
     - [Backend](#backend)
@@ -48,7 +47,6 @@
   - [Release Cycle](#release-cycle)
   - [Maintainers](#maintainers)
   - [Technical Oversight Committee (TOC)](#technical-oversight-committee-toc)
-    - [TOC election process](#toc-election-process)
     - [Current TOC members](#current-toc-members)
     - [Previous TOC/owners members](#previous-tocowners-members)
   - [Governance Compensation](#governance-compensation)
@@ -77,7 +75,7 @@ If your issue has not been reported yet, [open an issue](https://github.com/go-g
 and answer the questions so we can understand and reproduce the problematic behavior. \
 Please write clear and concise instructions so that we can reproduce the behavior — even if it seems obvious. \
 The more detailed and specific you are, the faster we can fix the issue. \
-It is really helpful if you can reproduce your problem on a site running on the latest commits, i.e. , as perhaps your problem has already been fixed on a current version. \
+It is really helpful if you can reproduce your problem on a site running on the latest commits, i.e. , as perhaps your problem has already been fixed on a current version. \
 Please follow the guidelines described in [How to Report Bugs Effectively](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html) for your report.
 
 Please be kind, remember that Gitea comes at no cost to you, and you're getting free help.
@@ -104,13 +102,6 @@ the goals for the project and tools.
 
 Pull requests should not be the place for architecture discussions.
 
-### Issue locking
-
-Commenting on closed or merged issues/PRs is strongly discouraged.
-Such comments will likely be overlooked as some maintainers may not view notifications on closed issues, thinking that the item is resolved.
-As such, commenting on closed/merged issues/PRs may be disabled prior to the scheduled auto-locking if a discussion starts or if unrelated comments are posted.
-If further discussion is needed, we encourage you to open a new issue instead and we recommend linking to the issue/PR in question for context.
-
 ## Building Gitea
 
 See the [development setup instructions](https://docs.gitea.com/development/hacking-on-gitea).
@@ -119,7 +110,7 @@ See the [development setup instructions](https://docs.gitea.com/development/hack
 
 ### Backend
 
-Go dependencies are managed using [Go Modules](https://go.dev/cmd/go/#hdr-Module_maintenance). \
+Go dependencies are managed using [Go Modules](https://golang.org/cmd/go/#hdr-Module_maintenance). \
 You can find more details in the [go mod documentation](https://go.dev/ref/mod) and the [Go Modules Wiki](https://github.com/golang/go/wiki/Modules).
 
 Pull requests should only modify `go.mod` and `go.sum` where it is related to your change, be it a bugfix or a new feature. \
@@ -176,13 +167,13 @@ Here's how to run the test suite:
 
 |  Command                               | Action                                           |              |
 | :------------------------------------- | :----------------------------------------------- | ------------ |
-|``make test[\#SpecificTestName]``       |  run unit test(s)  | |
+|``make test[\#SpecificTestName]``       |  run unit test(s)  |
 |``make test-sqlite[\#SpecificTestName]``|  run [integration](tests/integration) test(s) for SQLite |[More details](tests/integration/README.md)  |
 |``make test-e2e-sqlite[\#SpecificTestName]``|  run [end-to-end](tests/e2e) test(s) for SQLite |[More details](tests/e2e/README.md)  |
 
 ## Translation
 
-All translation work happens on [Crowdin](https://translate.gitea.com).
+All translation work happens on [Crowdin](https://crowdin.com/project/gitea).
 The only translation that is maintained in this repository is [the English translation](https://github.com/go-gitea/gitea/blob/main/options/locale/locale_en-US.ini).
 It is synced regularly with Crowdin. \
 Other locales on main branch **should not** be updated manually as they will be overwritten with each sync. \
@@ -212,20 +203,10 @@ Some of the key points:
 
 In the PR title, describe the problem you are fixing, not how you are fixing it. \
 Use the first comment as a summary of your PR. \
-In the PR summary, you can describe exactly how you are fixing this problem.
-
+In the PR summary, you can describe exactly how you are fixing this problem. \
 Keep this summary up-to-date as the PR evolves. \
 If your PR changes the UI, you must add **after** screenshots in the PR summary. \
-If you are not implementing a new feature, you should also post **before** screenshots for comparison.
-
-If you are implementing a new feature, your PR will only be merged if your screenshots are up to date.\
-Furthermore, feature PRs will only be merged if their summary contains a clear usage description (understandable for users) and testing description (understandable for reviewers).
-You should strive to combine both into a single description.
-
-Another requirement for merging PRs is that the PR is labeled correctly.\
-However, this is not your job as a contributor, but the job of the person merging your PR.\
-If you think that your PR was labeled incorrectly, or notice that it was merged without labels, please let us know.
-
+If you are not implementing a new feature, you should also post **before** screenshots for comparison. \
 If your PR closes some issues, you must note that in a way that both GitHub and Gitea understand, i.e. by appending a paragraph like
 
 ```text
@@ -244,20 +225,17 @@ PRs without a milestone may not be merged.
 
 ### Labels
 
-Almost all labels used inside Gitea can be classified as one of the following:
-
-- `modifies/…`: Determines which parts of the codebase are affected. These labels will be set through the CI.
-- `topic/…`:  Determines the conceptual component of Gitea that is affected, i.e. issues, projects, or authentication. At best, PRs should only target one component but there might be overlap. Must be set manually.
-- `type/…`: Determines the type of an issue or PR (feature, refactoring, docs, bug, …). If GitHub supported scoped labels, these labels would be exclusive, so you should set **exactly** one, not more or less (every PR should fall into one of the provided categories, and only one).
-- `issue/…` / `pr/…`: Labels that are specific to issues or PRs respectively and that are only necessary in a given context, i.e. `issue/not-a-bug` or `pr/need-2-approvals`
-
-Every PR should be labeled correctly with every label that applies.
-
-There are also some labels that will be managed automatically.\
-In particular, these are
+Every PR should be labeled correctly with every label that applies. \
+This includes especially the distinction between `bug` (fixing existing functionality), `feature` (new functionality), `enhancement` (upgrades for existing functionality), and `refactoring` (improving the internal code structure without changing the output (much)). \
+Furthermore,
 
 - the amount of pending required approvals
-- has all `backport`s or needs a manual backport
+- whether this PR is `blocked`, a `backport` or `breaking`
+- if it targets the `ui` or `api`
+- if it increases the application `speed`
+- reduces `memory usage`
+
+are oftentimes notable labels.
 
 ### Breaking PRs
 
@@ -274,16 +252,13 @@ Changing the default value of a setting or replacing the setting with another on
 
 #### How to handle breaking PRs?
 
-If your PR has a breaking change, you must add two things to the summary of your PR:
+If your PR has a breaking change, you must add a `BREAKING` section to your PR summary, e.g.
 
-1. A reasoning why this breaking change is necessary
-2. A `BREAKING` section explaining in simple terms (understandable for a typical user) how this PR affects users and how to mitigate these changes. This section can look for example like
-
-```md
+```
 ## :warning: BREAKING :warning:
 ```
 
-Breaking PRs will not be merged as long as not both of these requirements are met.
+To explain how this will affect users and how to mitigate these changes.
 
 ### Maintaining open PRs
 
@@ -358,12 +333,11 @@ $REWRITTEN_PR_SUMMARY
 
 ## Documentation
 
-If you add a new feature or change an existing aspect of Gitea, the documentation for that feature must be created or updated in another PR at [https://gitea.com/gitea/docs](https://gitea.com/gitea/docs).
-**The docs directory on main repository will be removed at some time. We will have a yaml file to store configuration file's meta data. After that completed, configuration documentation should be in the main repository.**
+If you add a new feature or change an existing aspect of Gitea, the documentation for that feature must be created or updated in the same PR.
 
 ## API v1
 
-The API is documented by [swagger](https://gitea.com/api/swagger) and is based on [the GitHub API](https://docs.github.com/en/rest).
+The API is documented by [swagger](http://try.gitea.io/api/swagger) and is based on [the GitHub API](https://docs.github.com/en/rest).
 
 ### GitHub API compatibility
 
@@ -465,7 +439,7 @@ We assume in good faith that the information you provide is legally binding.
 We adopted a release schedule to streamline the process of working on, finishing, and issuing releases. \
 The overall goal is to make a major release every three or four months, which breaks down into two or three months of general development followed by one month of testing and polishing known as the release freeze. \
 All the feature pull requests should be
-merged before feature freeze. All feature pull requests haven't been merged before this feature freeze will be moved to next milestone, please notice our feature freeze announcement on discord. And, during the frozen period, a corresponding
+merged before feature freeze. And, during the frozen period, a corresponding
 release branch is open for fixes backported from main branch. Release candidates
 are made during this period for user testing to
 obtain a final version that is maintained in this branch.
@@ -496,53 +470,36 @@ if possible provide GPG signed commits.
 https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/
 https://help.github.com/articles/signing-commits-with-gpg/
 
-Furthermore, any account with write access (like bots and TOC members) **must** use 2FA.
-https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/
-
 ## Technical Oversight Committee (TOC)
 
-At the start of 2023, the `Owners` team was dissolved. Instead, the governance charter proposed a technical oversight committee (TOC) which expands the ownership team of the Gitea project from three elected positions to six positions. Three positions are elected as it has been over the past years, and the other three consist of appointed members from the Gitea company.
+At the start of 2023, the `Owners` team was dissolved. Instead, the governance charter proposed a technical oversight committee (TOC) which expands the ownership team of the Gitea project from three elected positions to six positions. Three positions would be elected as it has been over the past years, and the other three would consist of appointed members from the Gitea company.
 https://blog.gitea.com/quarterly-23q1/
 
-### TOC election process
-
-Any maintainer is eligible to be part of the community TOC if they are not associated with the Gitea company.
-A maintainer can either nominate themselves, or can be nominated by other maintainers to be a candidate for the TOC election.
-If you are nominated by someone else, you must first accept your nomination before the vote starts to be a candidate.
-
-The TOC is elected for one year, the TOC election happens yearly.
-After the announcement of the results of the TOC election, elected members have two weeks time to confirm or refuse the seat.
-If an elected member does not answer within this timeframe, they are automatically assumed to refuse the seat.
-Refusals result in the person with the next highest vote getting the same choice.
-As long as seats are empty in the TOC, members of the previous TOC can fill them until an elected member accepts the seat.
-
-If an elected member that accepts the seat does not have 2FA configured yet, they will be temporarily counted as `answer pending` until they manage to configure 2FA, thus leaving their seat empty for this duration.
+When the new community members have been elected, the old members will give up ownership to the newly elected members. For security reasons, TOC members or any account with write access (like a bot) must use 2FA.
+https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/
 
 ### Current TOC members
 
-- 2024-01-01 ~ 2024-12-31
+- 2023-01-01 ~ 2023-12-31 - https://blog.gitea.com/quarterly-23q1/
   - Company
     - [Jason Song](https://gitea.com/wolfogre) 
     - [Lunny Xiao](https://gitea.com/lunny) 
-    - [Matti Ranta](https://gitea.com/techknowlogick) 
+    - [Matti Ranta](https://gitea.com/techknowlogick) 
   - Community
     - [6543](https://gitea.com/6543) <6543@obermui.de>
-    - [delvh](https://gitea.com/delvh) 
+    - [Andrew Thornton](https://gitea.com/zeripath) 
     - [John Olheiser](https://gitea.com/jolheiser) 
 
 ### Previous TOC/owners members
 
 Here's the history of the owners and the time they served:
 
-- [Lunny Xiao](https://gitea.com/lunny) - 2016, 2017, [2018](https://github.com/go-gitea/gitea/issues/3255), [2019](https://github.com/go-gitea/gitea/issues/5572), [2020](https://github.com/go-gitea/gitea/issues/9230), [2021](https://github.com/go-gitea/gitea/issues/13801), [2022](https://github.com/go-gitea/gitea/issues/17872), 2023
+- [Lunny Xiao](https://gitea.com/lunny) - 2016, 2017, [2018](https://github.com/go-gitea/gitea/issues/3255), [2019](https://github.com/go-gitea/gitea/issues/5572), [2020](https://github.com/go-gitea/gitea/issues/9230), [2021](https://github.com/go-gitea/gitea/issues/13801), [2022](https://github.com/go-gitea/gitea/issues/17872)
 - [Kim Carlbäcker](https://github.com/bkcsoft) - 2016, 2017
 - [Thomas Boerger](https://gitea.com/tboerger) - 2016, 2017
 - [Lauris Bukšis-Haberkorns](https://gitea.com/lafriks) - [2018](https://github.com/go-gitea/gitea/issues/3255), [2019](https://github.com/go-gitea/gitea/issues/5572), [2020](https://github.com/go-gitea/gitea/issues/9230), [2021](https://github.com/go-gitea/gitea/issues/13801)
-- [Matti Ranta](https://gitea.com/techknowlogick) - [2019](https://github.com/go-gitea/gitea/issues/5572), [2020](https://github.com/go-gitea/gitea/issues/9230), [2021](https://github.com/go-gitea/gitea/issues/13801), [2022](https://github.com/go-gitea/gitea/issues/17872), 2023
-- [Andrew Thornton](https://gitea.com/zeripath) - [2020](https://github.com/go-gitea/gitea/issues/9230), [2021](https://github.com/go-gitea/gitea/issues/13801), [2022](https://github.com/go-gitea/gitea/issues/17872), 2023
-- [6543](https://gitea.com/6543) - 2023
-- [John Olheiser](https://gitea.com/jolheiser) - 2023
-- [Jason Song](https://gitea.com/wolfogre) - 2023
+- [Matti Ranta](https://gitea.com/techknowlogick) - [2019](https://github.com/go-gitea/gitea/issues/5572), [2020](https://github.com/go-gitea/gitea/issues/9230), [2021](https://github.com/go-gitea/gitea/issues/13801), [2022](https://github.com/go-gitea/gitea/issues/17872)
+- [Andrew Thornton](https://gitea.com/zeripath) - [2020](https://github.com/go-gitea/gitea/issues/9230), [2021](https://github.com/go-gitea/gitea/issues/13801), [2022](https://github.com/go-gitea/gitea/issues/17872)
 
 ## Governance Compensation
 
diff --git a/Dockerfile b/Dockerfile
index c9e6a2d3db..5fe8df9126 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,12 +1,12 @@
 # Build stage
-FROM docker.io/library/golang:1.24-alpine3.22 AS build-env
+FROM docker.io/library/golang:1.21-alpine3.18 AS build-env
 
 ARG GOPROXY
-ENV GOPROXY=${GOPROXY:-direct}
+ENV GOPROXY ${GOPROXY:-direct}
 
 ARG GITEA_VERSION
 ARG TAGS="sqlite sqlite_unlock_notify"
-ENV TAGS="bindata timetzdata $TAGS"
+ENV TAGS "bindata timetzdata $TAGS"
 ARG CGO_EXTRA_CFLAGS
 
 # Build deps
@@ -41,7 +41,7 @@ RUN chmod 755 /tmp/local/usr/bin/entrypoint \
               /go/src/code.gitea.io/gitea/environment-to-ini
 RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
 
-FROM docker.io/library/alpine:3.22
+FROM docker.io/library/alpine:3.18
 LABEL maintainer="maintainers@gitea.io"
 
 EXPOSE 22 3000
@@ -72,13 +72,13 @@ RUN addgroup \
     git && \
   echo "git:*" | chpasswd -e
 
-ENV USER=git
-ENV GITEA_CUSTOM=/data/gitea
+ENV USER git
+ENV GITEA_CUSTOM /data/gitea
 
 VOLUME ["/data"]
 
 ENTRYPOINT ["/usr/bin/entrypoint"]
-CMD ["/usr/bin/s6-svscan", "/etc/s6"]
+CMD ["/bin/s6-svscan", "/etc/s6"]
 
 COPY --from=build-env /tmp/local /
 COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
diff --git a/Dockerfile.rootless b/Dockerfile.rootless
index 558e6cf73b..5ea4d2fc75 100644
--- a/Dockerfile.rootless
+++ b/Dockerfile.rootless
@@ -1,12 +1,12 @@
 # Build stage
-FROM docker.io/library/golang:1.24-alpine3.22 AS build-env
+FROM docker.io/library/golang:1.21-alpine3.18 AS build-env
 
 ARG GOPROXY
-ENV GOPROXY=${GOPROXY:-direct}
+ENV GOPROXY ${GOPROXY:-direct}
 
 ARG GITEA_VERSION
 ARG TAGS="sqlite sqlite_unlock_notify"
-ENV TAGS="bindata timetzdata $TAGS"
+ENV TAGS "bindata timetzdata $TAGS"
 ARG CGO_EXTRA_CFLAGS
 
 #Build deps
@@ -39,7 +39,7 @@ RUN chmod 755 /tmp/local/usr/local/bin/docker-entrypoint.sh \
               /go/src/code.gitea.io/gitea/environment-to-ini
 RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
 
-FROM docker.io/library/alpine:3.22
+FROM docker.io/library/alpine:3.18
 LABEL maintainer="maintainers@gitea.io"
 
 EXPOSE 2222 3000
@@ -52,7 +52,6 @@ RUN apk --no-cache add \
     git \
     curl \
     gnupg \
-    openssh-keygen \
     && rm -rf /var/cache/apk/*
 
 RUN addgroup \
@@ -76,14 +75,14 @@ COPY --from=build-env /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_au
 
 # git:git
 USER 1000:1000
-ENV GITEA_WORK_DIR=/var/lib/gitea
-ENV GITEA_CUSTOM=/var/lib/gitea/custom
-ENV GITEA_TEMP=/tmp/gitea
-ENV TMPDIR=/tmp/gitea
+ENV GITEA_WORK_DIR /var/lib/gitea
+ENV GITEA_CUSTOM /var/lib/gitea/custom
+ENV GITEA_TEMP /tmp/gitea
+ENV TMPDIR /tmp/gitea
 
 # TODO add to docs the ability to define the ini to load (useful to test and revert a config)
-ENV GITEA_APP_INI=/etc/gitea/app.ini
-ENV HOME="/var/lib/gitea/git"
+ENV GITEA_APP_INI /etc/gitea/app.ini
+ENV HOME "/var/lib/gitea/git"
 VOLUME ["/var/lib/gitea", "/etc/gitea"]
 WORKDIR /var/lib/gitea
 
diff --git a/MAINTAINERS b/MAINTAINERS
index 7643ab000f..5f38c28beb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -31,6 +31,7 @@ Gary Kim  (@gary-kim)
 Guillermo Prandi  (@guillep2k)
 Mura Li  (@typeless)
 6543 <6543@obermui.de> (@6543)
+jaqra  (@jaqra)
 David Svantesson  (@davidsvantesson)
 a1012112796 <1012112796@qq.com> (@a1012112796)
 Karl Heinz Marbaise  (@khmarbaise)
@@ -45,6 +46,7 @@ Wim  (@42wim)
 Jason Song  (@wolfogre)
 Yarden Shoham  (@yardenshoham)
 Yu Tian  (@Zettat123)
+Eddie Yang <576951401@qq.com> (@yp05327)
 Dong Ge  (@sillyguodong)
 Xinyi Gong  (@HesterG)
 wxiaoguang  (@wxiaoguang)
@@ -55,13 +57,3 @@ Punit Inani  (@puni9869)
 CaiCandong  <1290147055@qq.com> (@caicandong)
 Rui Chen   (@chenrui333)
 Nanguan Lin  (@lng2020)
-kerwin612  (@kerwin612)
-Gary Wang  (@BLumia)
-Tim-Niclas Oelschläger  (@zokkis)
-Yu Liu <1240335630@qq.com> (@HEREYUA)
-Kemal Zebari  (@kemzeb)
-Rowan Bohde  (@bohde)
-hiifong  (@hiifong)
-metiftikci  (@metiftikci)
-Christopher Homberger  (@ChristopherHX)
-Tobias Balle-Petersen  (@tobiasbp)
diff --git a/Makefile b/Makefile
index 6a3fa60e49..ece95d2ad4 100644
--- a/Makefile
+++ b/Makefile
@@ -23,39 +23,36 @@ SHASUM ?= shasum -a 256
 HAS_GO := $(shell hash $(GO) > /dev/null 2>&1 && echo yes)
 COMMA := ,
 
-XGO_VERSION := go-1.24.x
+XGO_VERSION := go-1.21.x
 
-AIR_PACKAGE ?= github.com/air-verse/air@v1
-EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker@v3
-GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.8.0
-GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.1.6
-GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.12
-MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.7.0
-SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.32.3
+AIR_PACKAGE ?= github.com/cosmtrek/air@v1.44.0
+EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker@2.7.0
+GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.5.0
+GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.1
+GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11
+MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.4.1
+SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5
 XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest
-GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1
-GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1
-ACTIONLINT_PACKAGE ?= github.com/rhysd/actionlint/cmd/actionlint@v1
-GOPLS_PACKAGE ?= golang.org/x/tools/gopls@v0.19.1
-GOPLS_MODERNIZE_PACKAGE ?= golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@v0.19.1
+GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1.6.0
+GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1.0.1
+ACTIONLINT_PACKAGE ?= github.com/rhysd/actionlint/cmd/actionlint@v1.6.25
 
 DOCKER_IMAGE ?= gitea/gitea
 DOCKER_TAG ?= latest
 DOCKER_REF := $(DOCKER_IMAGE):$(DOCKER_TAG)
 
 ifeq ($(HAS_GO), yes)
+	GOPATH ?= $(shell $(GO) env GOPATH)
+	export PATH := $(GOPATH)/bin:$(PATH)
+
 	CGO_EXTRA_CFLAGS := -DSQLITE_MAX_VARIABLE_NUMBER=32766
 	CGO_CFLAGS ?= $(shell $(GO) env CGO_CFLAGS) $(CGO_EXTRA_CFLAGS)
 endif
 
-ifeq ($(GOOS),windows)
-	IS_WINDOWS := yes
-else ifeq ($(patsubst Windows%,Windows,$(OS)),Windows)
-	ifeq ($(GOOS),)
-		IS_WINDOWS := yes
-	endif
-endif
-ifeq ($(IS_WINDOWS),yes)
+ifeq ($(OS), Windows_NT)
+	GOFLAGS := -v -buildmode=exe
+	EXECUTABLE ?= gitea.exe
+else ifeq ($(OS), Windows)
 	GOFLAGS := -v -buildmode=exe
 	EXECUTABLE ?= gitea.exe
 else
@@ -74,13 +71,13 @@ EXTRA_GOFLAGS ?=
 MAKE_VERSION := $(shell "$(MAKE)" -v | cat | head -n 1)
 MAKE_EVIDENCE_DIR := .make_evidence
 
-GOTESTFLAGS ?=
 ifeq ($(RACE_ENABLED),true)
 	GOFLAGS += -race
 	GOTESTFLAGS += -race
 endif
 
 STORED_VERSION_FILE := VERSION
+HUGO_VERSION ?= 0.111.3
 
 GITHUB_REF_TYPE ?= branch
 GITHUB_REF_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)
@@ -90,7 +87,7 @@ ifneq ($(GITHUB_REF_TYPE),branch)
 	GITEA_VERSION ?= $(VERSION)
 else
 	ifneq ($(GITHUB_REF_NAME),)
-		VERSION ?= $(subst release/v,,$(GITHUB_REF_NAME))-nightly
+		VERSION ?= $(subst release/v,,$(GITHUB_REF_NAME))
 	else
 		VERSION ?= main
 	endif
@@ -110,17 +107,21 @@ endif
 
 LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
 
-LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64,linux/riscv64
+LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64
 
+GO_PACKAGES ?= $(filter-out code.gitea.io/gitea/tests/integration/migration-test code.gitea.io/gitea/tests code.gitea.io/gitea/tests/integration code.gitea.io/gitea/tests/e2e,$(shell $(GO) list ./... | grep -v /vendor/))
 GO_TEST_PACKAGES ?= $(filter-out $(shell $(GO) list code.gitea.io/gitea/models/migrations/...) code.gitea.io/gitea/tests/integration/migration-test code.gitea.io/gitea/tests code.gitea.io/gitea/tests/integration code.gitea.io/gitea/tests/e2e,$(shell $(GO) list ./... | grep -v /vendor/))
 MIGRATE_TEST_PACKAGES ?= $(shell $(GO) list code.gitea.io/gitea/models/migrations/...)
 
-WEBPACK_SOURCES := $(shell find web_src/js web_src/css -type f)
-WEBPACK_CONFIGS := webpack.config.js tailwind.config.js
-WEBPACK_DEST := public/assets/js/index.js public/assets/css/index.css
-WEBPACK_DEST_ENTRIES := public/assets/js public/assets/css public/assets/fonts
+FOMANTIC_WORK_DIR := web_src/fomantic
 
-BINDATA_DEST_WILDCARD := modules/migration/bindata.* modules/public/bindata.* modules/options/bindata.* modules/templates/bindata.*
+WEBPACK_SOURCES := $(shell find web_src/js web_src/css -type f)
+WEBPACK_CONFIGS := webpack.config.js
+WEBPACK_DEST := public/assets/js/index.js public/assets/css/index.css
+WEBPACK_DEST_ENTRIES := public/assets/js public/assets/css public/assets/fonts public/assets/img/webpack
+
+BINDATA_DEST := modules/public/bindata.go modules/options/bindata.go modules/templates/bindata.go
+BINDATA_HASH := $(addsuffix .hash,$(BINDATA_DEST))
 
 GENERATED_GO_DEST := modules/charset/invisible_gen.go modules/charset/ambiguous_gen.go
 
@@ -135,21 +136,24 @@ TAGS ?=
 TAGS_SPLIT := $(subst $(COMMA), ,$(TAGS))
 TAGS_EVIDENCE := $(MAKE_EVIDENCE_DIR)/tags
 
-TEST_TAGS ?= $(TAGS_SPLIT) sqlite sqlite_unlock_notify
+TEST_TAGS ?= sqlite sqlite_unlock_notify
 
-TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(DIST) $(MAKE_EVIDENCE_DIR) $(AIR_TMP_DIR) $(GO_LICENSE_TMP_DIR)
+TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(FOMANTIC_WORK_DIR)/node_modules $(DIST) $(MAKE_EVIDENCE_DIR) $(AIR_TMP_DIR) $(GO_LICENSE_TMP_DIR)
 
 GO_DIRS := build cmd models modules routers services tests
 WEB_DIRS := web_src/js web_src/css
 
-ESLINT_FILES := web_src/js tools *.js *.ts *.cjs tests/e2e
-STYLELINT_FILES := web_src/css web_src/js/components/*.vue
-SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) templates options/locale/locale_en-US.ini .github $(filter-out CHANGELOG.md, $(wildcard *.go *.js *.md *.yml *.yaml *.toml)) $(filter-out tools/misspellings.csv, $(wildcard tools/*))
-EDITORCONFIG_FILES := templates .github/workflows options/locale/locale_en-US.ini
+SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github
 
 GO_SOURCES := $(wildcard *.go)
-GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go")
+GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" ! -path modules/options/bindata.go ! -path modules/public/bindata.go ! -path modules/templates/bindata.go)
 GO_SOURCES += $(GENERATED_GO_DEST)
+GO_SOURCES_NO_BINDATA := $(GO_SOURCES)
+
+ifeq ($(filter $(TAGS_SPLIT),bindata),bindata)
+	GO_SOURCES += $(BINDATA_DEST)
+	GENERATED_GO_DEST += $(BINDATA_DEST)
+endif
 
 # Force installation of playwright dependencies by setting this flag
 ifdef DEPS_PLAYWRIGHT
@@ -157,19 +161,24 @@ ifdef DEPS_PLAYWRIGHT
 endif
 
 SWAGGER_SPEC := templates/swagger/v1_json.tmpl
-SWAGGER_SPEC_INPUT := templates/swagger/v1_input.json
+SWAGGER_SPEC_S_TMPL := s|"basePath": *"/api/v1"|"basePath": "{{AppSubUrl \| JSEscape \| Safe}}/api/v1"|g
+SWAGGER_SPEC_S_JSON := s|"basePath": *"{{AppSubUrl \| JSEscape \| Safe}}/api/v1"|"basePath": "/api/v1"|g
 SWAGGER_EXCLUDE := code.gitea.io/sdk
+SWAGGER_NEWLINE_COMMAND := -e '$$a\'
 
 TEST_MYSQL_HOST ?= mysql:3306
 TEST_MYSQL_DBNAME ?= testgitea
 TEST_MYSQL_USERNAME ?= root
 TEST_MYSQL_PASSWORD ?=
+TEST_MYSQL8_HOST ?= mysql8:3306
+TEST_MYSQL8_DBNAME ?= testgitea
+TEST_MYSQL8_USERNAME ?= root
+TEST_MYSQL8_PASSWORD ?=
 TEST_PGSQL_HOST ?= pgsql:5432
 TEST_PGSQL_DBNAME ?= testgitea
 TEST_PGSQL_USERNAME ?= postgres
 TEST_PGSQL_PASSWORD ?= postgres
 TEST_PGSQL_SCHEMA ?= gtestschema
-TEST_MINIO_ENDPOINT ?= minio:9000
 TEST_MSSQL_HOST ?= mssql:1433
 TEST_MSSQL_DBNAME ?= gitea
 TEST_MSSQL_USERNAME ?= sa
@@ -179,11 +188,66 @@ TEST_MSSQL_PASSWORD ?= MwantsaSecurePassword1
 all: build
 
 .PHONY: help
-help: Makefile ## print Makefile help information.
-	@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n  make \033[36m[TARGETS] default target: build\033[0m\n\n\033[35mTargets:\033[0m\n"} /^[0-9A-Za-z._-]+:.*?##/ { printf "  \033[36m%-45s\033[0m %s\n", $$1, $$2 }' Makefile #$(MAKEFILE_LIST)
-	@printf "  \033[36m%-46s\033[0m %s\n" "test-e2e[#TestSpecificName]" "test end to end using playwright"
-	@printf "  \033[36m%-46s\033[0m %s\n" "test[#TestSpecificName]" "run unit test"
-	@printf "  \033[36m%-46s\033[0m %s\n" "test-sqlite[#TestSpecificName]" "run integration test for sqlite"
+help:
+	@echo "Make Routines:"
+	@echo " - \"\"                               equivalent to \"build\""
+	@echo " - build                            build everything"
+	@echo " - frontend                         build frontend files"
+	@echo " - backend                          build backend files"
+	@echo " - watch                            watch everything and continuously rebuild"
+	@echo " - watch-frontend                   watch frontend files and continuously rebuild"
+	@echo " - watch-backend                    watch backend files and continuously rebuild"
+	@echo " - clean                            delete backend and integration files"
+	@echo " - clean-all                        delete backend, frontend and integration files"
+	@echo " - deps                             install dependencies"
+	@echo " - deps-frontend                    install frontend dependencies"
+	@echo " - deps-backend                     install backend dependencies"
+	@echo " - deps-tools                       install tool dependencies"
+	@echo " - deps-py                          install python dependencies"
+	@echo " - lint                             lint everything"
+	@echo " - lint-fix                         lint everything and fix issues"
+	@echo " - lint-actions                     lint action workflow files"
+	@echo " - lint-frontend                    lint frontend files"
+	@echo " - lint-frontend-fix                lint frontend files and fix issues"
+	@echo " - lint-backend                     lint backend files"
+	@echo " - lint-backend-fix                 lint backend files and fix issues"
+	@echo " - lint-go                          lint go files"
+	@echo " - lint-go-fix                      lint go files and fix issues"
+	@echo " - lint-go-vet                      lint go files with vet"
+	@echo " - lint-js                          lint js files"
+	@echo " - lint-js-fix                      lint js files and fix issues"
+	@echo " - lint-css                         lint css files"
+	@echo " - lint-css-fix                     lint css files and fix issues"
+	@echo " - lint-md                          lint markdown files"
+	@echo " - lint-swagger                     lint swagger files"
+	@echo " - lint-templates                   lint template files"
+	@echo " - lint-yaml                        lint yaml files"
+	@echo " - lint-spell                       lint spelling"
+	@echo " - lint-spell-fix                   lint spelling and fix issues"
+	@echo " - checks                           run various consistency checks"
+	@echo " - checks-frontend                  check frontend files"
+	@echo " - checks-backend                   check backend files"
+	@echo " - test                             test everything"
+	@echo " - test-frontend                    test frontend files"
+	@echo " - test-backend                     test backend files"
+	@echo " - test-e2e[\#TestSpecificName]     test end to end using playwright"
+	@echo " - update                           update js and py dependencies"
+	@echo " - update-js                        update js dependencies"
+	@echo " - update-py                        update py dependencies"
+	@echo " - webpack                          build webpack files"
+	@echo " - svg                              build svg files"
+	@echo " - fomantic                         build fomantic files"
+	@echo " - generate                         run \"go generate\""
+	@echo " - fmt                              format the Go code"
+	@echo " - generate-license                 update license files"
+	@echo " - generate-gitignore               update gitignore files"
+	@echo " - generate-manpage                 generate manpage"
+	@echo " - generate-swagger                 generate the swagger spec from code comments"
+	@echo " - swagger-validate                 check if the swagger spec is valid"
+	@echo " - go-licenses                      regenerate go licenses"
+	@echo " - tidy                             run go mod tidy"
+	@echo " - test[\#TestSpecificName]    	    run unit test"
+	@echo " - test-sqlite[\#TestSpecificName]  run integration test for sqlite"
 
 .PHONY: go-check
 go-check:
@@ -214,24 +278,25 @@ node-check:
 	fi
 
 .PHONY: clean-all
-clean-all: clean ## delete backend, frontend and integration files
+clean-all: clean
 	rm -rf $(WEBPACK_DEST_ENTRIES) node_modules
 
 .PHONY: clean
-clean: ## delete backend and integration files
-	rm -rf $(EXECUTABLE) $(DIST) $(BINDATA_DEST_WILDCARD) \
+clean:
+	$(GO) clean -i ./...
+	rm -rf $(EXECUTABLE) $(DIST) $(BINDATA_DEST) $(BINDATA_HASH) \
 		integrations*.test \
 		e2e*.test \
-		tests/integration/gitea-integration-* \
-		tests/integration/indexers-* \
-		tests/mysql.ini tests/pgsql.ini tests/mssql.ini man/ \
-		tests/e2e/gitea-e2e-*/ \
-		tests/e2e/indexers-*/ \
-		tests/e2e/reports/ tests/e2e/test-artifacts/ tests/e2e/test-snapshots/
+		tests/integration/gitea-integration-pgsql/ tests/integration/gitea-integration-mysql/ tests/integration/gitea-integration-mysql8/ tests/integration/gitea-integration-sqlite/ \
+		tests/integration/gitea-integration-mssql/ tests/integration/indexers-mysql/ tests/integration/indexers-mysql8/ tests/integration/indexers-pgsql tests/integration/indexers-sqlite \
+		tests/integration/indexers-mssql tests/mysql.ini tests/mysql8.ini tests/pgsql.ini tests/mssql.ini man/ \
+		tests/e2e/gitea-e2e-pgsql/ tests/e2e/gitea-e2e-mysql/ tests/e2e/gitea-e2e-mysql8/ tests/e2e/gitea-e2e-sqlite/ \
+		tests/e2e/gitea-e2e-mssql/ tests/e2e/indexers-mysql/ tests/e2e/indexers-mysql8/ tests/e2e/indexers-pgsql/ tests/e2e/indexers-sqlite/ \
+		tests/e2e/indexers-mssql/ tests/e2e/reports/ tests/e2e/test-artifacts/ tests/e2e/test-snapshots/
 
 .PHONY: fmt
-fmt: ## format the Go and template code
-	@GOFUMPT_PACKAGE=$(GOFUMPT_PACKAGE) $(GO) run build/code-batch-process.go gitea-fmt -w '{file-list}'
+fmt:
+	GOFUMPT_PACKAGE=$(GOFUMPT_PACKAGE) $(GO) run build/code-batch-process.go gitea-fmt -w '{file-list}'
 	$(eval TEMPLATES := $(shell find templates -type f -name '*.tmpl'))
 	@# strip whitespace after '{{' or '(' and before '}}' or ')' unless there is only
 	@# whitespace before it
@@ -245,20 +310,7 @@ fmt-check: fmt
 	@diff=$$(git diff --color=always $(GO_SOURCES) templates $(WEB_DIRS)); \
 	if [ -n "$$diff" ]; then \
 	  echo "Please run 'make fmt' and commit the result:"; \
-	  printf "%s" "$${diff}"; \
-	  exit 1; \
-	fi
-
-.PHONY: fix
-fix: ## apply automated fixes to Go code
-	$(GO) run $(GOPLS_MODERNIZE_PACKAGE) -fix ./...
-
-.PHONY: fix-check
-fix-check: fix
-	@diff=$$(git diff --color=always $(GO_SOURCES)); \
-	if [ -n "$$diff" ]; then \
-	  echo "Please run 'make fix' and commit the result:"; \
-	  printf "%s" "$${diff}"; \
+	  echo "$${diff}"; \
 	  exit 1; \
 	fi
 
@@ -272,95 +324,93 @@ TAGS_PREREQ := $(TAGS_EVIDENCE)
 endif
 
 .PHONY: generate-swagger
-generate-swagger: $(SWAGGER_SPEC) ## generate the swagger spec from code comments
+generate-swagger: $(SWAGGER_SPEC)
 
-$(SWAGGER_SPEC): $(GO_SOURCES) $(SWAGGER_SPEC_INPUT)
-	$(GO) run $(SWAGGER_PACKAGE) generate spec --exclude "$(SWAGGER_EXCLUDE)" --input "$(SWAGGER_SPEC_INPUT)" --output './$(SWAGGER_SPEC)'
+$(SWAGGER_SPEC): $(GO_SOURCES_NO_BINDATA)
+	$(GO) run $(SWAGGER_PACKAGE) generate spec -x "$(SWAGGER_EXCLUDE)" -o './$(SWAGGER_SPEC)'
+	$(SED_INPLACE) '$(SWAGGER_SPEC_S_TMPL)' './$(SWAGGER_SPEC)'
+	$(SED_INPLACE) $(SWAGGER_NEWLINE_COMMAND) './$(SWAGGER_SPEC)'
 
 .PHONY: swagger-check
 swagger-check: generate-swagger
 	@diff=$$(git diff --color=always '$(SWAGGER_SPEC)'); \
 	if [ -n "$$diff" ]; then \
 		echo "Please run 'make generate-swagger' and commit the result:"; \
-		printf "%s" "$${diff}"; \
+		echo "$${diff}"; \
 		exit 1; \
 	fi
 
 .PHONY: swagger-validate
-swagger-validate: ## check if the swagger spec is valid
-	@# swagger "validate" requires that the "basePath" must start with a slash, but we are using Golang template "{{...}}"
-	@$(SED_INPLACE) -E -e 's|"basePath":( *)"(.*)"|"basePath":\1"/\2"|g' './$(SWAGGER_SPEC)' # add a prefix slash to basePath
-	@# FIXME: there are some warnings
+swagger-validate:
+	$(SED_INPLACE) '$(SWAGGER_SPEC_S_JSON)' './$(SWAGGER_SPEC)'
 	$(GO) run $(SWAGGER_PACKAGE) validate './$(SWAGGER_SPEC)'
-	@$(SED_INPLACE) -E -e 's|"basePath":( *)"/(.*)"|"basePath":\1"\2"|g' './$(SWAGGER_SPEC)' # remove the prefix slash from basePath
+	$(SED_INPLACE) '$(SWAGGER_SPEC_S_TMPL)' './$(SWAGGER_SPEC)'
 
 .PHONY: checks
-checks: checks-frontend checks-backend ## run various consistency checks
+checks: checks-frontend checks-backend
 
 .PHONY: checks-frontend
-checks-frontend: lockfile-check svg-check ## check frontend files
+checks-frontend: lockfile-check svg-check
 
 .PHONY: checks-backend
-checks-backend: tidy-check swagger-check fmt-check fix-check swagger-validate security-check ## check backend files
+checks-backend: tidy-check swagger-check fmt-check swagger-validate security-check
 
 .PHONY: lint
-lint: lint-frontend lint-backend lint-spell ## lint everything
+lint: lint-frontend lint-backend lint-spell
 
 .PHONY: lint-fix
-lint-fix: lint-frontend-fix lint-backend-fix lint-spell-fix ## lint everything and fix issues
+lint-fix: lint-frontend-fix lint-backend-fix lint-spell-fix
 
 .PHONY: lint-frontend
-lint-frontend: lint-js lint-css ## lint frontend files
+lint-frontend: lint-js lint-css
 
 .PHONY: lint-frontend-fix
-lint-frontend-fix: lint-js-fix lint-css-fix ## lint frontend files and fix issues
+lint-frontend-fix: lint-js-fix lint-css-fix
 
 .PHONY: lint-backend
-lint-backend: lint-go lint-go-gitea-vet lint-go-gopls lint-editorconfig ## lint backend files
+lint-backend: lint-go lint-go-vet lint-editorconfig
 
 .PHONY: lint-backend-fix
-lint-backend-fix: lint-go-fix lint-go-gitea-vet lint-editorconfig ## lint backend files and fix issues
+lint-backend-fix: lint-go-fix lint-go-vet lint-editorconfig
 
 .PHONY: lint-js
-lint-js: node_modules ## lint js files
-	npx eslint --color --max-warnings=0 --ext js,ts,vue $(ESLINT_FILES)
-	npx vue-tsc
+lint-js: node_modules
+	npx eslint --color --max-warnings=0 --ext js,vue web_src/js build *.config.js tests/e2e
 
 .PHONY: lint-js-fix
-lint-js-fix: node_modules ## lint js files and fix issues
-	npx eslint --color --max-warnings=0 --ext js,ts,vue $(ESLINT_FILES) --fix
-	npx vue-tsc
+lint-js-fix: node_modules
+	npx eslint --color --max-warnings=0 --ext js,vue web_src/js build *.config.js tests/e2e --fix
 
 .PHONY: lint-css
-lint-css: node_modules ## lint css files
-	npx stylelint --color --max-warnings=0 $(STYLELINT_FILES)
+lint-css: node_modules
+	npx stylelint --color --max-warnings=0 web_src/css web_src/js/components/*.vue
 
 .PHONY: lint-css-fix
-lint-css-fix: node_modules ## lint css files and fix issues
-	npx stylelint --color --max-warnings=0 $(STYLELINT_FILES) --fix
+lint-css-fix: node_modules
+	npx stylelint --color --max-warnings=0 web_src/css web_src/js/components/*.vue --fix
 
 .PHONY: lint-swagger
-lint-swagger: node_modules ## lint swagger files
+lint-swagger: node_modules
 	npx spectral lint -q -F hint $(SWAGGER_SPEC)
 
 .PHONY: lint-md
-lint-md: node_modules ## lint markdown files
-	npx markdownlint *.md
+lint-md: node_modules
+	npx markdownlint docs *.md
 
 .PHONY: lint-spell
-lint-spell: ## lint spelling
-	@go run $(MISSPELL_PACKAGE) -dict tools/misspellings.csv -error $(SPELLCHECK_FILES)
+lint-spell:
+	@go run $(MISSPELL_PACKAGE) -error $(SPELLCHECK_FILES)
 
 .PHONY: lint-spell-fix
-lint-spell-fix: ## lint spelling and fix issues
-	@go run $(MISSPELL_PACKAGE) -dict tools/misspellings.csv -w $(SPELLCHECK_FILES)
+lint-spell-fix:
+	@go run $(MISSPELL_PACKAGE) -w $(SPELLCHECK_FILES)
 
 .PHONY: lint-go
-lint-go: ## lint go files
+lint-go:
 	$(GO) run $(GOLANGCI_LINT_PACKAGE) run
 
 .PHONY: lint-go-fix
-lint-go-fix: ## lint go files and fix issues
+lint-go-fix:
 	$(GO) run $(GOLANGCI_LINT_PACKAGE) run --fix
 
 # workaround step for the lint-go-windows CI task because 'go run' can not
@@ -370,58 +420,51 @@ lint-go-windows:
 	@GOOS= GOARCH= $(GO) install $(GOLANGCI_LINT_PACKAGE)
 	golangci-lint run
 
-.PHONY: lint-go-gitea-vet
-lint-go-gitea-vet: ## lint go files with gitea-vet
-	@echo "Running gitea-vet..."
+.PHONY: lint-go-vet
+lint-go-vet:
+	@echo "Running go vet..."
 	@GOOS= GOARCH= $(GO) build code.gitea.io/gitea-vet
-	@$(GO) vet -vettool=gitea-vet ./...
-
-.PHONY: lint-go-gopls
-lint-go-gopls: ## lint go files with gopls
-	@echo "Running gopls check..."
-	@GO=$(GO) GOPLS_PACKAGE=$(GOPLS_PACKAGE) tools/lint-go-gopls.sh $(GO_SOURCES)
+	@$(GO) vet -vettool=gitea-vet $(GO_PACKAGES)
 
 .PHONY: lint-editorconfig
 lint-editorconfig:
-	@echo "Running editorconfig check..."
-	@$(GO) run $(EDITORCONFIG_CHECKER_PACKAGE) $(EDITORCONFIG_FILES)
+	$(GO) run $(EDITORCONFIG_CHECKER_PACKAGE) templates .github/workflows
 
 .PHONY: lint-actions
-lint-actions: ## lint action workflow files
+lint-actions:
 	$(GO) run $(ACTIONLINT_PACKAGE)
 
 .PHONY: lint-templates
-lint-templates: .venv node_modules ## lint template files
-	@node tools/lint-templates-svg.js
+lint-templates: .venv
 	@poetry run djlint $(shell find templates -type f -iname '*.tmpl')
 
 .PHONY: lint-yaml
-lint-yaml: .venv ## lint yaml files
-	@poetry run yamllint -s .
+lint-yaml: .venv
+	@poetry run yamllint .
 
 .PHONY: watch
-watch: ## watch everything and continuously rebuild
-	@bash tools/watch.sh
+watch:
+	@bash build/watch.sh
 
 .PHONY: watch-frontend
-watch-frontend: node-check node_modules ## watch frontend files and continuously rebuild
+watch-frontend: node-check node_modules
 	@rm -rf $(WEBPACK_DEST_ENTRIES)
 	NODE_ENV=development npx webpack --watch --progress
 
 .PHONY: watch-backend
-watch-backend: go-check ## watch backend files and continuously rebuild
+watch-backend: go-check
 	GITEA_RUN_MODE=dev $(GO) run $(AIR_PACKAGE) -c .air.toml
 
 .PHONY: test
-test: test-frontend test-backend ## test everything
+test: test-frontend test-backend
 
 .PHONY: test-backend
-test-backend: ## test backend files
+test-backend:
 	@echo "Running go test with $(GOTESTFLAGS) -tags '$(TEST_TAGS)'..."
 	@$(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' $(GO_TEST_PACKAGES)
 
 .PHONY: test-frontend
-test-frontend: node_modules ## test frontend files
+test-frontend: node_modules
 	npx vitest
 
 .PHONY: test-check
@@ -430,7 +473,7 @@ test-check:
 	@diff=$$(git status -s); \
 	if [ -n "$$diff" ]; then \
 		echo "make test-backend has changed files in the source tree:"; \
-		printf "%s" "$${diff}"; \
+		echo "$${diff}"; \
 		echo "You should change the tests to create these files in a temporary directory."; \
 		echo "Do not simply add these files to .gitignore"; \
 		exit 1; \
@@ -453,7 +496,7 @@ unit-test-coverage:
 	@$(GO) test $(GOTESTFLAGS) -timeout=20m -tags='$(TEST_TAGS)' -cover -coverprofile coverage.out $(GO_TEST_PACKAGES) && echo "\n==>\033[32m Ok\033[m\n" || exit 1
 
 .PHONY: tidy
-tidy: ## run go mod tidy
+tidy:
 	$(eval MIN_GO_VERSION := $(shell grep -Eo '^go\s+[0-9]+\.[0-9.]+' go.mod | cut -d' ' -f2))
 	$(GO) mod tidy -compat=$(MIN_GO_VERSION)
 	@$(MAKE) --no-print-directory $(GO_LICENSE_FILE)
@@ -467,17 +510,15 @@ tidy-check: tidy
 	@diff=$$(git diff --color=always go.mod go.sum $(GO_LICENSE_FILE)); \
 	if [ -n "$$diff" ]; then \
 		echo "Please run 'make tidy' and commit the result:"; \
-		printf "%s" "$${diff}"; \
+		echo "$${diff}"; \
 		exit 1; \
 	fi
 
 .PHONY: go-licenses
-go-licenses: $(GO_LICENSE_FILE) ## regenerate go licenses
+go-licenses: $(GO_LICENSE_FILE)
 
 $(GO_LICENSE_FILE): go.mod go.sum
-	@rm -rf $(GO_LICENSE_FILE)
-	$(GO) install $(GO_LICENSES_PACKAGE)
-	-GOOS=linux CGO_ENABLED=1 go-licenses save . --force --save_path=$(GO_LICENSE_TMP_DIR) 2>/dev/null
+	-$(GO) run $(GO_LICENSES_PACKAGE) save . --force --save_path=$(GO_LICENSE_TMP_DIR) 2>/dev/null
 	$(GO) run build/generate-go-licenses.go $(GO_LICENSE_TMP_DIR) $(GO_LICENSE_FILE)
 	@rm -rf $(GO_LICENSE_TMP_DIR)
 
@@ -519,13 +560,33 @@ test-mysql\#%: integrations.mysql.test generate-ini-mysql
 .PHONY: test-mysql-migration
 test-mysql-migration: migrations.mysql.test migrations.individual.mysql.test
 
+generate-ini-mysql8:
+	sed -e 's|{{TEST_MYSQL8_HOST}}|${TEST_MYSQL8_HOST}|g' \
+		-e 's|{{TEST_MYSQL8_DBNAME}}|${TEST_MYSQL8_DBNAME}|g' \
+		-e 's|{{TEST_MYSQL8_USERNAME}}|${TEST_MYSQL8_USERNAME}|g' \
+		-e 's|{{TEST_MYSQL8_PASSWORD}}|${TEST_MYSQL8_PASSWORD}|g' \
+		-e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
+		-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
+		-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
+			tests/mysql8.ini.tmpl > tests/mysql8.ini
+
+.PHONY: test-mysql8
+test-mysql8: integrations.mysql8.test generate-ini-mysql8
+	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./integrations.mysql8.test
+
+.PHONY: test-mysql8\#%
+test-mysql8\#%: integrations.mysql8.test generate-ini-mysql8
+	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./integrations.mysql8.test -test.run $(subst .,/,$*)
+
+.PHONY: test-mysql8-migration
+test-mysql8-migration: migrations.mysql8.test migrations.individual.mysql8.test
+
 generate-ini-pgsql:
 	sed -e 's|{{TEST_PGSQL_HOST}}|${TEST_PGSQL_HOST}|g' \
 		-e 's|{{TEST_PGSQL_DBNAME}}|${TEST_PGSQL_DBNAME}|g' \
 		-e 's|{{TEST_PGSQL_USERNAME}}|${TEST_PGSQL_USERNAME}|g' \
 		-e 's|{{TEST_PGSQL_PASSWORD}}|${TEST_PGSQL_PASSWORD}|g' \
 		-e 's|{{TEST_PGSQL_SCHEMA}}|${TEST_PGSQL_SCHEMA}|g' \
-		-e 's|{{TEST_MINIO_ENDPOINT}}|${TEST_MINIO_ENDPOINT}|g' \
 		-e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
 		-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \
 		-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \
@@ -564,7 +625,8 @@ test-mssql\#%: integrations.mssql.test generate-ini-mssql
 test-mssql-migration: migrations.mssql.test migrations.individual.mssql.test
 
 .PHONY: playwright
-playwright: deps-frontend
+playwright: $(PLAYWRIGHT_DIR)
+	npm install --no-save @playwright/test
 	npx playwright install $(PLAYWRIGHT_FLAGS)
 
 .PHONY: test-e2e%
@@ -591,6 +653,14 @@ test-e2e-mysql: playwright e2e.mysql.test generate-ini-mysql
 test-e2e-mysql\#%: playwright e2e.mysql.test generate-ini-mysql
 	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./e2e.mysql.test -test.run TestE2e/$*
 
+.PHONY: test-e2e-mysql8
+test-e2e-mysql8: playwright e2e.mysql8.test generate-ini-mysql8
+	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./e2e.mysql8.test
+
+.PHONY: test-e2e-mysql8\#%
+test-e2e-mysql8\#%: playwright e2e.mysql8.test generate-ini-mysql8
+	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./e2e.mysql8.test -test.run TestE2e/$*
+
 .PHONY: test-e2e-pgsql
 test-e2e-pgsql: playwright e2e.pgsql.test generate-ini-pgsql
 	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini ./e2e.pgsql.test
@@ -634,6 +704,9 @@ integration-test-coverage-sqlite: integrations.cover.sqlite.test generate-ini-sq
 integrations.mysql.test: git-check $(GO_SOURCES)
 	$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.mysql.test
 
+integrations.mysql8.test: git-check $(GO_SOURCES)
+	$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.mysql8.test
+
 integrations.pgsql.test: git-check $(GO_SOURCES)
 	$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.pgsql.test
 
@@ -654,6 +727,11 @@ migrations.mysql.test: $(GO_SOURCES) generate-ini-mysql
 	$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.mysql.test
 	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./migrations.mysql.test
 
+.PHONY: migrations.mysql8.test
+migrations.mysql8.test: $(GO_SOURCES) generate-ini-mysql8
+	$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.mysql8.test
+	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./migrations.mysql8.test
+
 .PHONY: migrations.pgsql.test
 migrations.pgsql.test: $(GO_SOURCES) generate-ini-pgsql
 	$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.pgsql.test
@@ -673,7 +751,13 @@ migrations.sqlite.test: $(GO_SOURCES) generate-ini-sqlite
 migrations.individual.mysql.test: $(GO_SOURCES)
 	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini $(GO) test $(GOTESTFLAGS) -tags='$(TEST_TAGS)' -p 1 $(MIGRATE_TEST_PACKAGES)
 
-.PHONY: migrations.individual.sqlite.test\#%
+.PHONY: migrations.individual.mysql8.test
+migrations.individual.mysql8.test: $(GO_SOURCES)
+	for pkg in $(shell $(GO) list code.gitea.io/gitea/models/migrations/...); do \
+		GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' $$pkg; \
+	done
+
+.PHONY: migrations.individual.mysql8.test\#%
 migrations.individual.sqlite.test\#%: $(GO_SOURCES) generate-ini-sqlite
 	GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$*
 
@@ -704,6 +788,9 @@ migrations.individual.sqlite.test\#%: $(GO_SOURCES) generate-ini-sqlite
 e2e.mysql.test: $(GO_SOURCES)
 	$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.mysql.test
 
+e2e.mysql8.test: $(GO_SOURCES)
+	$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.mysql8.test
+
 e2e.pgsql.test: $(GO_SOURCES)
 	$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.pgsql.test
 
@@ -721,17 +808,17 @@ install: $(wildcard *.go)
 	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)'
 
 .PHONY: build
-build: frontend backend ## build everything
+build: frontend backend
 
 .PHONY: frontend
-frontend: $(WEBPACK_DEST) ## build frontend files
+frontend: $(WEBPACK_DEST)
 
 .PHONY: backend
-backend: go-check generate-backend $(EXECUTABLE) ## build backend files
+backend: go-check generate-backend $(EXECUTABLE)
 
 # We generate the backend before the frontend in case we in future we want to generate things in the frontend from generated files in backend
 .PHONY: generate
-generate: generate-backend ## run "go generate"
+generate: generate-backend
 
 .PHONY: generate-backend
 generate-backend: $(TAGS_PREREQ) generate-go
@@ -739,39 +826,39 @@ generate-backend: $(TAGS_PREREQ) generate-go
 .PHONY: generate-go
 generate-go: $(TAGS_PREREQ)
 	@echo "Running go generate..."
-	@CC= GOOS= GOARCH= CGO_ENABLED=0 $(GO) generate -tags '$(TAGS)' ./...
+	@CC= GOOS= GOARCH= $(GO) generate -tags '$(TAGS)' $(GO_PACKAGES)
 
 .PHONY: security-check
 security-check:
-	go run $(GOVULNCHECK_PACKAGE) -show color ./...
+	go run $(GOVULNCHECK_PACKAGE) ./...
 
 $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ)
 	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
 
 .PHONY: release
-release: frontend generate release-windows release-linux release-darwin release-freebsd release-copy release-compress vendor release-sources release-check
+release: frontend generate release-windows release-linux release-darwin release-freebsd release-copy release-compress vendor release-sources release-docs release-check
 
 $(DIST_DIRS):
 	mkdir -p $(DIST_DIRS)
 
 .PHONY: release-windows
 release-windows: | $(DIST_DIRS)
-	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -buildmode exe -dest $(DIST)/binaries -tags 'osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out gitea-$(VERSION) .
+	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -buildmode exe -dest $(DIST)/binaries -tags 'osusergo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out gitea-$(VERSION) .
 ifeq (,$(findstring gogit,$(TAGS)))
-	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -buildmode exe -dest $(DIST)/binaries -tags 'osusergo gogit $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out gitea-$(VERSION)-gogit .
+	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -buildmode exe -dest $(DIST)/binaries -tags 'osusergo gogit $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out gitea-$(VERSION)-gogit .
 endif
 
 .PHONY: release-linux
 release-linux: | $(DIST_DIRS)
-	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -targets '$(LINUX_ARCHS)' -out gitea-$(VERSION) .
+	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets '$(LINUX_ARCHS)' -out gitea-$(VERSION) .
 
 .PHONY: release-darwin
 release-darwin: | $(DIST_DIRS)
-	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w $(LDFLAGS)' -targets 'darwin-10.12/amd64,darwin-10.12/arm64' -out gitea-$(VERSION) .
+	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'darwin-10.12/amd64,darwin-10.12/arm64' -out gitea-$(VERSION) .
 
 .PHONY: release-freebsd
 release-freebsd: | $(DIST_DIRS)
-	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w $(LDFLAGS)' -targets 'freebsd/amd64' -out gitea-$(VERSION) .
+	CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) run $(XGO_PACKAGE) -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'freebsd/amd64' -out gitea-$(VERSION) .
 
 .PHONY: release-copy
 release-copy: | $(DIST_DIRS)
@@ -795,77 +882,91 @@ release-sources: | $(DIST_DIRS)
 	tar $(addprefix $(EXCL),$(TAR_EXCLUDES)) $(TRANSFORM) -czf $(DIST)/release/gitea-src-$(VERSION).tar.gz .
 	rm -f $(STORED_VERSION_FILE)
 
+.PHONY: release-docs
+release-docs: | $(DIST_DIRS) docs
+	tar -czf $(DIST)/release/gitea-docs-$(VERSION).tar.gz -C ./docs .
+
+.PHONY: docs
+docs:
+	cd docs; bash scripts/trans-copy.sh;
+
 .PHONY: deps
-deps: deps-frontend deps-backend deps-tools deps-py ## install dependencies
+deps: deps-frontend deps-backend deps-tools deps-py
 
 .PHONY: deps-py
-deps-py: .venv ## install python dependencies
+deps-py: .venv
 
 .PHONY: deps-frontend
-deps-frontend: node_modules ## install frontend dependencies
+deps-frontend: node_modules
 
 .PHONY: deps-backend
-deps-backend: ## install backend dependencies
+deps-backend:
 	$(GO) mod download
 
 .PHONY: deps-tools
-deps-tools: ## install tool dependencies
-	$(GO) install $(AIR_PACKAGE) & \
-	$(GO) install $(EDITORCONFIG_CHECKER_PACKAGE) & \
-	$(GO) install $(GOFUMPT_PACKAGE) & \
-	$(GO) install $(GOLANGCI_LINT_PACKAGE) & \
-	$(GO) install $(GXZ_PACKAGE) & \
-	$(GO) install $(MISSPELL_PACKAGE) & \
-	$(GO) install $(SWAGGER_PACKAGE) & \
-	$(GO) install $(XGO_PACKAGE) & \
-	$(GO) install $(GO_LICENSES_PACKAGE) & \
-	$(GO) install $(GOVULNCHECK_PACKAGE) & \
-	$(GO) install $(ACTIONLINT_PACKAGE) & \
-	$(GO) install $(GOPLS_PACKAGE) & \
-	$(GO) install $(GOPLS_MODERNIZE_PACKAGE) & \
-	wait
+deps-tools:
+	$(GO) install $(AIR_PACKAGE)
+	$(GO) install $(EDITORCONFIG_CHECKER_PACKAGE)
+	$(GO) install $(GOFUMPT_PACKAGE)
+	$(GO) install $(GOLANGCI_LINT_PACKAGE)
+	$(GO) install $(GXZ_PACKAGE)
+	$(GO) install $(MISSPELL_PACKAGE)
+	$(GO) install $(SWAGGER_PACKAGE)
+	$(GO) install $(XGO_PACKAGE)
+	$(GO) install $(GO_LICENSES_PACKAGE)
+	$(GO) install $(GOVULNCHECK_PACKAGE)
+	$(GO) install $(ACTIONLINT_PACKAGE)
 
 node_modules: package-lock.json
 	npm install --no-save
 	@touch node_modules
 
 .venv: poetry.lock
-	poetry install
+	poetry install --no-root
 	@touch .venv
 
 .PHONY: update
-update: update-js update-py ## update js and py dependencies
+update: update-js update-py
 
 .PHONY: update-js
-update-js: node-check | node_modules ## update js dependencies
+update-js: node-check | node_modules
 	npx updates -u -f package.json
 	rm -rf node_modules package-lock.json
 	npm install --package-lock
-	npx nolyfill install
-	npm install --package-lock
 	@touch node_modules
 
 .PHONY: update-py
-update-py: node-check | node_modules ## update py dependencies
+update-py: node-check | node_modules
 	npx updates -u -f pyproject.toml
 	rm -rf .venv poetry.lock
 	poetry install
 	@touch .venv
 
+.PHONY: fomantic
+fomantic:
+	rm -rf $(FOMANTIC_WORK_DIR)/build
+	cd $(FOMANTIC_WORK_DIR) && npm install --no-save
+	cp -f $(FOMANTIC_WORK_DIR)/theme.config.less $(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui/src/theme.config
+	cp -rf $(FOMANTIC_WORK_DIR)/_site $(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui/src/
+	cd $(FOMANTIC_WORK_DIR) && npx gulp -f node_modules/fomantic-ui/gulpfile.js build
+	# fomantic uses "touchstart" as click event for some browsers, it's not ideal, so we force fomantic to always use "click" as click event
+	$(SED_INPLACE) -e 's/clickEvent[ \t]*=/clickEvent = "click", unstableClickEvent =/g' $(FOMANTIC_WORK_DIR)/build/semantic.js
+	$(SED_INPLACE) -e 's/\r//g' $(FOMANTIC_WORK_DIR)/build/semantic.css $(FOMANTIC_WORK_DIR)/build/semantic.js
+	rm -f $(FOMANTIC_WORK_DIR)/build/*.min.*
+
 .PHONY: webpack
-webpack: $(WEBPACK_DEST) ## build webpack files
+webpack: $(WEBPACK_DEST)
 
 $(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json
 	@$(MAKE) -s node-check node_modules
-	@rm -rf $(WEBPACK_DEST_ENTRIES)
-	@echo "Running webpack..."
-	@BROWSERSLIST_IGNORE_OLD_DATA=true npx webpack
+	rm -rf $(WEBPACK_DEST_ENTRIES)
+	npx webpack
 	@touch $(WEBPACK_DEST)
 
 .PHONY: svg
-svg: node-check | node_modules ## build svg files
+svg: node-check | node_modules
 	rm -rf $(SVG_DEST_DIR)
-	node tools/generate-svg.js
+	node build/generate-svg.js
 
 .PHONY: svg-check
 svg-check: svg
@@ -873,7 +974,7 @@ svg-check: svg
 	@diff=$$(git diff --color=always --cached $(SVG_DEST_DIR)); \
 	if [ -n "$$diff" ]; then \
 		echo "Please run 'make svg' and 'git add $(SVG_DEST_DIR)' and commit the result:"; \
-		printf "%s" "$${diff}"; \
+		echo "$${diff}"; \
 		exit 1; \
 	fi
 
@@ -884,7 +985,7 @@ lockfile-check:
 	if [ -n "$$diff" ]; then \
 		echo "package-lock.json is inconsistent with package.json"; \
 		echo "Please run 'npm install --package-lock-only' and commit the result:"; \
-		printf "%s" "$${diff}"; \
+		echo "$${diff}"; \
 		exit 1; \
 	fi
 
@@ -898,17 +999,21 @@ update-translations:
 	mv ./translations/*.ini ./options/locale/
 	rmdir ./translations
 
+.PHONY: generate-license
+generate-license:
+	$(GO) run build/generate-licenses.go
+
 .PHONY: generate-gitignore
-generate-gitignore: ## update gitignore files
+generate-gitignore:
 	$(GO) run build/generate-gitignores.go
 
 .PHONY: generate-images
 generate-images: | node_modules
-	npm install --no-save fabric@6 imagemin-zopfli@7
-	node tools/generate-images.js $(TAGS)
+	npm install --no-save --no-package-lock fabric@5 imagemin-zopfli@7
+	node build/generate-images.js $(TAGS)
 
 .PHONY: generate-manpage
-generate-manpage: ## generate manpage
+generate-manpage:
 	@[ -f gitea ] || make backend
 	@mkdir -p man/man1/ man/man5
 	@./gitea docs --man > man/man1/gitea.1
@@ -922,8 +1027,3 @@ docker:
 
 # This endif closes the if at the top of the file
 endif
-
-# Disable parallel execution because it would break some targets that don't
-# specify exact dependencies like 'backend' which does currently not depend
-# on 'frontend' to enable Node.js-less builds from source tarballs.
-.NOTPARALLEL:
diff --git a/README.md b/README.md
index 017ca629d0..adf94dcc9a 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,58 @@
-# Gitea
+

+ + Gitea + +

+

Gitea - Git with a cup of tea

-[![](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml/badge.svg?branch=main)](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml?query=branch%3Amain "Release Nightly") -[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea") -[![](https://goreportcard.com/badge/code.gitea.io/gitea)](https://goreportcard.com/report/code.gitea.io/gitea "Go Report Card") -[![](https://pkg.go.dev/badge/code.gitea.io/gitea?status.svg)](https://pkg.go.dev/code.gitea.io/gitea "GoDoc") -[![](https://img.shields.io/github/release/go-gitea/gitea.svg)](https://github.com/go-gitea/gitea/releases/latest "GitHub release") -[![](https://www.codetriage.com/go-gitea/gitea/badges/users.svg)](https://www.codetriage.com/go-gitea/gitea "Help Contribute to Open Source") -[![](https://opencollective.com/gitea/tiers/backers/badge.svg?label=backers&color=brightgreen)](https://opencollective.com/gitea "Become a backer/sponsor of gitea") -[![](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT "License: MIT") -[![Contribute with Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod&color=green)](https://gitpod.io/#https://github.com/go-gitea/gitea) -[![](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com "Crowdin") +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contribute with Gitpod + + + + + + + + + + +

-[繁體中文](./README.zh-tw.md) | [简体中文](./README.zh-cn.md) +

+ View this document in Chinese +

## Purpose @@ -21,24 +62,11 @@ painless way of setting up a self-hosted Git service. As Gitea is written in Go, it works across **all** the platforms and architectures that are supported by Go, including Linux, macOS, and Windows on x86, amd64, ARM and PowerPC architectures. +You can try it out using [the online demo](https://try.gitea.io/). This project has been [forked](https://blog.gitea.com/welcome-to-gitea/) from [Gogs](https://gogs.io) since November of 2016, but a lot has changed. -For online demonstrations, you can visit [demo.gitea.com](https://demo.gitea.com). - -For accessing free Gitea service (with a limited number of repositories), you can visit [gitea.com](https://gitea.com/user/login). - -To quickly deploy your own dedicated Gitea instance on Gitea Cloud, you can start a free trial at [cloud.gitea.com](https://cloud.gitea.com). - -## Documentation - -You can find comprehensive documentation on our official [documentation website](https://docs.gitea.com/). - -It includes installation, administration, usage, development, contributing guides, and more to help you get started and explore all features effectively. - -If you have any suggestions or would like to contribute to it, you can visit the [documentation repository](https://gitea.com/gitea/docs) - ## Building From the root of the source tree, run: @@ -56,47 +84,44 @@ The `build` target is split into two sub-targets: Internet connectivity is required to download the go and npm modules. When building from the official source tarballs which include pre-built frontend files, the `frontend` target will not be triggered, making it possible to build without Node.js. +Parallelism (`make -j `) is not supported. + More info: https://docs.gitea.com/installation/install-from-source ## Using -After building, a binary file named `gitea` will be generated in the root of the source tree by default. To run it, use: - ./gitea web -> [!NOTE] -> If you're interested in using our APIs, we have experimental support with [documentation](https://docs.gitea.com/api). +NOTE: If you're interested in using our APIs, we have experimental +support with [documentation](https://try.gitea.io/api/swagger). ## Contributing Expected workflow is: Fork -> Patch -> Push -> Pull Request -> [!NOTE] -> -> 1. **YOU MUST READ THE [CONTRIBUTORS GUIDE](CONTRIBUTING.md) BEFORE STARTING TO WORK ON A PULL REQUEST.** -> 2. If you have found a vulnerability in the project, please write privately to **security@gitea.io**. Thanks! +NOTES: + +1. **YOU MUST READ THE [CONTRIBUTORS GUIDE](CONTRIBUTING.md) BEFORE STARTING TO WORK ON A PULL REQUEST.** +2. If you have found a vulnerability in the project, please write privately to **security@gitea.io**. Thanks! ## Translating -[![Crowdin](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com) - -Translations are done through [Crowdin](https://translate.gitea.com). If you want to translate to a new language ask one of the managers in the Crowdin project to add a new language there. +Translations are done through Crowdin. If you want to translate to a new language ask one of the managers in the Crowdin project to add a new language there. You can also just create an issue for adding a language or ask on discord on the #translation channel. If you need context or find some translation issues, you can leave a comment on the string or ask on Discord. For general translation questions there is a section in the docs. Currently a bit empty but we hope to fill it as questions pop up. -Get more information from [documentation](https://docs.gitea.com/contributing/localization). +https://docs.gitea.com/contributing/localization -## Official and Third-Party Projects +[![Crowdin](https://badges.crowdin.net/gitea/localized.svg)](https://crowdin.com/project/gitea) -We provide an official [go-sdk](https://gitea.com/gitea/go-sdk), a CLI tool called [tea](https://gitea.com/gitea/tea) and an [action runner](https://gitea.com/gitea/act_runner) for Gitea Action. +## Further information -We maintain a list of Gitea-related projects at [gitea/awesome-gitea](https://gitea.com/gitea/awesome-gitea), where you can discover more third-party projects, including SDKs, plugins, themes, and more. +For more information and instructions about how to install Gitea, please look at our [documentation](https://docs.gitea.com/). +If you have questions that are not covered by the documentation, you can get in contact with us on our [Discord server](https://discord.gg/Gitea) or create a post in the [discourse forum](https://discourse.gitea.io/). -## Communication +We maintain a list of Gitea-related projects at [gitea/awesome-gitea](https://gitea.com/gitea/awesome-gitea). -[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea") - -If you have questions that are not covered by the [documentation](https://docs.gitea.com/), you can get in contact with us on our [Discord server](https://discord.gg/Gitea) or create a post in the [discourse forum](https://forum.gitea.com/). +The official Gitea CLI is developed at [gitea/tea](https://gitea.com/gitea/tea). ## Authors @@ -135,79 +160,18 @@ Gitea is pronounced [/ɡɪ’ti:/](https://youtu.be/EM71-2uDAoY) as in "gi-tea" We're [working on it](https://github.com/go-gitea/gitea/issues/1029). -**Where can I find the security patches?** - -In the [release log](https://github.com/go-gitea/gitea/releases) or the [change log](https://github.com/go-gitea/gitea/blob/main/CHANGELOG.md), search for the keyword `SECURITY` to find the security patches. - ## License This project is licensed under the MIT License. See the [LICENSE](https://github.com/go-gitea/gitea/blob/main/LICENSE) file for the full license text. -## Further information +## Screenshots -
-Looking for an overview of the interface? Check it out! +Looking for an overview of the interface? Check it out! -### Login/Register Page - -![Login](https://dl.gitea.com/screenshots/login.png) -![Register](https://dl.gitea.com/screenshots/register.png) - -### User Dashboard - -![Home](https://dl.gitea.com/screenshots/home.png) -![Issues](https://dl.gitea.com/screenshots/issues.png) -![Pull Requests](https://dl.gitea.com/screenshots/pull_requests.png) -![Milestones](https://dl.gitea.com/screenshots/milestones.png) - -### User Profile - -![Profile](https://dl.gitea.com/screenshots/user_profile.png) - -### Explore - -![Repos](https://dl.gitea.com/screenshots/explore_repos.png) -![Users](https://dl.gitea.com/screenshots/explore_users.png) -![Orgs](https://dl.gitea.com/screenshots/explore_orgs.png) - -### Repository - -![Home](https://dl.gitea.com/screenshots/repo_home.png) -![Commits](https://dl.gitea.com/screenshots/repo_commits.png) -![Branches](https://dl.gitea.com/screenshots/repo_branches.png) -![Labels](https://dl.gitea.com/screenshots/repo_labels.png) -![Milestones](https://dl.gitea.com/screenshots/repo_milestones.png) -![Releases](https://dl.gitea.com/screenshots/repo_releases.png) -![Tags](https://dl.gitea.com/screenshots/repo_tags.png) - -#### Repository Issue - -![List](https://dl.gitea.com/screenshots/repo_issues.png) -![Issue](https://dl.gitea.com/screenshots/repo_issue.png) - -#### Repository Pull Requests - -![List](https://dl.gitea.com/screenshots/repo_pull_requests.png) -![Pull Request](https://dl.gitea.com/screenshots/repo_pull_request.png) -![File](https://dl.gitea.com/screenshots/repo_pull_request_file.png) -![Commits](https://dl.gitea.com/screenshots/repo_pull_request_commits.png) - -#### Repository Actions - -![List](https://dl.gitea.com/screenshots/repo_actions.png) -![Details](https://dl.gitea.com/screenshots/repo_actions_run.png) - -#### Repository Activity - -![Activity](https://dl.gitea.com/screenshots/repo_activity.png) -![Contributors](https://dl.gitea.com/screenshots/repo_contributors.png) -![Code Frequency](https://dl.gitea.com/screenshots/repo_code_frequency.png) -![Recent Commits](https://dl.gitea.com/screenshots/repo_recent_commits.png) - -### Organization - -![Home](https://dl.gitea.com/screenshots/org_home.png) - -
+|![Dashboard](https://dl.gitea.com/screenshots/home_timeline.png)|![User Profile](https://dl.gitea.com/screenshots/user_profile.png)|![Global Issues](https://dl.gitea.com/screenshots/global_issues.png)| +|:---:|:---:|:---:| +|![Branches](https://dl.gitea.com/screenshots/branches.png)|![Web Editor](https://dl.gitea.com/screenshots/web_editor.png)|![Activity](https://dl.gitea.com/screenshots/activity.png)| +|![New Migration](https://dl.gitea.com/screenshots/migration.png)|![Migrating](https://dl.gitea.com/screenshots/migration.gif)|![Pull Request View](https://image.ibb.co/e02dSb/6.png) +![Pull Request Dark](https://dl.gitea.com/screenshots/pull_requests_dark.png)|![Diff Review Dark](https://dl.gitea.com/screenshots/review_dark.png)|![Diff Dark](https://dl.gitea.com/screenshots/diff_dark.png)| diff --git a/README.zh-cn.md b/README.zh-cn.md deleted file mode 100644 index f34b25b945..0000000000 --- a/README.zh-cn.md +++ /dev/null @@ -1,206 +0,0 @@ -# Gitea - -[![](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml/badge.svg?branch=main)](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml?query=branch%3Amain "Release Nightly") -[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea") -[![](https://goreportcard.com/badge/code.gitea.io/gitea)](https://goreportcard.com/report/code.gitea.io/gitea "Go Report Card") -[![](https://pkg.go.dev/badge/code.gitea.io/gitea?status.svg)](https://pkg.go.dev/code.gitea.io/gitea "GoDoc") -[![](https://img.shields.io/github/release/go-gitea/gitea.svg)](https://github.com/go-gitea/gitea/releases/latest "GitHub release") -[![](https://www.codetriage.com/go-gitea/gitea/badges/users.svg)](https://www.codetriage.com/go-gitea/gitea "Help Contribute to Open Source") -[![](https://opencollective.com/gitea/tiers/backers/badge.svg?label=backers&color=brightgreen)](https://opencollective.com/gitea "Become a backer/sponsor of gitea") -[![](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT "License: MIT") -[![Contribute with Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod&color=green)](https://gitpod.io/#https://github.com/go-gitea/gitea) -[![](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com "Crowdin") - -[English](./README.md) | [繁體中文](./README.zh-tw.md) - -## 目的 - -这个项目的目标是提供最简单、最快速、最无痛的方式来设置自托管的 Git 服务。 - -由于 Gitea 是用 Go 语言编写的,它可以在 Go 支持的所有平台和架构上运行,包括 Linux、macOS 和 Windows 的 x86、amd64、ARM 和 PowerPC 架构。这个项目自 2016 年 11 月从 [Gogs](https://gogs.io) [分叉](https://blog.gitea.com/welcome-to-gitea/) 而来,但已经有了很多变化。 - -在线演示可以访问 [demo.gitea.com](https://demo.gitea.com)。 - -要访问免费的 Gitea 服务(有一定数量的仓库限制),可以访问 [gitea.com](https://gitea.com/user/login)。 - -要快速部署您自己的专用 Gitea 实例,可以在 [cloud.gitea.com](https://cloud.gitea.com) 开始免费试用。 - -## 文件 - -您可以在我们的官方 [文件网站](https://docs.gitea.com/) 上找到全面的文件。 - -它包括安装、管理、使用、开发、贡献指南等,帮助您快速入门并有效地探索所有功能。 - -如果您有任何建议或想要贡献,可以访问 [文件仓库](https://gitea.com/gitea/docs) - -## 构建 - -从源代码树的根目录运行: - - TAGS="bindata" make build - -如果需要 SQLite 支持: - - TAGS="bindata sqlite sqlite_unlock_notify" make build - -`build` 目标分为两个子目标: - -- `make backend` 需要 [Go Stable](https://go.dev/dl/),所需版本在 [go.mod](/go.mod) 中定义。 -- `make frontend` 需要 [Node.js LTS](https://nodejs.org/en/download/) 或更高版本。 - -需要互联网连接来下载 go 和 npm 模块。从包含预构建前端文件的官方源代码压缩包构建时,不会触发 `frontend` 目标,因此可以在没有 Node.js 的情况下构建。 - -更多信息:https://docs.gitea.com/installation/install-from-source - -## 使用 - -构建后,默认情况下会在源代码树的根目录生成一个名为 `gitea` 的二进制文件。要运行它,请使用: - - ./gitea web - -> [!注意] -> 如果您对使用我们的 API 感兴趣,我们提供了实验性支持,并附有 [文件](https://docs.gitea.com/api)。 - -## 贡献 - -预期的工作流程是:Fork -> Patch -> Push -> Pull Request - -> [!注意] -> -> 1. **在开始进行 Pull Request 之前,您必须阅读 [贡献者指南](CONTRIBUTING.md)。** -> 2. 如果您在项目中发现了漏洞,请私下写信给 **security@gitea.io**。谢谢! - -## 翻译 - -[![Crowdin](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com) - -翻译通过 [Crowdin](https://translate.gitea.com) 进行。如果您想翻译成新的语言,请在 Crowdin 项目中请求管理员添加新语言。 - -您也可以创建一个 issue 来添加语言,或者在 discord 的 #translation 频道上询问。如果您需要上下文或发现一些翻译问题,可以在字符串上留言或在 Discord 上询问。对于一般的翻译问题,文档中有一个部分。目前有点空,但我们希望随着问题的出现而填充它。 - -更多信息请参阅 [文件](https://docs.gitea.com/contributing/localization)。 - -## 官方和第三方项目 - -我们提供了一个官方的 [go-sdk](https://gitea.com/gitea/go-sdk),一个名为 [tea](https://gitea.com/gitea/tea) 的 CLI 工具和一个 Gitea Action 的 [action runner](https://gitea.com/gitea/act_runner)。 - -我们在 [gitea/awesome-gitea](https://gitea.com/gitea/awesome-gitea) 维护了一个 Gitea 相关项目的列表,您可以在那里发现更多的第三方项目,包括 SDK、插件、主题等。 - -## 通讯 - -[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea") - -如果您有任何文件未涵盖的问题,可以在我们的 [Discord 服务器](https://discord.gg/Gitea) 上与我们联系,或者在 [discourse 论坛](https://forum.gitea.com/) 上创建帖子。 - -## 作者 - -- [维护者](https://github.com/orgs/go-gitea/people) -- [贡献者](https://github.com/go-gitea/gitea/graphs/contributors) -- [翻译者](options/locale/TRANSLATORS) - -## 支持者 - -感谢所有支持者! 🙏 [[成为支持者](https://opencollective.com/gitea#backer)] - - - -## 赞助商 - -通过成为赞助商来支持这个项目。您的标志将显示在这里,并带有链接到您的网站。 [[成为赞助商](https://opencollective.com/gitea#sponsor)] - - - - - - - - - - - - -## 常见问题 - -**Gitea 怎么发音?** - -Gitea 的发音是 [/ɡɪ’ti:/](https://youtu.be/EM71-2uDAoY),就像 "gi-tea" 一样,g 是硬音。 - -**为什么这个项目没有托管在 Gitea 实例上?** - -我们正在 [努力](https://github.com/go-gitea/gitea/issues/1029)。 - -**在哪里可以找到安全补丁?** - -在 [发布日志](https://github.com/go-gitea/gitea/releases) 或 [变更日志](https://github.com/go-gitea/gitea/blob/main/CHANGELOG.md) 中,搜索关键词 `SECURITY` 以找到安全补丁。 - -## 许可证 - -这个项目是根据 MIT 许可证授权的。 -请参阅 [LICENSE](https://github.com/go-gitea/gitea/blob/main/LICENSE) 文件以获取完整的许可证文本。 - -## 进一步信息 - -
-寻找界面概述?查看这里! - -### 登录/注册页面 - -![Login](https://dl.gitea.com/screenshots/login.png) -![Register](https://dl.gitea.com/screenshots/register.png) - -### 用户仪表板 - -![Home](https://dl.gitea.com/screenshots/home.png) -![Issues](https://dl.gitea.com/screenshots/issues.png) -![Pull Requests](https://dl.gitea.com/screenshots/pull_requests.png) -![Milestones](https://dl.gitea.com/screenshots/milestones.png) - -### 用户资料 - -![Profile](https://dl.gitea.com/screenshots/user_profile.png) - -### 探索 - -![Repos](https://dl.gitea.com/screenshots/explore_repos.png) -![Users](https://dl.gitea.com/screenshots/explore_users.png) -![Orgs](https://dl.gitea.com/screenshots/explore_orgs.png) - -### 仓库 - -![Home](https://dl.gitea.com/screenshots/repo_home.png) -![Commits](https://dl.gitea.com/screenshots/repo_commits.png) -![Branches](https://dl.gitea.com/screenshots/repo_branches.png) -![Labels](https://dl.gitea.com/screenshots/repo_labels.png) -![Milestones](https://dl.gitea.com/screenshots/repo_milestones.png) -![Releases](https://dl.gitea.com/screenshots/repo_releases.png) -![Tags](https://dl.gitea.com/screenshots/repo_tags.png) - -#### 仓库问题 - -![List](https://dl.gitea.com/screenshots/repo_issues.png) -![Issue](https://dl.gitea.com/screenshots/repo_issue.png) - -#### 仓库拉取请求 - -![List](https://dl.gitea.com/screenshots/repo_pull_requests.png) -![Pull Request](https://dl.gitea.com/screenshots/repo_pull_request.png) -![File](https://dl.gitea.com/screenshots/repo_pull_request_file.png) -![Commits](https://dl.gitea.com/screenshots/repo_pull_request_commits.png) - -#### 仓库操作 - -![List](https://dl.gitea.com/screenshots/repo_actions.png) -![Details](https://dl.gitea.com/screenshots/repo_actions_run.png) - -#### 仓库活动 - -![Activity](https://dl.gitea.com/screenshots/repo_activity.png) -![Contributors](https://dl.gitea.com/screenshots/repo_contributors.png) -![Code Frequency](https://dl.gitea.com/screenshots/repo_code_frequency.png) -![Recent Commits](https://dl.gitea.com/screenshots/repo_recent_commits.png) - -### 组织 - -![Home](https://dl.gitea.com/screenshots/org_home.png) - -
diff --git a/README.zh-tw.md b/README.zh-tw.md deleted file mode 100644 index 9de3f85dd5..0000000000 --- a/README.zh-tw.md +++ /dev/null @@ -1,206 +0,0 @@ -# Gitea - -[![](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml/badge.svg?branch=main)](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml?query=branch%3Amain "Release Nightly") -[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea") -[![](https://goreportcard.com/badge/code.gitea.io/gitea)](https://goreportcard.com/report/code.gitea.io/gitea "Go Report Card") -[![](https://pkg.go.dev/badge/code.gitea.io/gitea?status.svg)](https://pkg.go.dev/code.gitea.io/gitea "GoDoc") -[![](https://img.shields.io/github/release/go-gitea/gitea.svg)](https://github.com/go-gitea/gitea/releases/latest "GitHub release") -[![](https://www.codetriage.com/go-gitea/gitea/badges/users.svg)](https://www.codetriage.com/go-gitea/gitea "Help Contribute to Open Source") -[![](https://opencollective.com/gitea/tiers/backers/badge.svg?label=backers&color=brightgreen)](https://opencollective.com/gitea "Become a backer/sponsor of gitea") -[![](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT "License: MIT") -[![Contribute with Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod&color=green)](https://gitpod.io/#https://github.com/go-gitea/gitea) -[![](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com "Crowdin") - -[English](./README.md) | [简体中文](./README.zh-cn.md) - -## 目的 - -這個項目的目標是提供最簡單、最快速、最無痛的方式來設置自託管的 Git 服務。 - -由於 Gitea 是用 Go 語言編寫的,它可以在 Go 支援的所有平台和架構上運行,包括 Linux、macOS 和 Windows 的 x86、amd64、ARM 和 PowerPC 架構。這個項目自 2016 年 11 月從 [Gogs](https://gogs.io) [分叉](https://blog.gitea.com/welcome-to-gitea/) 而來,但已經有了很多變化。 - -在線演示可以訪問 [demo.gitea.com](https://demo.gitea.com)。 - -要訪問免費的 Gitea 服務(有一定數量的倉庫限制),可以訪問 [gitea.com](https://gitea.com/user/login)。 - -要快速部署您自己的專用 Gitea 實例,可以在 [cloud.gitea.com](https://cloud.gitea.com) 開始免費試用。 - -## 文件 - -您可以在我們的官方 [文件網站](https://docs.gitea.com/) 上找到全面的文件。 - -它包括安裝、管理、使用、開發、貢獻指南等,幫助您快速入門並有效地探索所有功能。 - -如果您有任何建議或想要貢獻,可以訪問 [文件倉庫](https://gitea.com/gitea/docs) - -## 構建 - -從源代碼樹的根目錄運行: - - TAGS="bindata" make build - -如果需要 SQLite 支援: - - TAGS="bindata sqlite sqlite_unlock_notify" make build - -`build` 目標分為兩個子目標: - -- `make backend` 需要 [Go Stable](https://go.dev/dl/),所需版本在 [go.mod](/go.mod) 中定義。 -- `make frontend` 需要 [Node.js LTS](https://nodejs.org/en/download/) 或更高版本。 - -需要互聯網連接來下載 go 和 npm 模塊。從包含預構建前端文件的官方源代碼壓縮包構建時,不會觸發 `frontend` 目標,因此可以在沒有 Node.js 的情況下構建。 - -更多信息:https://docs.gitea.com/installation/install-from-source - -## 使用 - -構建後,默認情況下會在源代碼樹的根目錄生成一個名為 `gitea` 的二進制文件。要運行它,請使用: - - ./gitea web - -> [!注意] -> 如果您對使用我們的 API 感興趣,我們提供了實驗性支援,並附有 [文件](https://docs.gitea.com/api)。 - -## 貢獻 - -預期的工作流程是:Fork -> Patch -> Push -> Pull Request - -> [!注意] -> -> 1. **在開始進行 Pull Request 之前,您必須閱讀 [貢獻者指南](CONTRIBUTING.md)。** -> 2. 如果您在項目中發現了漏洞,請私下寫信給 **security@gitea.io**。謝謝! - -## 翻譯 - -[![Crowdin](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com) - -翻譯通過 [Crowdin](https://translate.gitea.com) 進行。如果您想翻譯成新的語言,請在 Crowdin 項目中請求管理員添加新語言。 - -您也可以創建一個 issue 來添加語言,或者在 discord 的 #translation 頻道上詢問。如果您需要上下文或發現一些翻譯問題,可以在字符串上留言或在 Discord 上詢問。對於一般的翻譯問題,文檔中有一個部分。目前有點空,但我們希望隨著問題的出現而填充它。 - -更多信息請參閱 [文件](https://docs.gitea.com/contributing/localization)。 - -## 官方和第三方項目 - -我們提供了一個官方的 [go-sdk](https://gitea.com/gitea/go-sdk),一個名為 [tea](https://gitea.com/gitea/tea) 的 CLI 工具和一個 Gitea Action 的 [action runner](https://gitea.com/gitea/act_runner)。 - -我們在 [gitea/awesome-gitea](https://gitea.com/gitea/awesome-gitea) 維護了一個 Gitea 相關項目的列表,您可以在那裡發現更多的第三方項目,包括 SDK、插件、主題等。 - -## 通訊 - -[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea") - -如果您有任何文件未涵蓋的問題,可以在我們的 [Discord 服務器](https://discord.gg/Gitea) 上與我們聯繫,或者在 [discourse 論壇](https://forum.gitea.com/) 上創建帖子。 - -## 作者 - -- [維護者](https://github.com/orgs/go-gitea/people) -- [貢獻者](https://github.com/go-gitea/gitea/graphs/contributors) -- [翻譯者](options/locale/TRANSLATORS) - -## 支持者 - -感謝所有支持者! 🙏 [[成為支持者](https://opencollective.com/gitea#backer)] - - - -## 贊助商 - -通過成為贊助商來支持這個項目。您的標誌將顯示在這裡,並帶有鏈接到您的網站。 [[成為贊助商](https://opencollective.com/gitea#sponsor)] - - - - - - - - - - - - -## 常見問題 - -**Gitea 怎麼發音?** - -Gitea 的發音是 [/ɡɪ’ti:/](https://youtu.be/EM71-2uDAoY),就像 "gi-tea" 一樣,g 是硬音。 - -**為什麼這個項目沒有託管在 Gitea 實例上?** - -我們正在 [努力](https://github.com/go-gitea/gitea/issues/1029)。 - -**在哪裡可以找到安全補丁?** - -在 [發佈日誌](https://github.com/go-gitea/gitea/releases) 或 [變更日誌](https://github.com/go-gitea/gitea/blob/main/CHANGELOG.md) 中,搜索關鍵詞 `SECURITY` 以找到安全補丁。 - -## 許可證 - -這個項目是根據 MIT 許可證授權的。 -請參閱 [LICENSE](https://github.com/go-gitea/gitea/blob/main/LICENSE) 文件以獲取完整的許可證文本。 - -## 進一步信息 - -
-尋找界面概述?查看這裡! - -### 登錄/註冊頁面 - -![Login](https://dl.gitea.com/screenshots/login.png) -![Register](https://dl.gitea.com/screenshots/register.png) - -### 用戶儀表板 - -![Home](https://dl.gitea.com/screenshots/home.png) -![Issues](https://dl.gitea.com/screenshots/issues.png) -![Pull Requests](https://dl.gitea.com/screenshots/pull_requests.png) -![Milestones](https://dl.gitea.com/screenshots/milestones.png) - -### 用戶資料 - -![Profile](https://dl.gitea.com/screenshots/user_profile.png) - -### 探索 - -![Repos](https://dl.gitea.com/screenshots/explore_repos.png) -![Users](https://dl.gitea.com/screenshots/explore_users.png) -![Orgs](https://dl.gitea.com/screenshots/explore_orgs.png) - -### 倉庫 - -![Home](https://dl.gitea.com/screenshots/repo_home.png) -![Commits](https://dl.gitea.com/screenshots/repo_commits.png) -![Branches](https://dl.gitea.com/screenshots/repo_branches.png) -![Labels](https://dl.gitea.com/screenshots/repo_labels.png) -![Milestones](https://dl.gitea.com/screenshots/repo_milestones.png) -![Releases](https://dl.gitea.com/screenshots/repo_releases.png) -![Tags](https://dl.gitea.com/screenshots/repo_tags.png) - -#### 倉庫問題 - -![List](https://dl.gitea.com/screenshots/repo_issues.png) -![Issue](https://dl.gitea.com/screenshots/repo_issue.png) - -#### 倉庫拉取請求 - -![List](https://dl.gitea.com/screenshots/repo_pull_requests.png) -![Pull Request](https://dl.gitea.com/screenshots/repo_pull_request.png) -![File](https://dl.gitea.com/screenshots/repo_pull_request_file.png) -![Commits](https://dl.gitea.com/screenshots/repo_pull_request_commits.png) - -#### 倉庫操作 - -![List](https://dl.gitea.com/screenshots/repo_actions.png) -![Details](https://dl.gitea.com/screenshots/repo_actions_run.png) - -#### 倉庫活動 - -![Activity](https://dl.gitea.com/screenshots/repo_activity.png) -![Contributors](https://dl.gitea.com/screenshots/repo_contributors.png) -![Code Frequency](https://dl.gitea.com/screenshots/repo_code_frequency.png) -![Recent Commits](https://dl.gitea.com/screenshots/repo_recent_commits.png) - -### 組織 - -![Home](https://dl.gitea.com/screenshots/org_home.png) - -
diff --git a/README_ZH.md b/README_ZH.md new file mode 100644 index 0000000000..866b85e999 --- /dev/null +++ b/README_ZH.md @@ -0,0 +1,98 @@ +

+ + Gitea + +

+

Gitea - Git with a cup of tea

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Contribute with Gitpod + + + + + + + + + + +

+ +

+ View this document in English +

+ +## 目标 + +Gitea 的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用 Go 作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了 x86,amd64,还包括 ARM 和 PowerPC。 + +如果您想试用一下,请访问 [在线Demo](https://try.gitea.io/)! + +## 提示 + +1. **开始贡献代码之前请确保你已经看过了 [贡献者向导(英文)](CONTRIBUTING.md)**. +2. 所有的安全问题,请私下发送邮件给 **security@gitea.io**。谢谢! +3. 如果你要使用API,请参见 [API 文档](https://godoc.org/code.gitea.io/sdk/gitea). + +## 文档 + +关于如何安装请访问我们的 [文档站](https://docs.gitea.com/zh-cn/category/installation),如果没有找到对应的文档,你也可以通过 [Discord - 英文](https://discord.gg/gitea) 和 QQ群 328432459 来和我们交流。 + +## 贡献流程 + +Fork -> Patch -> Push -> Pull Request + +## 翻译 + +多语言翻译是基于Crowdin进行的. +[![Crowdin](https://badges.crowdin.net/gitea/localized.svg)](https://crowdin.com/project/gitea) + +## 作者 + +* [Maintainers](https://github.com/orgs/go-gitea/people) +* [Contributors](https://github.com/go-gitea/gitea/graphs/contributors) +* [Translators](options/locale/TRANSLATORS) + +## 授权许可 + +本项目采用 MIT 开源授权许可证,完整的授权说明已放置在 [LICENSE](https://github.com/go-gitea/gitea/blob/main/LICENSE) 文件中。 + +## 截图 + +|![Dashboard](https://dl.gitea.com/screenshots/home_timeline.png)|![User Profile](https://dl.gitea.com/screenshots/user_profile.png)|![Global Issues](https://dl.gitea.com/screenshots/global_issues.png)| +|:---:|:---:|:---:| +|![Branches](https://dl.gitea.com/screenshots/branches.png)|![Web Editor](https://dl.gitea.com/screenshots/web_editor.png)|![Activity](https://dl.gitea.com/screenshots/activity.png)| +|![New Migration](https://dl.gitea.com/screenshots/migration.png)|![Migrating](https://dl.gitea.com/screenshots/migration.gif)|![Pull Request View](https://image.ibb.co/e02dSb/6.png) +![Pull Request Dark](https://dl.gitea.com/screenshots/pull_requests_dark.png)|![Diff Review Dark](https://dl.gitea.com/screenshots/review_dark.png)|![Diff Dark](https://dl.gitea.com/screenshots/diff_dark.png)| diff --git a/SECURITY.md b/SECURITY.md index c9dbf859f5..5bee4a7f39 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -12,14 +12,14 @@ Please **DO NOT** file a public issue, instead send your report privately to `se ## Protecting Security Information -Due to the sensitive nature of security information, you can use the below GPG public key to encrypt your mail body. +Due to the sensitive nature of security information, you can use below GPG public key encrypt your mail body. -The PGP key is valid until July 9, 2025. +The PGP key is valid until June 24, 2024. ``` Key ID: 6FCD2D5B Key Type: RSA -Expires: 7/9/2025 +Expires: 6/24/2024 Key Size: 4096/4096 Fingerprint: 3DE0 3D1E 144A 7F06 9359 99DC AAFD 2381 6FCD 2D5B ``` @@ -40,20 +40,20 @@ q+pHZl24JYR0Kf3T/ZiOC0cGd2QJqpJtg5J6S/OqfX9NH6MsCczO8pUC1N/aHH2X CTme2nF56izORqDWKoiICteL3GpYsCV9nyCidcCmoQsS+DKvE86YhIhVIVWGRY2F lzpAjnN9/KLtQroutrm+Ft0mdjDiJUeFVl1cOHDhoyfCsQh62HumoyZoZvqzQd6e AbN11nq6aViMe2Q3je1AbiBnRnQSHxt1Tc8X4IshO3MQK1Sk7oPI6LA5oQARAQAB -tCJHaXRlYSBTZWN1cml0eSA8c2VjdXJpdHlAZ2l0ZWEuaW8+iQJXBBMBCABBAhsD -BQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAFiEEPeA9HhRKfwaTWZncqv0jgW/N -LVsFAmaMse0FCQW4fW8ACgkQqv0jgW/NLVtXLg/+PF4G9Jhlui15BTNlEBJAV2P/ -1QlAV2krk0fP7tykn0FR9RfGIfVV/kwC1f+ouosYPQDDevl9LWdUIM+g94DtNo2o -7ACpcL3morvt5lVGpIZHL8TbX0qmFRXL/pB/cB+K6IwYvh2mrbp2zH+r4SCRyFYq -BjgXYFTI1MylJ1ShAjU6Z+m3oJ+2xs5LzHS0X6zkTjzA2Zl4zQzciQ9T+wJcE7Zi -HXdM1+YMF8KGNP8J9Rpug5oNDJ98lgZirRY7c3A/1xmYBiPnULwuuymdqEZO7l70 -SeAlE1RWYX8kbOBnBb/KY4XwE3Vic1oEzc9DiPWVH1ElX86WNNsFzuyULiwoBoWg -pqZGhL9x1p5+46RGQSDczsHM7YGVtfYOiDo2PAVrmwsT0BnXnK8Oe3YIkvmUPEJu -OkLt0Z6A5n8pz8zhQzuApwBsK4ncJ8zTCpvz/pfKKqZC/Vnoh3gKGhDGvOZ+b5IJ -0kUTe2JsbnwFixDUMDtacQ1op8XOyLoLVmgqLn0+Pws4XPBlMof2bioFir3yHKnP -gNchsF1agrlSIo5GA8u4ga+IlCSfvFIKrl7+cxacKcJYt/vbOU5KcvVJI5EtHKCG -xfHjHY2ah1Qww7SxW6IXiRZZzPpsL2mBM2CD7N3qh9bV2s27wxYCdUodsIZbiyHe -oWPzfBnkmiAN8KlZxHm5Ag0EYrVn/gEQALrFLQjCR3GjuHSindz0rd3Fnx/t7Sen +tCJHaXRlYSBTZWN1cml0eSA8c2VjdXJpdHlAZ2l0ZWEuaW8+iQJXBBMBCABBFiEE +PeA9HhRKfwaTWZncqv0jgW/NLVsFAmK1Z/4CGwMFCQPCZwAFCwkIBwICIgIGFQoJ +CAsCBBYCAwECHgcCF4AACgkQqv0jgW/NLVvnyxAAhxyNnWzw/rQO2qhzqicmZM94 +njSbOg+U2qMBvCdaqCQQeC+uaMmMzkDPanUUmLcyCkWqfCjPNjeSXAkE9npepVJI +4HtmgxZQ94OU/h3CLbft+9GVRzUkVI29TSYGdvNtV2/BkNGoFFnKWQr119um0o6A +bgha2Uy5uY8o3ZIoiKkiHRaEoWIjjeBxJxYAojsZY4YElUmsQ3ik2joG6rhFesTa +ofVt/bL8G2xzpOG26WGIxBbqf2qjV6OtZ0hu/vtTPHeIWMLq0Mz0V3PEDQWfkGPE +i2RYxxYDs2xzJhSQWqTNVLSq0m5xTJnbHhQPfdCX4C2jvFKgLdfmytQq49S7jiJb +Z03HVOZ/PsyBlQfH9xJi06R5yQCMEA8h8Z5r3/NXW09kQ6OFRe6xshoTcxZGRPTo +srhwr3uPbmCRh+YEl7qBLU6+BC5k8IRTZXqhrj/aPJu3MxgbgwV8u3vLoFSXM2lb +a61FgeCQ0O7lkgVswwF0RppCaH9Ul3ZDapet/vCRg4NVwm9zOI/8q/Vj0FKA1GDR +JhRu8+Ce8zlFL65D34t+PprAzSeTlbv9um3x/ZIjCco7EEKSBylt+AZj/VyA6+e5 +kjOQwRRc6dFJWBcorsSI2dG+H+QMF7ZabzmeCcz1v9HjLOPzYHoZAHhCmSppWTvX +AJy6+lhfW2OUTqQeYSi5Ag0EYrVn/gEQALrFLQjCR3GjuHSindz0rd3Fnx/t7Sen T+p07yCSSoSlmnJHCQmwh4vfg1blyz0zZ4vkIhtpHsEgc+ZAG+WQXSsJ2iRz+eSN GwoOQl4XC3n+QWkc1ws+btr48+6UqXIQU+F8TPQyx/PIgi2nZXJB7f5+mjCqsk46 XvH4nTr4kJjuqMSR/++wvre2qNQRa/q/dTsK0OaN/mJsdX6Oi+aGNaQJUhIG7F+E @@ -64,20 +64,20 @@ qoExANj5lUTZPe8M50lI182FrcjAN7dClO3QI6pg7wy0erMxfFly3j8UQ91ysS9T s+GsP9I3cmWWQcKYxWHtE8xTXnNCVPFZQj2nwhJzae8ypfOtulBRA3dUKWGKuDH/ axFENhUsT397aOU3qkP/od4a64JyNIEo4CTTSPVeWd7njsGqli2U3A4xL2CcyYvt D/MWcMBGEoLSNTswwKdom4FaJpn5KThnK/T0bQcmJblJhoCtppXisbexZnCpuS0x -Zdlm2T14KJ3LABEBAAGJAjwEGAEIACYCGwwWIQQ94D0eFEp/BpNZmdyq/SOBb80t -WwUCZoyyjQUJBbh+DwAKCRCq/SOBb80tW18XD/9MXztmf01MT+1kZdBouZ/7Rp/7 -9kuqo//B1G+RXau4oFtPqb67kNe2WaIc3u5B73PUHsMf3i6z4ib2KbMhZZerLn0O -dRglcuPeNWmsASY3dH/XVG0cT0zvvWegagd12TJEl3Vs+7XNrOw4cwDj9L1+GH9m -kSt4uaANWn/6a3RvMRhiVEYuNwhAzcKaactPmYqrLJgoVLbRSDkgyHaMQ2jKgLxk -ifS/fvluGV0ub2Po6DJiqfRpd1tDvPhe9y1+r1WFDZsOcvTcZUfSt/7dXMGfqGu0 -2daVFlfeSXSALrDE5uc0UxodHCpP3sqRYDZevGLBRaaTkIjYXG/+N898+7K5WJF4 -xXOLWxM2cwGkG7eC9pugcDnBp9XlF7O+GBiZ05JUe5flXDQFZ+h3exjopu6KHF1B -RnzNy8LC0UKb+AuvRIOLV92a9Q9wGWU/jaVDu6nZ0umAeuSzxiHoDsonm0Fl9QAz -2/xCokebuoeLrEK7R2af3X86mqq3sVO4ax+HPYChzOaVQBiHUW/TAldWcldYYphR -/e2WsbmQfvCRtz/bZfo+aUVnrHNjzVMtF2SszdVmA/04Y8pS28MqtuRqhm5DPOOd -g1YeUywK5jRZ1twyo1kzJEFPLaoeaXaycsR1PMVBW0Urik5mrR/pOWq7PPoZoKb2 -lXYLE8bwkuQTmsyL1g== -=9i7d +Zdlm2T14KJ3LABEBAAGJAjwEGAEIACYWIQQ94D0eFEp/BpNZmdyq/SOBb80tWwUC +YrVn/gIbDAUJA8JnAAAKCRCq/SOBb80tWyTBD/9AGpW6QoDF7zYjHAozH9S5RGCA +Y7E82dG/0xmFUwPprAG0BKmmgU6TiipyVGmKIXGYYYU92pMnbvXkYQMoa+WJNncN +D3fY52UeXeffTf4cFpStlzi9xgYtOLhFamzYu/4xhkjOX+xhOSXscCiFRyT8cF3B +O6c5BHU+Zj0/rGPgOyPUbx7l7B9MubB/41nNX35k08e+8T3wtWDb4XF+15HnRfva +6fblO8wgU25Orv2Rm1jnKGa9DxJ8nE40IMrqDapENtDuL+zKJsvR0+ptWvEyL56U +GtJJG5un6mXiLKuRQT0DEv4MdZRHDgDstDnqcbEiazVEbUuvhZZob6lRY2A19m1+ +7zfnDxkhqCA1RCnv4fdvcPdCMMFHwLpdhjgW0aI/uwgwrvsEz5+JRlnLvdQHlPAg +q7l2fGcBSpz9U0ayyfRPjPntsNCtZl1UDxGLeciPkZhyG84zEWQbk/j52ZpRN+Ik +ALpRLa8RBFmFSmXDUmwQrmm1EmARyQXwweKU31hf8ZGbCp2lPuRYm1LuGiirXSVP +GysjRAJgW+VRpBKOzFQoUAUbReVWSaCwT8s17THzf71DdDb6CTj31jMLLYWwBpA/ +i73DgobDZMIGEZZC1EKqza8eh11xfyHFzGec03tbh+lIen+5IiRtWiEWkDS9ll0G +zgS/ZdziCvdAutqnGA== +=gZWO -----END PGP PUBLIC KEY BLOCK----- ``` diff --git a/assets/go-licenses.json b/assets/go-licenses.json index d961444239..ee1e503f2a 100644 --- a/assets/go-licenses.json +++ b/assets/go-licenses.json @@ -24,21 +24,11 @@ "path": "codeberg.org/gusted/mcaptcha/LICENSE", "licenseText": "Copyright © 2022 William Zijl\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" }, - { - "name": "connectrpc.com/connect", - "path": "connectrpc.com/connect/LICENSE", - "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2021-2024 The Connect Authors\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, { "name": "dario.cat/mergo", "path": "dario.cat/mergo/LICENSE", "licenseText": "Copyright (c) 2013 Dario Castañé. All rights reserved.\nCopyright (c) 2012 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, - { - "name": "filippo.io/edwards25519", - "path": "filippo.io/edwards25519/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" - }, { "name": "git.sr.ht/~mariusor/go-xsd-duration", "path": "git.sr.ht/~mariusor/go-xsd-duration/LICENSE", @@ -74,56 +64,46 @@ "path": "gitea.com/lunny/levelqueue/LICENSE", "licenseText": "Copyright (c) 2019 Lunny Xiao\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n" }, - { - "name": "github.com/42wim/httpsig", - "path": "github.com/42wim/httpsig/LICENSE", - "licenseText": "BSD 3-Clause License\n\nCopyright (c) 2018, go-fed\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" - }, { "name": "github.com/42wim/sshsig", "path": "github.com/42wim/sshsig/LICENSE", "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, - { - "name": "github.com/Azure/azure-sdk-for-go/sdk/azcore", - "path": "github.com/Azure/azure-sdk-for-go/sdk/azcore/LICENSE.txt", - "licenseText": "MIT License\n\nCopyright (c) Microsoft Corporation.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE\n" - }, - { - "name": "github.com/Azure/azure-sdk-for-go/sdk/internal", - "path": "github.com/Azure/azure-sdk-for-go/sdk/internal/LICENSE.txt", - "licenseText": "MIT License\n\nCopyright (c) Microsoft Corporation.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE\n" - }, - { - "name": "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob", - "path": "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/LICENSE.txt", - "licenseText": " MIT License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE" - }, { "name": "github.com/Azure/go-ntlmssp", "path": "github.com/Azure/go-ntlmssp/LICENSE", "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2016 Microsoft\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" }, + { + "name": "github.com/ClickHouse/ch-go", + "path": "github.com/ClickHouse/ch-go/LICENSE", + "licenseText": "Copyright 2016-2023 ClickHouse, Inc.\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2016-2023 ClickHouse, Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, + { + "name": "github.com/ClickHouse/clickhouse-go/v2", + "path": "github.com/ClickHouse/clickhouse-go/v2/LICENSE", + "licenseText": "Copyright 2016-2023 ClickHouse, Inc.\n\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2016-2023 ClickHouse, Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "github.com/DataDog/zstd", "path": "github.com/DataDog/zstd/LICENSE", "licenseText": "Simplified BSD License\n\nCopyright (c) 2016, Datadog \u003cinfo@datadoghq.com\u003e\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n * Neither the name of the copyright holder nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, + { + "name": "github.com/NYTimes/gziphandler", + "path": "github.com/NYTimes/gziphandler/LICENSE", + "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2016-2017 The New York Times Company\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "github.com/ProtonMail/go-crypto", "path": "github.com/ProtonMail/go-crypto/LICENSE", "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { - "name": "github.com/RoaringBitmap/roaring/v2", - "path": "github.com/RoaringBitmap/roaring/v2/LICENSE", + "name": "github.com/RoaringBitmap/roaring", + "path": "github.com/RoaringBitmap/roaring/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2016 by the authors\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n================================================================================\n\nPortions of runcontainer.go are from the Go standard library, which is licensed\nunder:\n\nCopyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following disclaimer\n in the documentation and/or other materials provided with the\n distribution.\n * Neither the name of Google Inc. nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, - { - "name": "github.com/SaveTheRbtz/zstd-seekable-format-go/pkg", - "path": "github.com/SaveTheRbtz/zstd-seekable-format-go/pkg/LICENSE", - "licenseText": "MIT License\n\nCopyright (c) 2022 Alexey Ivanov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" - }, { "name": "github.com/alecthomas/chroma/v2", "path": "github.com/alecthomas/chroma/v2/COPYING", @@ -139,46 +119,6 @@ "path": "github.com/anmitsu/go-shlex/LICENSE", "licenseText": "Copyright (c) anmitsu \u003canmitsu.s@gmail.com\u003e\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" }, - { - "name": "github.com/aws/aws-sdk-go-v2", - "path": "github.com/aws/aws-sdk-go-v2/LICENSE.txt", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, - { - "name": "github.com/aws/aws-sdk-go-v2/credentials", - "path": "github.com/aws/aws-sdk-go-v2/credentials/LICENSE.txt", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, - { - "name": "github.com/aws/aws-sdk-go-v2/internal/configsources", - "path": "github.com/aws/aws-sdk-go-v2/internal/configsources/LICENSE.txt", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, - { - "name": "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2", - "path": "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/LICENSE.txt", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, - { - "name": "github.com/aws/aws-sdk-go-v2/internal/sync/singleflight", - "path": "github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n" - }, - { - "name": "github.com/aws/aws-sdk-go-v2/service/codecommit", - "path": "github.com/aws/aws-sdk-go-v2/service/codecommit/LICENSE.txt", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, - { - "name": "github.com/aws/smithy-go", - "path": "github.com/aws/smithy-go/LICENSE", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n" - }, - { - "name": "github.com/aws/smithy-go/internal/sync/singleflight", - "path": "github.com/aws/smithy-go/internal/sync/singleflight/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n" - }, { "name": "github.com/aymerick/douceur", "path": "github.com/aymerick/douceur/LICENSE", @@ -284,21 +224,6 @@ "path": "github.com/blevesearch/zapx/v15/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License." }, - { - "name": "github.com/blevesearch/zapx/v16", - "path": "github.com/blevesearch/zapx/v16/LICENSE", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License." - }, - { - "name": "github.com/bmatcuk/doublestar/v4", - "path": "github.com/bmatcuk/doublestar/v4/LICENSE", - "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2014 Bob Matcuk\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n" - }, - { - "name": "github.com/bohde/codel", - "path": "github.com/bohde/codel/LICENSE", - "licenseText": "BSD 3-Clause License\n\nCopyright (c) 2018, Rowan Bohde\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" - }, { "name": "github.com/boombuler/barcode", "path": "github.com/boombuler/barcode/LICENSE", @@ -309,6 +234,11 @@ "path": "github.com/bradfitz/gomemcache/memcache/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, + { + "name": "github.com/bufbuild/connect-go", + "path": "github.com/bufbuild/connect-go/LICENSE", + "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2021-2022 Buf Technologies, Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "github.com/buildkite/terminal-to-html/v3", "path": "github.com/buildkite/terminal-to-html/v3/LICENSE", @@ -319,11 +249,6 @@ "path": "github.com/caddyserver/certmagic/LICENSE.txt", "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright {yyyy} {name of copyright owner}\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, - { - "name": "github.com/caddyserver/zerossl", - "path": "github.com/caddyserver/zerossl/LICENSE", - "licenseText": "MIT License\n\nCopyright (c) 2024 Matthew Holt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." - }, { "name": "github.com/cention-sany/utf7", "path": "github.com/cention-sany/utf7/LICENSE", @@ -334,11 +259,6 @@ "path": "github.com/cespare/xxhash/v2/LICENSE.txt", "licenseText": "Copyright (c) 2016 Caleb Spare\n\nMIT License\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" }, - { - "name": "github.com/charmbracelet/git-lfs-transfer/transfer", - "path": "github.com/charmbracelet/git-lfs-transfer/transfer/LICENSE", - "licenseText": "MIT License\n\nCopyright (c) 2022-2023 Charmbracelet, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" - }, { "name": "github.com/chi-middleware/proxy", "path": "github.com/chi-middleware/proxy/LICENSE", @@ -372,13 +292,18 @@ { "name": "github.com/cyphar/filepath-securejoin", "path": "github.com/cyphar/filepath-securejoin/LICENSE", - "licenseText": "Copyright (C) 2014-2015 Docker Inc \u0026 Go Authors. All rights reserved.\nCopyright (C) 2017-2024 SUSE LLC. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (C) 2014-2015 Docker Inc \u0026 Go Authors. All rights reserved.\nCopyright (C) 2017 SUSE LLC. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "github.com/davecgh/go-spew/spew", "path": "github.com/davecgh/go-spew/spew/LICENSE", "licenseText": "ISC License\n\nCopyright (c) 2012-2016 Dave Collins \u003cdave@davec.name\u003e\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\nOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n" }, + { + "name": "github.com/denisenkom/go-mssqldb", + "path": "github.com/denisenkom/go-mssqldb/LICENSE.txt", + "licenseText": "Copyright (c) 2012 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + }, { "name": "github.com/dgryski/go-rendezvous", "path": "github.com/dgryski/go-rendezvous/LICENSE", @@ -459,11 +384,6 @@ "path": "github.com/fxamacker/cbor/v2/LICENSE", "licenseText": "MIT License\n\nCopyright (c) 2019-present Faye Amacker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." }, - { - "name": "github.com/git-lfs/pktline", - "path": "github.com/git-lfs/pktline/LICENSE.md", - "licenseText": "MIT License\n\nCopyright (c) 2014- GitHub, Inc. and Git LFS contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nNote that Git LFS uses components from other Go modules (included in `vendor/`)\nwhich are under different licenses. See those LICENSE files for details.\n" - }, { "name": "github.com/gliderlabs/ssh", "path": "github.com/gliderlabs/ssh/LICENSE", @@ -509,6 +429,16 @@ "path": "github.com/go-enry/go-enry/v2/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License." }, + { + "name": "github.com/go-faster/city", + "path": "github.com/go-faster/city/LICENSE", + "licenseText": "MIT License\n\nCopyright (c) 2018 tenfy\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + }, + { + "name": "github.com/go-faster/errors", + "path": "github.com/go-faster/errors/LICENSE", + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + }, { "name": "github.com/go-fed/httpsig", "path": "github.com/go-fed/httpsig/LICENSE", @@ -529,26 +459,21 @@ "path": "github.com/go-git/go-git/v5/LICENSE", "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2018 Sourced Technologies, S.L.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, - { - "name": "github.com/go-ini/ini", - "path": "github.com/go-ini/ini/LICENSE", - "licenseText": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the terms and conditions for use, reproduction, and\ndistribution as defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or entity authorized by the copyright\nowner that is granting the License.\n\n\"Legal Entity\" shall mean the union of the acting entity and all other entities\nthat control, are controlled by, or are under common control with that entity.\nFor the purposes of this definition, \"control\" means (i) the power, direct or\nindirect, to cause the direction or management of such entity, whether by\ncontract or otherwise, or (ii) ownership of fifty percent (50%) or more of the\noutstanding shares, or (iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising\npermissions granted by this License.\n\n\"Source\" form shall mean the preferred form for making modifications, including\nbut not limited to software source code, documentation source, and configuration\nfiles.\n\n\"Object\" form shall mean any form resulting from mechanical transformation or\ntranslation of a Source form, including but not limited to compiled object code,\ngenerated documentation, and conversions to other media types.\n\n\"Work\" shall mean the work of authorship, whether in Source or Object form, made\navailable under the License, as indicated by a copyright notice that is included\nin or attached to the work (an example is provided in the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in Source or Object form, that\nis based on (or derived from) the Work and for which the editorial revisions,\nannotations, elaborations, or other modifications represent, as a whole, an\noriginal work of authorship. For the purposes of this License, Derivative Works\nshall not include works that remain separable from, or merely link (or bind by\nname) to the interfaces of, the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work of authorship, including the original version\nof the Work and any modifications or additions to that Work or Derivative Works\nthereof, that is intentionally submitted to Licensor for inclusion in the Work\nby the copyright owner or by an individual or Legal Entity authorized to submit\non behalf of the copyright owner. For the purposes of this definition,\n\"submitted\" means any form of electronic, verbal, or written communication sent\nto the Licensor or its representatives, including but not limited to\ncommunication on electronic mailing lists, source code control systems, and\nissue tracking systems that are managed by, or on behalf of, the Licensor for\nthe purpose of discussing and improving the Work, but excluding communication\nthat is conspicuously marked or otherwise designated in writing by the copyright\nowner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf\nof whom a Contribution has been received by Licensor and subsequently\nincorporated within the Work.\n\n2. Grant of Copyright License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable copyright license to reproduce, prepare Derivative Works of,\npublicly display, publicly perform, sublicense, and distribute the Work and such\nDerivative Works in Source or Object form.\n\n3. Grant of Patent License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable (except as stated in this section) patent license to make, have\nmade, use, offer to sell, sell, import, and otherwise transfer the Work, where\nsuch license applies only to those patent claims licensable by such Contributor\nthat are necessarily infringed by their Contribution(s) alone or by combination\nof their Contribution(s) with the Work to which such Contribution(s) was\nsubmitted. If You institute patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Work or a\nContribution incorporated within the Work constitutes direct or contributory\npatent infringement, then any patent licenses granted to You under this License\nfor that Work shall terminate as of the date such litigation is filed.\n\n4. Redistribution.\n\nYou may reproduce and distribute copies of the Work or Derivative Works thereof\nin any medium, with or without modifications, and in Source or Object form,\nprovided that You meet the following conditions:\n\nYou must give any other recipients of the Work or Derivative Works a copy of\nthis License; and\nYou must cause any modified files to carry prominent notices stating that You\nchanged the files; and\nYou must retain, in the Source form of any Derivative Works that You distribute,\nall copyright, patent, trademark, and attribution notices from the Source form\nof the Work, excluding those notices that do not pertain to any part of the\nDerivative Works; and\nIf the Work includes a \"NOTICE\" text file as part of its distribution, then any\nDerivative Works that You distribute must include a readable copy of the\nattribution notices contained within such NOTICE file, excluding those notices\nthat do not pertain to any part of the Derivative Works, in at least one of the\nfollowing places: within a NOTICE text file distributed as part of the\nDerivative Works; within the Source form or documentation, if provided along\nwith the Derivative Works; or, within a display generated by the Derivative\nWorks, if and wherever such third-party notices normally appear. The contents of\nthe NOTICE file are for informational purposes only and do not modify the\nLicense. You may add Your own attribution notices within Derivative Works that\nYou distribute, alongside or as an addendum to the NOTICE text from the Work,\nprovided that such additional attribution notices cannot be construed as\nmodifying the License.\nYou may add Your own copyright statement to Your modifications and may provide\nadditional or different license terms and conditions for use, reproduction, or\ndistribution of Your modifications, or for any such Derivative Works as a whole,\nprovided Your use, reproduction, and distribution of the Work otherwise complies\nwith the conditions stated in this License.\n\n5. Submission of Contributions.\n\nUnless You explicitly state otherwise, any Contribution intentionally submitted\nfor inclusion in the Work by You to the Licensor shall be under the terms and\nconditions of this License, without any additional terms or conditions.\nNotwithstanding the above, nothing herein shall supersede or modify the terms of\nany separate license agreement you may have executed with Licensor regarding\nsuch Contributions.\n\n6. Trademarks.\n\nThis License does not grant permission to use the trade names, trademarks,\nservice marks, or product names of the Licensor, except as required for\nreasonable and customary use in describing the origin of the Work and\nreproducing the content of the NOTICE file.\n\n7. Disclaimer of Warranty.\n\nUnless required by applicable law or agreed to in writing, Licensor provides the\nWork (and each Contributor provides its Contributions) on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,\nincluding, without limitation, any warranties or conditions of TITLE,\nNON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are\nsolely responsible for determining the appropriateness of using or\nredistributing the Work and assume any risks associated with Your exercise of\npermissions under this License.\n\n8. Limitation of Liability.\n\nIn no event and under no legal theory, whether in tort (including negligence),\ncontract, or otherwise, unless required by applicable law (such as deliberate\nand grossly negligent acts) or agreed to in writing, shall any Contributor be\nliable to You for damages, including any direct, indirect, special, incidental,\nor consequential damages of any character arising as a result of this License or\nout of the use or inability to use the Work (including but not limited to\ndamages for loss of goodwill, work stoppage, computer failure or malfunction, or\nany and all other commercial damages or losses), even if such Contributor has\nbeen advised of the possibility of such damages.\n\n9. Accepting Warranty or Additional Liability.\n\nWhile redistributing the Work or Derivative Works thereof, You may choose to\noffer, and charge a fee for, acceptance of support, warranty, indemnity, or\nother liability obligations and/or rights consistent with this License. However,\nin accepting such obligations, You may act only on Your own behalf and on Your\nsole responsibility, not on behalf of any other Contributor, and only if You\nagree to indemnify, defend, and hold each Contributor harmless for any liability\nincurred by, or claims asserted against, such Contributor by reason of your\naccepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work\n\nTo apply the Apache License to your work, attach the following boilerplate\nnotice, with the fields enclosed by brackets \"[]\" replaced with your own\nidentifying information. (Don't include the brackets!) The text should be\nenclosed in the appropriate comment syntax for the file format. We also\nrecommend that a file or class name and description of purpose be included on\nthe same \"printed page\" as the copyright notice for easier identification within\nthird-party archives.\n\n Copyright 2014 Unknwon\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, { "name": "github.com/go-ldap/ldap/v3", "path": "github.com/go-ldap/ldap/v3/LICENSE", - "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2011-2015 Michael Mitton (mmitton@gmail.com)\nPortions copyright (c) 2015-2024 go-ldap Authors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" - }, - { - "name": "github.com/go-redsync/redsync/v4", - "path": "github.com/go-redsync/redsync/v4/LICENSE", - "licenseText": "Copyright (c) 2023, Mahmud Ridwan\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the Redsync nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2011-2015 Michael Mitton (mmitton@gmail.com)\nPortions copyright (c) 2015-2016 go-ldap Authors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" }, { "name": "github.com/go-sql-driver/mysql", "path": "github.com/go-sql-driver/mysql/LICENSE", "licenseText": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\"\n means each individual or legal entity that creates, contributes to\n the creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n means the combination of the Contributions of others (if any) used\n by a Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n means Source Code Form to which the initial Contributor has attached\n the notice in Exhibit A, the Executable Form of such Source Code\n Form, and Modifications of such Source Code Form, in each case\n including portions thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n means\n\n (a) that the initial Contributor has attached the notice described\n in Exhibit B to the Covered Software; or\n\n (b) that the Covered Software was made available under the terms of\n version 1.1 or earlier of the License, but not also under the\n terms of a Secondary License.\n\n1.6. \"Executable Form\"\n means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n means a work that combines Covered Software with other material, in \n a separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n means this document.\n\n1.9. \"Licensable\"\n means having the right to grant, to the maximum extent possible,\n whether at the time of the initial grant or subsequently, any and\n all of the rights conveyed by this License.\n\n1.10. \"Modifications\"\n means any of the following:\n\n (a) any file in Source Code Form that results from an addition to,\n deletion from, or modification of the contents of Covered\n Software; or\n\n (b) any new file in Source Code Form that contains any Covered\n Software.\n\n1.11. \"Patent Claims\" of a Contributor\n means any patent claim(s), including without limitation, method,\n process, and apparatus claims, in any patent Licensable by such\n Contributor that would be infringed, but for the grant of the\n License, by the making, using, selling, offering for sale, having\n made, import, or transfer of either its Contributions or its\n Contributor Version.\n\n1.12. \"Secondary License\"\n means either the GNU General Public License, Version 2.0, the GNU\n Lesser General Public License, Version 2.1, the GNU Affero General\n Public License, Version 3.0, or any later versions of those\n licenses.\n\n1.13. \"Source Code Form\"\n means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n means an individual or a legal entity exercising rights under this\n License. For legal entities, \"You\" includes any entity that\n controls, is controlled by, or is under common control with You. For\n purposes of this definition, \"control\" means (a) the power, direct\n or indirect, to cause the direction or management of such entity,\n whether by contract or otherwise, or (b) ownership of more than\n fifty percent (50%) of the outstanding shares or beneficial\n ownership of such entity.\n\n2. License Grants and Conditions\n--------------------------------\n\n2.1. Grants\n\nEach Contributor hereby grants You a world-wide, royalty-free,\nnon-exclusive license:\n\n(a) under intellectual property rights (other than patent or trademark)\n Licensable by such Contributor to use, reproduce, make available,\n modify, display, perform, distribute, and otherwise exploit its\n Contributions, either on an unmodified basis, with Modifications, or\n as part of a Larger Work; and\n\n(b) under Patent Claims of such Contributor to make, use, sell, offer\n for sale, have made, import, and otherwise transfer either its\n Contributions or its Contributor Version.\n\n2.2. Effective Date\n\nThe licenses granted in Section 2.1 with respect to any Contribution\nbecome effective for each Contribution on the date the Contributor first\ndistributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\nThe licenses granted in this Section 2 are the only rights granted under\nthis License. No additional rights or licenses will be implied from the\ndistribution or licensing of Covered Software under this License.\nNotwithstanding Section 2.1(b) above, no patent license is granted by a\nContributor:\n\n(a) for any code that a Contributor has removed from Covered Software;\n or\n\n(b) for infringements caused by: (i) Your and any other third party's\n modifications of Covered Software, or (ii) the combination of its\n Contributions with other software (except as part of its Contributor\n Version); or\n\n(c) under Patent Claims infringed by Covered Software in the absence of\n its Contributions.\n\nThis License does not grant any rights in the trademarks, service marks,\nor logos of any Contributor (except as may be necessary to comply with\nthe notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\nNo Contributor makes additional grants as a result of Your choice to\ndistribute the Covered Software under a subsequent version of this\nLicense (see Section 10.2) or under the terms of a Secondary License (if\npermitted under the terms of Section 3.3).\n\n2.5. Representation\n\nEach Contributor represents that the Contributor believes its\nContributions are its original creation(s) or it has sufficient rights\nto grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\nThis License is not intended to limit any rights You have under\napplicable copyright doctrines of fair use, fair dealing, or other\nequivalents.\n\n2.7. Conditions\n\nSections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted\nin Section 2.1.\n\n3. Responsibilities\n-------------------\n\n3.1. Distribution of Source Form\n\nAll distribution of Covered Software in Source Code Form, including any\nModifications that You create or to which You contribute, must be under\nthe terms of this License. You must inform recipients that the Source\nCode Form of the Covered Software is governed by the terms of this\nLicense, and how they can obtain a copy of this License. You may not\nattempt to alter or restrict the recipients' rights in the Source Code\nForm.\n\n3.2. Distribution of Executable Form\n\nIf You distribute Covered Software in Executable Form then:\n\n(a) such Covered Software must also be made available in Source Code\n Form, as described in Section 3.1, and You must inform recipients of\n the Executable Form how they can obtain a copy of such Source Code\n Form by reasonable means in a timely manner, at a charge no more\n than the cost of distribution to the recipient; and\n\n(b) You may distribute such Executable Form under the terms of this\n License, or sublicense it under different terms, provided that the\n license for the Executable Form does not attempt to limit or alter\n the recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\nYou may create and distribute a Larger Work under terms of Your choice,\nprovided that You also comply with the requirements of this License for\nthe Covered Software. If the Larger Work is a combination of Covered\nSoftware with a work governed by one or more Secondary Licenses, and the\nCovered Software is not Incompatible With Secondary Licenses, this\nLicense permits You to additionally distribute such Covered Software\nunder the terms of such Secondary License(s), so that the recipient of\nthe Larger Work may, at their option, further distribute the Covered\nSoftware under the terms of either this License or such Secondary\nLicense(s).\n\n3.4. Notices\n\nYou may not remove or alter the substance of any license notices\n(including copyright notices, patent notices, disclaimers of warranty,\nor limitations of liability) contained within the Source Code Form of\nthe Covered Software, except that You may alter any license notices to\nthe extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\nYou may choose to offer, and to charge a fee for, warranty, support,\nindemnity or liability obligations to one or more recipients of Covered\nSoftware. However, You may do so only on Your own behalf, and not on\nbehalf of any Contributor. You must make it absolutely clear that any\nsuch warranty, support, indemnity, or liability obligation is offered by\nYou alone, and You hereby agree to indemnify every Contributor for any\nliability incurred by such Contributor as a result of warranty, support,\nindemnity or liability terms You offer. You may include additional\ndisclaimers of warranty and limitations of liability specific to any\njurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n---------------------------------------------------\n\nIf it is impossible for You to comply with any of the terms of this\nLicense with respect to some or all of the Covered Software due to\nstatute, judicial order, or regulation then You must: (a) comply with\nthe terms of this License to the maximum extent possible; and (b)\ndescribe the limitations and the code they affect. Such description must\nbe placed in a text file included with all distributions of the Covered\nSoftware under this License. Except to the extent prohibited by statute\nor regulation, such description must be sufficiently detailed for a\nrecipient of ordinary skill to be able to understand it.\n\n5. Termination\n--------------\n\n5.1. The rights granted under this License will terminate automatically\nif You fail to comply with any of its terms. However, if You become\ncompliant, then the rights granted under this License from a particular\nContributor are reinstated (a) provisionally, unless and until such\nContributor explicitly and finally terminates Your grants, and (b) on an\nongoing basis, if such Contributor fails to notify You of the\nnon-compliance by some reasonable means prior to 60 days after You have\ncome back into compliance. Moreover, Your grants from a particular\nContributor are reinstated on an ongoing basis if such Contributor\nnotifies You of the non-compliance by some reasonable means, this is the\nfirst time You have received notice of non-compliance with this License\nfrom such Contributor, and You become compliant prior to 30 days after\nYour receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\ninfringement claim (excluding declaratory judgment actions,\ncounter-claims, and cross-claims) alleging that a Contributor Version\ndirectly or indirectly infringes any patent, then the rights granted to\nYou by any and all Contributors for the Covered Software under Section\n2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all\nend user license agreements (excluding distributors and resellers) which\nhave been validly granted by You or Your distributors under this License\nprior to termination shall survive termination.\n\n************************************************************************\n* *\n* 6. Disclaimer of Warranty *\n* ------------------------- *\n* *\n* Covered Software is provided under this License on an \"as is\" *\n* basis, without warranty of any kind, either expressed, implied, or *\n* statutory, including, without limitation, warranties that the *\n* Covered Software is free of defects, merchantable, fit for a *\n* particular purpose or non-infringing. The entire risk as to the *\n* quality and performance of the Covered Software is with You. *\n* Should any Covered Software prove defective in any respect, You *\n* (not any Contributor) assume the cost of any necessary servicing, *\n* repair, or correction. This disclaimer of warranty constitutes an *\n* essential part of this License. No use of any Covered Software is *\n* authorized under this License except under this disclaimer. *\n* *\n************************************************************************\n\n************************************************************************\n* *\n* 7. Limitation of Liability *\n* -------------------------- *\n* *\n* Under no circumstances and under no legal theory, whether tort *\n* (including negligence), contract, or otherwise, shall any *\n* Contributor, or anyone who distributes Covered Software as *\n* permitted above, be liable to You for any direct, indirect, *\n* special, incidental, or consequential damages of any character *\n* including, without limitation, damages for lost profits, loss of *\n* goodwill, work stoppage, computer failure or malfunction, or any *\n* and all other commercial damages or losses, even if such party *\n* shall have been informed of the possibility of such damages. This *\n* limitation of liability shall not apply to liability for death or *\n* personal injury resulting from such party's negligence to the *\n* extent applicable law prohibits such limitation. Some *\n* jurisdictions do not allow the exclusion or limitation of *\n* incidental or consequential damages, so this exclusion and *\n* limitation may not apply to You. *\n* *\n************************************************************************\n\n8. Litigation\n-------------\n\nAny litigation relating to this License may be brought only in the\ncourts of a jurisdiction where the defendant maintains its principal\nplace of business and such litigation shall be governed by laws of that\njurisdiction, without reference to its conflict-of-law provisions.\nNothing in this Section shall prevent a party's ability to bring\ncross-claims or counter-claims.\n\n9. Miscellaneous\n----------------\n\nThis License represents the complete agreement concerning the subject\nmatter hereof. If any provision of this License is held to be\nunenforceable, such provision shall be reformed only to the extent\nnecessary to make it enforceable. Any law or regulation which provides\nthat the language of a contract shall be construed against the drafter\nshall not be used to construe this License against a Contributor.\n\n10. Versions of the License\n---------------------------\n\n10.1. New Versions\n\nMozilla Foundation is the license steward. Except as provided in Section\n10.3, no one other than the license steward has the right to modify or\npublish new versions of this License. Each version will be given a\ndistinguishing version number.\n\n10.2. Effect of New Versions\n\nYou may distribute the Covered Software under the terms of the version\nof the License under which You originally received the Covered Software,\nor under the terms of any subsequent version published by the license\nsteward.\n\n10.3. Modified Versions\n\nIf you create software not governed by this License, and you want to\ncreate a new license for such software, you may create and use a\nmodified version of this License if you rename the license and remove\nany references to the name of the license steward (except to note that\nsuch modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\nLicenses\n\nIf You choose to distribute Source Code Form that is Incompatible With\nSecondary Licenses under the terms of this version of the License, the\nnotice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n-------------------------------------------\n\n This Source Code Form is subject to the terms of the Mozilla Public\n License, v. 2.0. If a copy of the MPL was not distributed with this\n file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular\nfile, then You may include the notice in a location (such as a LICENSE\nfile in a relevant directory) where a recipient would be likely to look\nfor such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n---------------------------------------------------------\n\n This Source Code Form is \"Incompatible With Secondary Licenses\", as\n defined by the Mozilla Public License, v. 2.0.\n" }, + { + "name": "github.com/go-testfixtures/testfixtures/v3", + "path": "github.com/go-testfixtures/testfixtures/v3/LICENSE", + "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2016 Andrey Nering\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + }, { "name": "github.com/go-webauthn/webauthn", "path": "github.com/go-webauthn/webauthn/LICENSE", @@ -599,14 +524,19 @@ "path": "github.com/golang-sql/sqlexp/LICENSE", "licenseText": "Copyright (c) 2017 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, + { + "name": "github.com/golang/geo", + "path": "github.com/golang/geo/LICENSE", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "github.com/golang/groupcache/lru", "path": "github.com/golang/groupcache/lru/LICENSE", "licenseText": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the terms and conditions for use, reproduction, and\ndistribution as defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or entity authorized by the copyright\nowner that is granting the License.\n\n\"Legal Entity\" shall mean the union of the acting entity and all other entities\nthat control, are controlled by, or are under common control with that entity.\nFor the purposes of this definition, \"control\" means (i) the power, direct or\nindirect, to cause the direction or management of such entity, whether by\ncontract or otherwise, or (ii) ownership of fifty percent (50%) or more of the\noutstanding shares, or (iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising\npermissions granted by this License.\n\n\"Source\" form shall mean the preferred form for making modifications, including\nbut not limited to software source code, documentation source, and configuration\nfiles.\n\n\"Object\" form shall mean any form resulting from mechanical transformation or\ntranslation of a Source form, including but not limited to compiled object code,\ngenerated documentation, and conversions to other media types.\n\n\"Work\" shall mean the work of authorship, whether in Source or Object form, made\navailable under the License, as indicated by a copyright notice that is included\nin or attached to the work (an example is provided in the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in Source or Object form, that\nis based on (or derived from) the Work and for which the editorial revisions,\nannotations, elaborations, or other modifications represent, as a whole, an\noriginal work of authorship. For the purposes of this License, Derivative Works\nshall not include works that remain separable from, or merely link (or bind by\nname) to the interfaces of, the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work of authorship, including the original version\nof the Work and any modifications or additions to that Work or Derivative Works\nthereof, that is intentionally submitted to Licensor for inclusion in the Work\nby the copyright owner or by an individual or Legal Entity authorized to submit\non behalf of the copyright owner. For the purposes of this definition,\n\"submitted\" means any form of electronic, verbal, or written communication sent\nto the Licensor or its representatives, including but not limited to\ncommunication on electronic mailing lists, source code control systems, and\nissue tracking systems that are managed by, or on behalf of, the Licensor for\nthe purpose of discussing and improving the Work, but excluding communication\nthat is conspicuously marked or otherwise designated in writing by the copyright\nowner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf\nof whom a Contribution has been received by Licensor and subsequently\nincorporated within the Work.\n\n2. Grant of Copyright License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable copyright license to reproduce, prepare Derivative Works of,\npublicly display, publicly perform, sublicense, and distribute the Work and such\nDerivative Works in Source or Object form.\n\n3. Grant of Patent License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable (except as stated in this section) patent license to make, have\nmade, use, offer to sell, sell, import, and otherwise transfer the Work, where\nsuch license applies only to those patent claims licensable by such Contributor\nthat are necessarily infringed by their Contribution(s) alone or by combination\nof their Contribution(s) with the Work to which such Contribution(s) was\nsubmitted. If You institute patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Work or a\nContribution incorporated within the Work constitutes direct or contributory\npatent infringement, then any patent licenses granted to You under this License\nfor that Work shall terminate as of the date such litigation is filed.\n\n4. Redistribution.\n\nYou may reproduce and distribute copies of the Work or Derivative Works thereof\nin any medium, with or without modifications, and in Source or Object form,\nprovided that You meet the following conditions:\n\nYou must give any other recipients of the Work or Derivative Works a copy of\nthis License; and\nYou must cause any modified files to carry prominent notices stating that You\nchanged the files; and\nYou must retain, in the Source form of any Derivative Works that You distribute,\nall copyright, patent, trademark, and attribution notices from the Source form\nof the Work, excluding those notices that do not pertain to any part of the\nDerivative Works; and\nIf the Work includes a \"NOTICE\" text file as part of its distribution, then any\nDerivative Works that You distribute must include a readable copy of the\nattribution notices contained within such NOTICE file, excluding those notices\nthat do not pertain to any part of the Derivative Works, in at least one of the\nfollowing places: within a NOTICE text file distributed as part of the\nDerivative Works; within the Source form or documentation, if provided along\nwith the Derivative Works; or, within a display generated by the Derivative\nWorks, if and wherever such third-party notices normally appear. The contents of\nthe NOTICE file are for informational purposes only and do not modify the\nLicense. You may add Your own attribution notices within Derivative Works that\nYou distribute, alongside or as an addendum to the NOTICE text from the Work,\nprovided that such additional attribution notices cannot be construed as\nmodifying the License.\nYou may add Your own copyright statement to Your modifications and may provide\nadditional or different license terms and conditions for use, reproduction, or\ndistribution of Your modifications, or for any such Derivative Works as a whole,\nprovided Your use, reproduction, and distribution of the Work otherwise complies\nwith the conditions stated in this License.\n\n5. Submission of Contributions.\n\nUnless You explicitly state otherwise, any Contribution intentionally submitted\nfor inclusion in the Work by You to the Licensor shall be under the terms and\nconditions of this License, without any additional terms or conditions.\nNotwithstanding the above, nothing herein shall supersede or modify the terms of\nany separate license agreement you may have executed with Licensor regarding\nsuch Contributions.\n\n6. Trademarks.\n\nThis License does not grant permission to use the trade names, trademarks,\nservice marks, or product names of the Licensor, except as required for\nreasonable and customary use in describing the origin of the Work and\nreproducing the content of the NOTICE file.\n\n7. Disclaimer of Warranty.\n\nUnless required by applicable law or agreed to in writing, Licensor provides the\nWork (and each Contributor provides its Contributions) on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,\nincluding, without limitation, any warranties or conditions of TITLE,\nNON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are\nsolely responsible for determining the appropriateness of using or\nredistributing the Work and assume any risks associated with Your exercise of\npermissions under this License.\n\n8. Limitation of Liability.\n\nIn no event and under no legal theory, whether in tort (including negligence),\ncontract, or otherwise, unless required by applicable law (such as deliberate\nand grossly negligent acts) or agreed to in writing, shall any Contributor be\nliable to You for damages, including any direct, indirect, special, incidental,\nor consequential damages of any character arising as a result of this License or\nout of the use or inability to use the Work (including but not limited to\ndamages for loss of goodwill, work stoppage, computer failure or malfunction, or\nany and all other commercial damages or losses), even if such Contributor has\nbeen advised of the possibility of such damages.\n\n9. Accepting Warranty or Additional Liability.\n\nWhile redistributing the Work or Derivative Works thereof, You may choose to\noffer, and charge a fee for, acceptance of support, warranty, indemnity, or\nother liability obligations and/or rights consistent with this License. However,\nin accepting such obligations, You may act only on Your own behalf and on Your\nsole responsibility, not on behalf of any other Contributor, and only if You\nagree to indemnify, defend, and hold each Contributor harmless for any liability\nincurred by, or claims asserted against, such Contributor by reason of your\naccepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work\n\nTo apply the Apache License to your work, attach the following boilerplate\nnotice, with the fields enclosed by brackets \"[]\" replaced with your own\nidentifying information. (Don't include the brackets!) The text should be\nenclosed in the appropriate comment syntax for the file format. We also\nrecommend that a file or class name and description of purpose be included on\nthe same \"printed page\" as the copyright notice for easier identification within\nthird-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, { - "name": "github.com/golang/protobuf/proto", - "path": "github.com/golang/protobuf/proto/LICENSE", + "name": "github.com/golang/protobuf", + "path": "github.com/golang/protobuf/LICENSE", "licenseText": "Copyright 2010 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n" }, { @@ -615,18 +545,8 @@ "licenseText": "Copyright (c) 2011 The Snappy-Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { - "name": "github.com/google/btree", - "path": "github.com/google/btree/LICENSE", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, - { - "name": "github.com/google/flatbuffers/go", - "path": "github.com/google/flatbuffers/go/LICENSE", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, - { - "name": "github.com/google/go-github/v71/github", - "path": "github.com/google/go-github/v71/github/LICENSE", + "name": "github.com/google/go-github/v53/github", + "path": "github.com/google/go-github/v53/github/LICENSE", "licenseText": "Copyright (c) 2013 The go-github AUTHORS. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { @@ -639,11 +559,6 @@ "path": "github.com/google/go-tpm/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, - { - "name": "github.com/google/licenseclassifier/v2", - "path": "github.com/google/licenseclassifier/v2/LICENSE", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, { "name": "github.com/google/pprof/profile", "path": "github.com/google/pprof/profile/LICENSE", @@ -657,43 +572,33 @@ { "name": "github.com/gorilla/css/scanner", "path": "github.com/gorilla/css/scanner/LICENSE", - "licenseText": "Copyright (c) 2023 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n" + "licenseText": "Copyright (c) 2013, Gorilla web toolkit\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n Redistributions in binary form must reproduce the above copyright notice, this\n list of conditions and the following disclaimer in the documentation and/or\n other materials provided with the distribution.\n\n Neither the name of the {organization} nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "github.com/gorilla/feeds", "path": "github.com/gorilla/feeds/LICENSE", - "licenseText": "Copyright (c) 2023 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n" + "licenseText": "Copyright (c) 2013-2018 The Gorilla Feeds Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "github.com/gorilla/mux", "path": "github.com/gorilla/mux/LICENSE", - "licenseText": "Copyright (c) 2023 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2012-2018 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "github.com/gorilla/securecookie", "path": "github.com/gorilla/securecookie/LICENSE", - "licenseText": "Copyright (c) 2023 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2012 Rodrigo Moraes. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "github.com/gorilla/sessions", "path": "github.com/gorilla/sessions/LICENSE", - "licenseText": "Copyright (c) 2024 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" - }, - { - "name": "github.com/hashicorp/errwrap", - "path": "github.com/hashicorp/errwrap/LICENSE", - "licenseText": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. “Contributor”\n\n means each individual or legal entity that creates, contributes to the\n creation of, or owns Covered Software.\n\n1.2. “Contributor Version”\n\n means the combination of the Contributions of others (if any) used by a\n Contributor and that particular Contributor’s Contribution.\n\n1.3. “Contribution”\n\n means Covered Software of a particular Contributor.\n\n1.4. “Covered Software”\n\n means Source Code Form to which the initial Contributor has attached the\n notice in Exhibit A, the Executable Form of such Source Code Form, and\n Modifications of such Source Code Form, in each case including portions\n thereof.\n\n1.5. “Incompatible With Secondary Licenses”\n means\n\n a. that the initial Contributor has attached the notice described in\n Exhibit B to the Covered Software; or\n\n b. that the Covered Software was made available under the terms of version\n 1.1 or earlier of the License, but not also under the terms of a\n Secondary License.\n\n1.6. “Executable Form”\n\n means any form of the work other than Source Code Form.\n\n1.7. “Larger Work”\n\n means a work that combines Covered Software with other material, in a separate\n file or files, that is not Covered Software.\n\n1.8. “License”\n\n means this document.\n\n1.9. “Licensable”\n\n means having the right to grant, to the maximum extent possible, whether at the\n time of the initial grant or subsequently, any and all of the rights conveyed by\n this License.\n\n1.10. “Modifications”\n\n means any of the following:\n\n a. any file in Source Code Form that results from an addition to, deletion\n from, or modification of the contents of Covered Software; or\n\n b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. “Patent Claims” of a Contributor\n\n means any patent claim(s), including without limitation, method, process,\n and apparatus claims, in any patent Licensable by such Contributor that\n would be infringed, but for the grant of the License, by the making,\n using, selling, offering for sale, having made, import, or transfer of\n either its Contributions or its Contributor Version.\n\n1.12. “Secondary License”\n\n means either the GNU General Public License, Version 2.0, the GNU Lesser\n General Public License, Version 2.1, the GNU Affero General Public\n License, Version 3.0, or any later versions of those licenses.\n\n1.13. “Source Code Form”\n\n means the form of the work preferred for making modifications.\n\n1.14. “You” (or “Your”)\n\n means an individual or a legal entity exercising rights under this\n License. For legal entities, “You” includes any entity that controls, is\n controlled by, or is under common control with You. For purposes of this\n definition, “control” means (a) the power, direct or indirect, to cause\n the direction or management of such entity, whether by contract or\n otherwise, or (b) ownership of more than fifty percent (50%) of the\n outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n Each Contributor hereby grants You a world-wide, royalty-free,\n non-exclusive license:\n\n a. under intellectual property rights (other than patent or trademark)\n Licensable by such Contributor to use, reproduce, make available,\n modify, display, perform, distribute, and otherwise exploit its\n Contributions, either on an unmodified basis, with Modifications, or as\n part of a Larger Work; and\n\n b. under Patent Claims of such Contributor to make, use, sell, offer for\n sale, have made, import, and otherwise transfer either its Contributions\n or its Contributor Version.\n\n2.2. Effective Date\n\n The licenses granted in Section 2.1 with respect to any Contribution become\n effective for each Contribution on the date the Contributor first distributes\n such Contribution.\n\n2.3. Limitations on Grant Scope\n\n The licenses granted in this Section 2 are the only rights granted under this\n License. No additional rights or licenses will be implied from the distribution\n or licensing of Covered Software under this License. Notwithstanding Section\n 2.1(b) above, no patent license is granted by a Contributor:\n\n a. for any code that a Contributor has removed from Covered Software; or\n\n b. for infringements caused by: (i) Your and any other third party’s\n modifications of Covered Software, or (ii) the combination of its\n Contributions with other software (except as part of its Contributor\n Version); or\n\n c. under Patent Claims infringed by Covered Software in the absence of its\n Contributions.\n\n This License does not grant any rights in the trademarks, service marks, or\n logos of any Contributor (except as may be necessary to comply with the\n notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n No Contributor makes additional grants as a result of Your choice to\n distribute the Covered Software under a subsequent version of this License\n (see Section 10.2) or under the terms of a Secondary License (if permitted\n under the terms of Section 3.3).\n\n2.5. Representation\n\n Each Contributor represents that the Contributor believes its Contributions\n are its original creation(s) or it has sufficient rights to grant the\n rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n This License is not intended to limit any rights You have under applicable\n copyright doctrines of fair use, fair dealing, or other equivalents.\n\n2.7. Conditions\n\n Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n All distribution of Covered Software in Source Code Form, including any\n Modifications that You create or to which You contribute, must be under the\n terms of this License. You must inform recipients that the Source Code Form\n of the Covered Software is governed by the terms of this License, and how\n they can obtain a copy of this License. You may not attempt to alter or\n restrict the recipients’ rights in the Source Code Form.\n\n3.2. Distribution of Executable Form\n\n If You distribute Covered Software in Executable Form then:\n\n a. such Covered Software must also be made available in Source Code Form,\n as described in Section 3.1, and You must inform recipients of the\n Executable Form how they can obtain a copy of such Source Code Form by\n reasonable means in a timely manner, at a charge no more than the cost\n of distribution to the recipient; and\n\n b. You may distribute such Executable Form under the terms of this License,\n or sublicense it under different terms, provided that the license for\n the Executable Form does not attempt to limit or alter the recipients’\n rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n You may create and distribute a Larger Work under terms of Your choice,\n provided that You also comply with the requirements of this License for the\n Covered Software. If the Larger Work is a combination of Covered Software\n with a work governed by one or more Secondary Licenses, and the Covered\n Software is not Incompatible With Secondary Licenses, this License permits\n You to additionally distribute such Covered Software under the terms of\n such Secondary License(s), so that the recipient of the Larger Work may, at\n their option, further distribute the Covered Software under the terms of\n either this License or such Secondary License(s).\n\n3.4. Notices\n\n You may not remove or alter the substance of any license notices (including\n copyright notices, patent notices, disclaimers of warranty, or limitations\n of liability) contained within the Source Code Form of the Covered\n Software, except that You may alter any license notices to the extent\n required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n You may choose to offer, and to charge a fee for, warranty, support,\n indemnity or liability obligations to one or more recipients of Covered\n Software. However, You may do so only on Your own behalf, and not on behalf\n of any Contributor. You must make it absolutely clear that any such\n warranty, support, indemnity, or liability obligation is offered by You\n alone, and You hereby agree to indemnify every Contributor for any\n liability incurred by such Contributor as a result of warranty, support,\n indemnity or liability terms You offer. You may include additional\n disclaimers of warranty and limitations of liability specific to any\n jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n If it is impossible for You to comply with any of the terms of this License\n with respect to some or all of the Covered Software due to statute, judicial\n order, or regulation then You must: (a) comply with the terms of this License\n to the maximum extent possible; and (b) describe the limitations and the code\n they affect. Such description must be placed in a text file included with all\n distributions of the Covered Software under this License. Except to the\n extent prohibited by statute or regulation, such description must be\n sufficiently detailed for a recipient of ordinary skill to be able to\n understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n fail to comply with any of its terms. However, if You become compliant,\n then the rights granted under this License from a particular Contributor\n are reinstated (a) provisionally, unless and until such Contributor\n explicitly and finally terminates Your grants, and (b) on an ongoing basis,\n if such Contributor fails to notify You of the non-compliance by some\n reasonable means prior to 60 days after You have come back into compliance.\n Moreover, Your grants from a particular Contributor are reinstated on an\n ongoing basis if such Contributor notifies You of the non-compliance by\n some reasonable means, this is the first time You have received notice of\n non-compliance with this License from such Contributor, and You become\n compliant prior to 30 days after Your receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n infringement claim (excluding declaratory judgment actions, counter-claims,\n and cross-claims) alleging that a Contributor Version directly or\n indirectly infringes any patent, then the rights granted to You by any and\n all Contributors for the Covered Software under Section 2.1 of this License\n shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n license agreements (excluding distributors and resellers) which have been\n validly granted by You or Your distributors under this License prior to\n termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n Covered Software is provided under this License on an “as is” basis, without\n warranty of any kind, either expressed, implied, or statutory, including,\n without limitation, warranties that the Covered Software is free of defects,\n merchantable, fit for a particular purpose or non-infringing. The entire\n risk as to the quality and performance of the Covered Software is with You.\n Should any Covered Software prove defective in any respect, You (not any\n Contributor) assume the cost of any necessary servicing, repair, or\n correction. This disclaimer of warranty constitutes an essential part of this\n License. No use of any Covered Software is authorized under this License\n except under this disclaimer.\n\n7. Limitation of Liability\n\n Under no circumstances and under no legal theory, whether tort (including\n negligence), contract, or otherwise, shall any Contributor, or anyone who\n distributes Covered Software as permitted above, be liable to You for any\n direct, indirect, special, incidental, or consequential damages of any\n character including, without limitation, damages for lost profits, loss of\n goodwill, work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses, even if such party shall have been\n informed of the possibility of such damages. This limitation of liability\n shall not apply to liability for death or personal injury resulting from such\n party’s negligence to the extent applicable law prohibits such limitation.\n Some jurisdictions do not allow the exclusion or limitation of incidental or\n consequential damages, so this exclusion and limitation may not apply to You.\n\n8. Litigation\n\n Any litigation relating to this License may be brought only in the courts of\n a jurisdiction where the defendant maintains its principal place of business\n and such litigation shall be governed by laws of that jurisdiction, without\n reference to its conflict-of-law provisions. Nothing in this Section shall\n prevent a party’s ability to bring cross-claims or counter-claims.\n\n9. Miscellaneous\n\n This License represents the complete agreement concerning the subject matter\n hereof. If any provision of this License is held to be unenforceable, such\n provision shall be reformed only to the extent necessary to make it\n enforceable. Any law or regulation which provides that the language of a\n contract shall be construed against the drafter shall not be used to construe\n this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n Mozilla Foundation is the license steward. Except as provided in Section\n 10.3, no one other than the license steward has the right to modify or\n publish new versions of this License. Each version will be given a\n distinguishing version number.\n\n10.2. Effect of New Versions\n\n You may distribute the Covered Software under the terms of the version of\n the License under which You originally received the Covered Software, or\n under the terms of any subsequent version published by the license\n steward.\n\n10.3. Modified Versions\n\n If you create software not governed by this License, and you want to\n create a new license for such software, you may create and use a modified\n version of this License if you rename the license and remove any\n references to the name of the license steward (except to note that such\n modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n If You choose to distribute Source Code Form that is Incompatible With\n Secondary Licenses under the terms of this version of the License, the\n notice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n\n This Source Code Form is subject to the\n terms of the Mozilla Public License, v.\n 2.0. If a copy of the MPL was not\n distributed with this file, You can\n obtain one at\n http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file, then\nYou may include the notice in a location (such as a LICENSE file in a relevant\ndirectory) where a recipient would be likely to look for such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - “Incompatible With Secondary Licenses” Notice\n\n This Source Code Form is “Incompatible\n With Secondary Licenses”, as defined by\n the Mozilla Public License, v. 2.0.\n\n" + "licenseText": "Copyright (c) 2012-2018 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "github.com/hashicorp/go-cleanhttp", "path": "github.com/hashicorp/go-cleanhttp/LICENSE", "licenseText": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n means each individual or legal entity that creates, contributes to the\n creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n means the combination of the Contributions of others (if any) used by a\n Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n means Source Code Form to which the initial Contributor has attached the\n notice in Exhibit A, the Executable Form of such Source Code Form, and\n Modifications of such Source Code Form, in each case including portions\n thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n means\n\n a. that the initial Contributor has attached the notice described in\n Exhibit B to the Covered Software; or\n\n b. that the Covered Software was made available under the terms of\n version 1.1 or earlier of the License, but not also under the terms of\n a Secondary License.\n\n1.6. \"Executable Form\"\n\n means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n means a work that combines Covered Software with other material, in a\n separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n means this document.\n\n1.9. \"Licensable\"\n\n means having the right to grant, to the maximum extent possible, whether\n at the time of the initial grant or subsequently, any and all of the\n rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n means any of the following:\n\n a. any file in Source Code Form that results from an addition to,\n deletion from, or modification of the contents of Covered Software; or\n\n b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n means any patent claim(s), including without limitation, method,\n process, and apparatus claims, in any patent Licensable by such\n Contributor that would be infringed, but for the grant of the License,\n by the making, using, selling, offering for sale, having made, import,\n or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n means either the GNU General Public License, Version 2.0, the GNU Lesser\n General Public License, Version 2.1, the GNU Affero General Public\n License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n means an individual or a legal entity exercising rights under this\n License. For legal entities, \"You\" includes any entity that controls, is\n controlled by, or is under common control with You. For purposes of this\n definition, \"control\" means (a) the power, direct or indirect, to cause\n the direction or management of such entity, whether by contract or\n otherwise, or (b) ownership of more than fifty percent (50%) of the\n outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n Each Contributor hereby grants You a world-wide, royalty-free,\n non-exclusive license:\n\n a. under intellectual property rights (other than patent or trademark)\n Licensable by such Contributor to use, reproduce, make available,\n modify, display, perform, distribute, and otherwise exploit its\n Contributions, either on an unmodified basis, with Modifications, or\n as part of a Larger Work; and\n\n b. under Patent Claims of such Contributor to make, use, sell, offer for\n sale, have made, import, and otherwise transfer either its\n Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n The licenses granted in Section 2.1 with respect to any Contribution\n become effective for each Contribution on the date the Contributor first\n distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n The licenses granted in this Section 2 are the only rights granted under\n this License. No additional rights or licenses will be implied from the\n distribution or licensing of Covered Software under this License.\n Notwithstanding Section 2.1(b) above, no patent license is granted by a\n Contributor:\n\n a. for any code that a Contributor has removed from Covered Software; or\n\n b. for infringements caused by: (i) Your and any other third party's\n modifications of Covered Software, or (ii) the combination of its\n Contributions with other software (except as part of its Contributor\n Version); or\n\n c. under Patent Claims infringed by Covered Software in the absence of\n its Contributions.\n\n This License does not grant any rights in the trademarks, service marks,\n or logos of any Contributor (except as may be necessary to comply with\n the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n No Contributor makes additional grants as a result of Your choice to\n distribute the Covered Software under a subsequent version of this\n License (see Section 10.2) or under the terms of a Secondary License (if\n permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n Each Contributor represents that the Contributor believes its\n Contributions are its original creation(s) or it has sufficient rights to\n grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n This License is not intended to limit any rights You have under\n applicable copyright doctrines of fair use, fair dealing, or other\n equivalents.\n\n2.7. Conditions\n\n Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n All distribution of Covered Software in Source Code Form, including any\n Modifications that You create or to which You contribute, must be under\n the terms of this License. You must inform recipients that the Source\n Code Form of the Covered Software is governed by the terms of this\n License, and how they can obtain a copy of this License. You may not\n attempt to alter or restrict the recipients' rights in the Source Code\n Form.\n\n3.2. Distribution of Executable Form\n\n If You distribute Covered Software in Executable Form then:\n\n a. such Covered Software must also be made available in Source Code Form,\n as described in Section 3.1, and You must inform recipients of the\n Executable Form how they can obtain a copy of such Source Code Form by\n reasonable means in a timely manner, at a charge no more than the cost\n of distribution to the recipient; and\n\n b. You may distribute such Executable Form under the terms of this\n License, or sublicense it under different terms, provided that the\n license for the Executable Form does not attempt to limit or alter the\n recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n You may create and distribute a Larger Work under terms of Your choice,\n provided that You also comply with the requirements of this License for\n the Covered Software. If the Larger Work is a combination of Covered\n Software with a work governed by one or more Secondary Licenses, and the\n Covered Software is not Incompatible With Secondary Licenses, this\n License permits You to additionally distribute such Covered Software\n under the terms of such Secondary License(s), so that the recipient of\n the Larger Work may, at their option, further distribute the Covered\n Software under the terms of either this License or such Secondary\n License(s).\n\n3.4. Notices\n\n You may not remove or alter the substance of any license notices\n (including copyright notices, patent notices, disclaimers of warranty, or\n limitations of liability) contained within the Source Code Form of the\n Covered Software, except that You may alter any license notices to the\n extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n You may choose to offer, and to charge a fee for, warranty, support,\n indemnity or liability obligations to one or more recipients of Covered\n Software. However, You may do so only on Your own behalf, and not on\n behalf of any Contributor. You must make it absolutely clear that any\n such warranty, support, indemnity, or liability obligation is offered by\n You alone, and You hereby agree to indemnify every Contributor for any\n liability incurred by such Contributor as a result of warranty, support,\n indemnity or liability terms You offer. You may include additional\n disclaimers of warranty and limitations of liability specific to any\n jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n If it is impossible for You to comply with any of the terms of this License\n with respect to some or all of the Covered Software due to statute,\n judicial order, or regulation then You must: (a) comply with the terms of\n this License to the maximum extent possible; and (b) describe the\n limitations and the code they affect. Such description must be placed in a\n text file included with all distributions of the Covered Software under\n this License. Except to the extent prohibited by statute or regulation,\n such description must be sufficiently detailed for a recipient of ordinary\n skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n fail to comply with any of its terms. However, if You become compliant,\n then the rights granted under this License from a particular Contributor\n are reinstated (a) provisionally, unless and until such Contributor\n explicitly and finally terminates Your grants, and (b) on an ongoing\n basis, if such Contributor fails to notify You of the non-compliance by\n some reasonable means prior to 60 days after You have come back into\n compliance. Moreover, Your grants from a particular Contributor are\n reinstated on an ongoing basis if such Contributor notifies You of the\n non-compliance by some reasonable means, this is the first time You have\n received notice of non-compliance with this License from such\n Contributor, and You become compliant prior to 30 days after Your receipt\n of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n infringement claim (excluding declaratory judgment actions,\n counter-claims, and cross-claims) alleging that a Contributor Version\n directly or indirectly infringes any patent, then the rights granted to\n You by any and all Contributors for the Covered Software under Section\n 2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n license agreements (excluding distributors and resellers) which have been\n validly granted by You or Your distributors under this License prior to\n termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n Covered Software is provided under this License on an \"as is\" basis,\n without warranty of any kind, either expressed, implied, or statutory,\n including, without limitation, warranties that the Covered Software is free\n of defects, merchantable, fit for a particular purpose or non-infringing.\n The entire risk as to the quality and performance of the Covered Software\n is with You. Should any Covered Software prove defective in any respect,\n You (not any Contributor) assume the cost of any necessary servicing,\n repair, or correction. This disclaimer of warranty constitutes an essential\n part of this License. No use of any Covered Software is authorized under\n this License except under this disclaimer.\n\n7. Limitation of Liability\n\n Under no circumstances and under no legal theory, whether tort (including\n negligence), contract, or otherwise, shall any Contributor, or anyone who\n distributes Covered Software as permitted above, be liable to You for any\n direct, indirect, special, incidental, or consequential damages of any\n character including, without limitation, damages for lost profits, loss of\n goodwill, work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses, even if such party shall have been\n informed of the possibility of such damages. This limitation of liability\n shall not apply to liability for death or personal injury resulting from\n such party's negligence to the extent applicable law prohibits such\n limitation. Some jurisdictions do not allow the exclusion or limitation of\n incidental or consequential damages, so this exclusion and limitation may\n not apply to You.\n\n8. Litigation\n\n Any litigation relating to this License may be brought only in the courts\n of a jurisdiction where the defendant maintains its principal place of\n business and such litigation shall be governed by laws of that\n jurisdiction, without reference to its conflict-of-law provisions. Nothing\n in this Section shall prevent a party's ability to bring cross-claims or\n counter-claims.\n\n9. Miscellaneous\n\n This License represents the complete agreement concerning the subject\n matter hereof. If any provision of this License is held to be\n unenforceable, such provision shall be reformed only to the extent\n necessary to make it enforceable. Any law or regulation which provides that\n the language of a contract shall be construed against the drafter shall not\n be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n Mozilla Foundation is the license steward. Except as provided in Section\n 10.3, no one other than the license steward has the right to modify or\n publish new versions of this License. Each version will be given a\n distinguishing version number.\n\n10.2. Effect of New Versions\n\n You may distribute the Covered Software under the terms of the version\n of the License under which You originally received the Covered Software,\n or under the terms of any subsequent version published by the license\n steward.\n\n10.3. Modified Versions\n\n If you create software not governed by this License, and you want to\n create a new license for such software, you may create and use a\n modified version of this License if you rename the license and remove\n any references to the name of the license steward (except to note that\n such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n Licenses If You choose to distribute Source Code Form that is\n Incompatible With Secondary Licenses under the terms of this version of\n the License, the notice described in Exhibit B of this License must be\n attached.\n\nExhibit A - Source Code Form License Notice\n\n This Source Code Form is subject to the\n terms of the Mozilla Public License, v.\n 2.0. If a copy of the MPL was not\n distributed with this file, You can\n obtain one at\n http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n This Source Code Form is \"Incompatible\n With Secondary Licenses\", as defined by\n the Mozilla Public License, v. 2.0.\n\n" }, - { - "name": "github.com/hashicorp/go-multierror", - "path": "github.com/hashicorp/go-multierror/LICENSE", - "licenseText": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. “Contributor”\n\n means each individual or legal entity that creates, contributes to the\n creation of, or owns Covered Software.\n\n1.2. “Contributor Version”\n\n means the combination of the Contributions of others (if any) used by a\n Contributor and that particular Contributor’s Contribution.\n\n1.3. “Contribution”\n\n means Covered Software of a particular Contributor.\n\n1.4. “Covered Software”\n\n means Source Code Form to which the initial Contributor has attached the\n notice in Exhibit A, the Executable Form of such Source Code Form, and\n Modifications of such Source Code Form, in each case including portions\n thereof.\n\n1.5. “Incompatible With Secondary Licenses”\n means\n\n a. that the initial Contributor has attached the notice described in\n Exhibit B to the Covered Software; or\n\n b. that the Covered Software was made available under the terms of version\n 1.1 or earlier of the License, but not also under the terms of a\n Secondary License.\n\n1.6. “Executable Form”\n\n means any form of the work other than Source Code Form.\n\n1.7. “Larger Work”\n\n means a work that combines Covered Software with other material, in a separate\n file or files, that is not Covered Software.\n\n1.8. “License”\n\n means this document.\n\n1.9. “Licensable”\n\n means having the right to grant, to the maximum extent possible, whether at the\n time of the initial grant or subsequently, any and all of the rights conveyed by\n this License.\n\n1.10. “Modifications”\n\n means any of the following:\n\n a. any file in Source Code Form that results from an addition to, deletion\n from, or modification of the contents of Covered Software; or\n\n b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. “Patent Claims” of a Contributor\n\n means any patent claim(s), including without limitation, method, process,\n and apparatus claims, in any patent Licensable by such Contributor that\n would be infringed, but for the grant of the License, by the making,\n using, selling, offering for sale, having made, import, or transfer of\n either its Contributions or its Contributor Version.\n\n1.12. “Secondary License”\n\n means either the GNU General Public License, Version 2.0, the GNU Lesser\n General Public License, Version 2.1, the GNU Affero General Public\n License, Version 3.0, or any later versions of those licenses.\n\n1.13. “Source Code Form”\n\n means the form of the work preferred for making modifications.\n\n1.14. “You” (or “Your”)\n\n means an individual or a legal entity exercising rights under this\n License. For legal entities, “You” includes any entity that controls, is\n controlled by, or is under common control with You. For purposes of this\n definition, “control” means (a) the power, direct or indirect, to cause\n the direction or management of such entity, whether by contract or\n otherwise, or (b) ownership of more than fifty percent (50%) of the\n outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n Each Contributor hereby grants You a world-wide, royalty-free,\n non-exclusive license:\n\n a. under intellectual property rights (other than patent or trademark)\n Licensable by such Contributor to use, reproduce, make available,\n modify, display, perform, distribute, and otherwise exploit its\n Contributions, either on an unmodified basis, with Modifications, or as\n part of a Larger Work; and\n\n b. under Patent Claims of such Contributor to make, use, sell, offer for\n sale, have made, import, and otherwise transfer either its Contributions\n or its Contributor Version.\n\n2.2. Effective Date\n\n The licenses granted in Section 2.1 with respect to any Contribution become\n effective for each Contribution on the date the Contributor first distributes\n such Contribution.\n\n2.3. Limitations on Grant Scope\n\n The licenses granted in this Section 2 are the only rights granted under this\n License. No additional rights or licenses will be implied from the distribution\n or licensing of Covered Software under this License. Notwithstanding Section\n 2.1(b) above, no patent license is granted by a Contributor:\n\n a. for any code that a Contributor has removed from Covered Software; or\n\n b. for infringements caused by: (i) Your and any other third party’s\n modifications of Covered Software, or (ii) the combination of its\n Contributions with other software (except as part of its Contributor\n Version); or\n\n c. under Patent Claims infringed by Covered Software in the absence of its\n Contributions.\n\n This License does not grant any rights in the trademarks, service marks, or\n logos of any Contributor (except as may be necessary to comply with the\n notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n No Contributor makes additional grants as a result of Your choice to\n distribute the Covered Software under a subsequent version of this License\n (see Section 10.2) or under the terms of a Secondary License (if permitted\n under the terms of Section 3.3).\n\n2.5. Representation\n\n Each Contributor represents that the Contributor believes its Contributions\n are its original creation(s) or it has sufficient rights to grant the\n rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n This License is not intended to limit any rights You have under applicable\n copyright doctrines of fair use, fair dealing, or other equivalents.\n\n2.7. Conditions\n\n Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n All distribution of Covered Software in Source Code Form, including any\n Modifications that You create or to which You contribute, must be under the\n terms of this License. You must inform recipients that the Source Code Form\n of the Covered Software is governed by the terms of this License, and how\n they can obtain a copy of this License. You may not attempt to alter or\n restrict the recipients’ rights in the Source Code Form.\n\n3.2. Distribution of Executable Form\n\n If You distribute Covered Software in Executable Form then:\n\n a. such Covered Software must also be made available in Source Code Form,\n as described in Section 3.1, and You must inform recipients of the\n Executable Form how they can obtain a copy of such Source Code Form by\n reasonable means in a timely manner, at a charge no more than the cost\n of distribution to the recipient; and\n\n b. You may distribute such Executable Form under the terms of this License,\n or sublicense it under different terms, provided that the license for\n the Executable Form does not attempt to limit or alter the recipients’\n rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n You may create and distribute a Larger Work under terms of Your choice,\n provided that You also comply with the requirements of this License for the\n Covered Software. If the Larger Work is a combination of Covered Software\n with a work governed by one or more Secondary Licenses, and the Covered\n Software is not Incompatible With Secondary Licenses, this License permits\n You to additionally distribute such Covered Software under the terms of\n such Secondary License(s), so that the recipient of the Larger Work may, at\n their option, further distribute the Covered Software under the terms of\n either this License or such Secondary License(s).\n\n3.4. Notices\n\n You may not remove or alter the substance of any license notices (including\n copyright notices, patent notices, disclaimers of warranty, or limitations\n of liability) contained within the Source Code Form of the Covered\n Software, except that You may alter any license notices to the extent\n required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n You may choose to offer, and to charge a fee for, warranty, support,\n indemnity or liability obligations to one or more recipients of Covered\n Software. However, You may do so only on Your own behalf, and not on behalf\n of any Contributor. You must make it absolutely clear that any such\n warranty, support, indemnity, or liability obligation is offered by You\n alone, and You hereby agree to indemnify every Contributor for any\n liability incurred by such Contributor as a result of warranty, support,\n indemnity or liability terms You offer. You may include additional\n disclaimers of warranty and limitations of liability specific to any\n jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n If it is impossible for You to comply with any of the terms of this License\n with respect to some or all of the Covered Software due to statute, judicial\n order, or regulation then You must: (a) comply with the terms of this License\n to the maximum extent possible; and (b) describe the limitations and the code\n they affect. Such description must be placed in a text file included with all\n distributions of the Covered Software under this License. Except to the\n extent prohibited by statute or regulation, such description must be\n sufficiently detailed for a recipient of ordinary skill to be able to\n understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n fail to comply with any of its terms. However, if You become compliant,\n then the rights granted under this License from a particular Contributor\n are reinstated (a) provisionally, unless and until such Contributor\n explicitly and finally terminates Your grants, and (b) on an ongoing basis,\n if such Contributor fails to notify You of the non-compliance by some\n reasonable means prior to 60 days after You have come back into compliance.\n Moreover, Your grants from a particular Contributor are reinstated on an\n ongoing basis if such Contributor notifies You of the non-compliance by\n some reasonable means, this is the first time You have received notice of\n non-compliance with this License from such Contributor, and You become\n compliant prior to 30 days after Your receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n infringement claim (excluding declaratory judgment actions, counter-claims,\n and cross-claims) alleging that a Contributor Version directly or\n indirectly infringes any patent, then the rights granted to You by any and\n all Contributors for the Covered Software under Section 2.1 of this License\n shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n license agreements (excluding distributors and resellers) which have been\n validly granted by You or Your distributors under this License prior to\n termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n Covered Software is provided under this License on an “as is” basis, without\n warranty of any kind, either expressed, implied, or statutory, including,\n without limitation, warranties that the Covered Software is free of defects,\n merchantable, fit for a particular purpose or non-infringing. The entire\n risk as to the quality and performance of the Covered Software is with You.\n Should any Covered Software prove defective in any respect, You (not any\n Contributor) assume the cost of any necessary servicing, repair, or\n correction. This disclaimer of warranty constitutes an essential part of this\n License. No use of any Covered Software is authorized under this License\n except under this disclaimer.\n\n7. Limitation of Liability\n\n Under no circumstances and under no legal theory, whether tort (including\n negligence), contract, or otherwise, shall any Contributor, or anyone who\n distributes Covered Software as permitted above, be liable to You for any\n direct, indirect, special, incidental, or consequential damages of any\n character including, without limitation, damages for lost profits, loss of\n goodwill, work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses, even if such party shall have been\n informed of the possibility of such damages. This limitation of liability\n shall not apply to liability for death or personal injury resulting from such\n party’s negligence to the extent applicable law prohibits such limitation.\n Some jurisdictions do not allow the exclusion or limitation of incidental or\n consequential damages, so this exclusion and limitation may not apply to You.\n\n8. Litigation\n\n Any litigation relating to this License may be brought only in the courts of\n a jurisdiction where the defendant maintains its principal place of business\n and such litigation shall be governed by laws of that jurisdiction, without\n reference to its conflict-of-law provisions. Nothing in this Section shall\n prevent a party’s ability to bring cross-claims or counter-claims.\n\n9. Miscellaneous\n\n This License represents the complete agreement concerning the subject matter\n hereof. If any provision of this License is held to be unenforceable, such\n provision shall be reformed only to the extent necessary to make it\n enforceable. Any law or regulation which provides that the language of a\n contract shall be construed against the drafter shall not be used to construe\n this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n Mozilla Foundation is the license steward. Except as provided in Section\n 10.3, no one other than the license steward has the right to modify or\n publish new versions of this License. Each version will be given a\n distinguishing version number.\n\n10.2. Effect of New Versions\n\n You may distribute the Covered Software under the terms of the version of\n the License under which You originally received the Covered Software, or\n under the terms of any subsequent version published by the license\n steward.\n\n10.3. Modified Versions\n\n If you create software not governed by this License, and you want to\n create a new license for such software, you may create and use a modified\n version of this License if you rename the license and remove any\n references to the name of the license steward (except to note that such\n modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n If You choose to distribute Source Code Form that is Incompatible With\n Secondary Licenses under the terms of this version of the License, the\n notice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n\n This Source Code Form is subject to the\n terms of the Mozilla Public License, v.\n 2.0. If a copy of the MPL was not\n distributed with this file, You can\n obtain one at\n http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file, then\nYou may include the notice in a location (such as a LICENSE file in a relevant\ndirectory) where a recipient would be likely to look for such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - “Incompatible With Secondary Licenses” Notice\n\n This Source Code Form is “Incompatible\n With Secondary Licenses”, as defined by\n the Mozilla Public License, v. 2.0.\n" - }, { "name": "github.com/hashicorp/go-retryablehttp", "path": "github.com/hashicorp/go-retryablehttp/LICENSE", @@ -754,16 +659,16 @@ "path": "github.com/kevinburke/ssh_config/LICENSE", "licenseText": "Copyright (c) 2017 Kevin Burke.\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\n===================\n\nThe lexer and parser borrow heavily from github.com/pelletier/go-toml. The\nlicense for that project is copied below.\n\nThe MIT License (MIT)\n\nCopyright (c) 2013 - 2017 Thomas Pelletier, Eric Anderton\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" }, + { + "name": "github.com/keybase/go-crypto", + "path": "github.com/keybase/go-crypto/LICENSE", + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + }, { "name": "github.com/klauspost/compress", "path": "github.com/klauspost/compress/LICENSE", "licenseText": "Copyright (c) 2012 The Go Authors. All rights reserved.\nCopyright (c) 2019 Klaus Post. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n------------------\n\nFiles: gzhttp/*\n\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2016-2017 The New York Times Company\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n------------------\n\nFiles: s2/cmd/internal/readahead/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Klaus Post\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n---------------------\nFiles: snappy/*\nFiles: internal/snapref/*\n\nCopyright (c) 2011 The Snappy-Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n-----------------\n\nFiles: s2/cmd/internal/filepathx/*\n\nCopyright 2016 The filepathx Authors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" }, - { - "name": "github.com/klauspost/compress/gzhttp", - "path": "github.com/klauspost/compress/gzhttp/LICENSE", - "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2016-2017 The New York Times Company\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, { "name": "github.com/klauspost/compress/internal/snapref", "path": "github.com/klauspost/compress/internal/snapref/LICENSE", @@ -830,18 +735,18 @@ "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2016 Yasuhiro Matsumoto\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" }, { - "name": "github.com/mattn/go-shellwords", - "path": "github.com/mattn/go-shellwords/LICENSE", - "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2017 Yasuhiro Matsumoto\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + "name": "github.com/matttproud/golang_protobuf_extensions/pbutil", + "path": "github.com/matttproud/golang_protobuf_extensions/pbutil/LICENSE", + "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright {yyyy} {name of copyright owner}\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, { "name": "github.com/meilisearch/meilisearch-go", "path": "github.com/meilisearch/meilisearch-go/LICENSE", - "licenseText": "MIT License\n\nCopyright (c) 2020-2025 Meili SAS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + "licenseText": "MIT License\n\nCopyright (c) 2020-2022 Meili SAS\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" }, { - "name": "github.com/mholt/acmez/v3", - "path": "github.com/mholt/acmez/v3/LICENSE", + "name": "github.com/mholt/acmez", + "path": "github.com/mholt/acmez/LICENSE", "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, { @@ -852,28 +757,13 @@ { "name": "github.com/microcosm-cc/bluemonday", "path": "github.com/microcosm-cc/bluemonday/LICENSE.md", - "licenseText": "Copyright (c) 2014, David Kitchen \u003cdavid@buro9.com\u003e\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the organisation (Microcosm) nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" - }, - { - "name": "github.com/microsoft/go-mssqldb", - "path": "github.com/microsoft/go-mssqldb/LICENSE.txt", - "licenseText": "Copyright (c) 2012 The Go Authors. All rights reserved.\nCopyright (c) Microsoft Corporation.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" - }, - { - "name": "github.com/microsoft/go-mssqldb/internal/github.com/swisscom/mssql-always-encrypted/pkg", - "path": "github.com/microsoft/go-mssqldb/internal/github.com/swisscom/mssql-always-encrypted/pkg/LICENSE.txt", - "licenseText": "Copyright (c) 2021 Swisscom (Switzerland) Ltd\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n" + "licenseText": "SPDX short identifier: BSD-3-Clause\nhttps://opensource.org/licenses/BSD-3-Clause\n\nCopyright (c) 2014, David Kitchen \u003cdavid@buro9.com\u003e\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the organisation (Microcosm) nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "github.com/miekg/dns", "path": "github.com/miekg/dns/LICENSE", "licenseText": "BSD 3-Clause License\n\nCopyright (c) 2009, The Go Authors. Extensions copyright (c) 2011, Miek Gieben. \nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n3. Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, - { - "name": "github.com/minio/crc64nvme", - "path": "github.com/minio/crc64nvme/LICENSE", - "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, { "name": "github.com/minio/md5-simd", "path": "github.com/minio/md5-simd/LICENSE", @@ -884,6 +774,11 @@ "path": "github.com/minio/minio-go/v7/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, + { + "name": "github.com/minio/sha256-simd", + "path": "github.com/minio/sha256-simd/LICENSE", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "github.com/mitchellh/mapstructure", "path": "github.com/mitchellh/mapstructure/LICENSE", @@ -899,11 +794,6 @@ "path": "github.com/modern-go/reflect2/LICENSE", "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, - { - "name": "github.com/munnerz/goautoneg", - "path": "github.com/munnerz/goautoneg/LICENSE", - "licenseText": "Copyright (c) 2011, Open Knowledge Foundation Ltd.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n Neither the name of the Open Knowledge Foundation Ltd. nor the\n names of its contributors may be used to endorse or promote\n products derived from this software without specific prior written\n permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" - }, { "name": "github.com/nektos/act/pkg", "path": "github.com/nektos/act/pkg/LICENSE", @@ -944,6 +834,11 @@ "path": "github.com/opencontainers/image-spec/specs-go/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n Copyright 2016 The Linux Foundation.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, + { + "name": "github.com/paulmach/orb", + "path": "github.com/paulmach/orb/LICENSE.md", + "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2017 Paul Mach\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" + }, { "name": "github.com/pierrec/lz4/v4", "path": "github.com/pierrec/lz4/v4/LICENSE", @@ -952,7 +847,7 @@ { "name": "github.com/pjbgf/sha1cd", "path": "github.com/pjbgf/sha1cd/LICENSE", - "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2023 pjbgf\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, { "name": "github.com/pkg/errors", @@ -969,11 +864,6 @@ "path": "github.com/pquerna/otp/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, - { - "name": "github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil", - "path": "github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/LICENSE", - "licenseText": "Copyright (c) 2013 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" - }, { "name": "github.com/prometheus/client_golang/prometheus", "path": "github.com/prometheus/client_golang/prometheus/LICENSE", @@ -1034,11 +924,21 @@ "path": "github.com/sassoftware/go-rpmutils/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, + { + "name": "github.com/segmentio/asm", + "path": "github.com/segmentio/asm/LICENSE", + "licenseText": "MIT License\n\nCopyright (c) 2021 Segment\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + }, { "name": "github.com/sergi/go-diff/diffmatchpatch", "path": "github.com/sergi/go-diff/diffmatchpatch/LICENSE", "licenseText": "Copyright (c) 2012-2016 The go-diff Authors. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included\nin all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\n" }, + { + "name": "github.com/shopspring/decimal", + "path": "github.com/shopspring/decimal/LICENSE", + "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2015 Spring, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n- Based on https://github.com/oguzbilgic/fpd, which has the following license:\n\"\"\"\nThe MIT License (MIT)\n\nCopyright (c) 2013 Oguz Bilgic\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\"\"\"\n" + }, { "name": "github.com/sirupsen/logrus", "path": "github.com/sirupsen/logrus/LICENSE", @@ -1055,8 +955,8 @@ "licenseText": "MIT License\n\nCopyright (c) 2017 Asher\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" }, { - "name": "github.com/stretchr/testify", - "path": "github.com/stretchr/testify/LICENSE", + "name": "github.com/stretchr/testify/assert", + "path": "github.com/stretchr/testify/assert/LICENSE", "licenseText": "MIT License\n\nCopyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" }, { @@ -1080,40 +980,45 @@ "licenseText": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the terms and conditions for use, reproduction, and\ndistribution as defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or entity authorized by the copyright\nowner that is granting the License.\n\n\"Legal Entity\" shall mean the union of the acting entity and all other entities\nthat control, are controlled by, or are under common control with that entity.\nFor the purposes of this definition, \"control\" means (i) the power, direct or\nindirect, to cause the direction or management of such entity, whether by\ncontract or otherwise, or (ii) ownership of fifty percent (50%) or more of the\noutstanding shares, or (iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising\npermissions granted by this License.\n\n\"Source\" form shall mean the preferred form for making modifications, including\nbut not limited to software source code, documentation source, and configuration\nfiles.\n\n\"Object\" form shall mean any form resulting from mechanical transformation or\ntranslation of a Source form, including but not limited to compiled object code,\ngenerated documentation, and conversions to other media types.\n\n\"Work\" shall mean the work of authorship, whether in Source or Object form, made\navailable under the License, as indicated by a copyright notice that is included\nin or attached to the work (an example is provided in the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in Source or Object form, that\nis based on (or derived from) the Work and for which the editorial revisions,\nannotations, elaborations, or other modifications represent, as a whole, an\noriginal work of authorship. For the purposes of this License, Derivative Works\nshall not include works that remain separable from, or merely link (or bind by\nname) to the interfaces of, the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work of authorship, including the original version\nof the Work and any modifications or additions to that Work or Derivative Works\nthereof, that is intentionally submitted to Licensor for inclusion in the Work\nby the copyright owner or by an individual or Legal Entity authorized to submit\non behalf of the copyright owner. For the purposes of this definition,\n\"submitted\" means any form of electronic, verbal, or written communication sent\nto the Licensor or its representatives, including but not limited to\ncommunication on electronic mailing lists, source code control systems, and\nissue tracking systems that are managed by, or on behalf of, the Licensor for\nthe purpose of discussing and improving the Work, but excluding communication\nthat is conspicuously marked or otherwise designated in writing by the copyright\nowner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf\nof whom a Contribution has been received by Licensor and subsequently\nincorporated within the Work.\n\n2. Grant of Copyright License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable copyright license to reproduce, prepare Derivative Works of,\npublicly display, publicly perform, sublicense, and distribute the Work and such\nDerivative Works in Source or Object form.\n\n3. Grant of Patent License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable (except as stated in this section) patent license to make, have\nmade, use, offer to sell, sell, import, and otherwise transfer the Work, where\nsuch license applies only to those patent claims licensable by such Contributor\nthat are necessarily infringed by their Contribution(s) alone or by combination\nof their Contribution(s) with the Work to which such Contribution(s) was\nsubmitted. If You institute patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Work or a\nContribution incorporated within the Work constitutes direct or contributory\npatent infringement, then any patent licenses granted to You under this License\nfor that Work shall terminate as of the date such litigation is filed.\n\n4. Redistribution.\n\nYou may reproduce and distribute copies of the Work or Derivative Works thereof\nin any medium, with or without modifications, and in Source or Object form,\nprovided that You meet the following conditions:\n\nYou must give any other recipients of the Work or Derivative Works a copy of\nthis License; and\nYou must cause any modified files to carry prominent notices stating that You\nchanged the files; and\nYou must retain, in the Source form of any Derivative Works that You distribute,\nall copyright, patent, trademark, and attribution notices from the Source form\nof the Work, excluding those notices that do not pertain to any part of the\nDerivative Works; and\nIf the Work includes a \"NOTICE\" text file as part of its distribution, then any\nDerivative Works that You distribute must include a readable copy of the\nattribution notices contained within such NOTICE file, excluding those notices\nthat do not pertain to any part of the Derivative Works, in at least one of the\nfollowing places: within a NOTICE text file distributed as part of the\nDerivative Works; within the Source form or documentation, if provided along\nwith the Derivative Works; or, within a display generated by the Derivative\nWorks, if and wherever such third-party notices normally appear. The contents of\nthe NOTICE file are for informational purposes only and do not modify the\nLicense. You may add Your own attribution notices within Derivative Works that\nYou distribute, alongside or as an addendum to the NOTICE text from the Work,\nprovided that such additional attribution notices cannot be construed as\nmodifying the License.\nYou may add Your own copyright statement to Your modifications and may provide\nadditional or different license terms and conditions for use, reproduction, or\ndistribution of Your modifications, or for any such Derivative Works as a whole,\nprovided Your use, reproduction, and distribution of the Work otherwise complies\nwith the conditions stated in this License.\n\n5. Submission of Contributions.\n\nUnless You explicitly state otherwise, any Contribution intentionally submitted\nfor inclusion in the Work by You to the Licensor shall be under the terms and\nconditions of this License, without any additional terms or conditions.\nNotwithstanding the above, nothing herein shall supersede or modify the terms of\nany separate license agreement you may have executed with Licensor regarding\nsuch Contributions.\n\n6. Trademarks.\n\nThis License does not grant permission to use the trade names, trademarks,\nservice marks, or product names of the Licensor, except as required for\nreasonable and customary use in describing the origin of the Work and\nreproducing the content of the NOTICE file.\n\n7. Disclaimer of Warranty.\n\nUnless required by applicable law or agreed to in writing, Licensor provides the\nWork (and each Contributor provides its Contributions) on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,\nincluding, without limitation, any warranties or conditions of TITLE,\nNON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are\nsolely responsible for determining the appropriateness of using or\nredistributing the Work and assume any risks associated with Your exercise of\npermissions under this License.\n\n8. Limitation of Liability.\n\nIn no event and under no legal theory, whether in tort (including negligence),\ncontract, or otherwise, unless required by applicable law (such as deliberate\nand grossly negligent acts) or agreed to in writing, shall any Contributor be\nliable to You for damages, including any direct, indirect, special, incidental,\nor consequential damages of any character arising as a result of this License or\nout of the use or inability to use the Work (including but not limited to\ndamages for loss of goodwill, work stoppage, computer failure or malfunction, or\nany and all other commercial damages or losses), even if such Contributor has\nbeen advised of the possibility of such damages.\n\n9. Accepting Warranty or Additional Liability.\n\nWhile redistributing the Work or Derivative Works thereof, You may choose to\noffer, and charge a fee for, acceptance of support, warranty, indemnity, or\nother liability obligations and/or rights consistent with this License. However,\nin accepting such obligations, You may act only on Your own behalf and on Your\nsole responsibility, not on behalf of any other Contributor, and only if You\nagree to indemnify, defend, and hold each Contributor harmless for any liability\nincurred by, or claims asserted against, such Contributor by reason of your\naccepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work\n\nTo apply the Apache License to your work, attach the following boilerplate\nnotice, with the fields enclosed by brackets \"[]\" replaced with your own\nidentifying information. (Don't include the brackets!) The text should be\nenclosed in the appropriate comment syntax for the file format. We also\nrecommend that a file or class name and description of purpose be included on\nthe same \"printed page\" as the copyright notice for easier identification within\nthird-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License." }, { - "name": "github.com/urfave/cli-docs/v3", - "path": "github.com/urfave/cli-docs/v3/LICENSE", - "licenseText": "MIT License\n\nCopyright (c) 2023 urfave/cli maintainers\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + "name": "github.com/urfave/cli/v2", + "path": "github.com/urfave/cli/v2/LICENSE", + "licenseText": "MIT License\n\nCopyright (c) 2022 urfave/cli maintainers\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" }, { - "name": "github.com/urfave/cli/v3", - "path": "github.com/urfave/cli/v3/LICENSE", - "licenseText": "MIT License\n\nCopyright (c) 2023 urfave/cli maintainers\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + "name": "github.com/valyala/bytebufferpool", + "path": "github.com/valyala/bytebufferpool/LICENSE", + "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2016 Aliaksandr Valialkin, VertaMedia\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n" + }, + { + "name": "github.com/valyala/fasthttp", + "path": "github.com/valyala/fasthttp/LICENSE", + "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2015-present Aliaksandr Valialkin, VertaMedia, Kirill Danshin, Erik Dubbelboer, FastHTTP Authors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" }, { "name": "github.com/valyala/fastjson", "path": "github.com/valyala/fastjson/LICENSE", "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2018 Aliaksandr Valialkin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n" }, - { - "name": "github.com/wneessen/go-mail", - "path": "github.com/wneessen/go-mail/LICENSE", - "licenseText": "MIT License\n\nCopyright (c) 2022-2025 The go-mail Authors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" - }, - { - "name": "github.com/wneessen/go-mail/smtp", - "path": "github.com/wneessen/go-mail/smtp/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." - }, { "name": "github.com/x448/float16", "path": "github.com/x448/float16/LICENSE", "licenseText": "MIT License\n\nCopyright (c) 2019 Montgomery Edwards⁴⁴⁸ and Faye Amacker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n" }, + { + "name": "github.com/xanzy/go-gitlab", + "path": "github.com/xanzy/go-gitlab/LICENSE", + "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright {yyyy} {name of copyright owner}\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "github.com/xanzy/ssh-agent", "path": "github.com/xanzy/ssh-agent/LICENSE", "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright {yyyy} {name of copyright owner}\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n" }, + { + "name": "github.com/xrash/smetrics", + "path": "github.com/xrash/smetrics/LICENSE", + "licenseText": "Copyright (C) 2016 Felipe da Cunha Gonçalves\nAll Rights Reserved.\n\nMIT LICENSE\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" + }, { "name": "github.com/yohcop/openid-go", "path": "github.com/yohcop/openid-go/LICENSE", @@ -1139,16 +1044,21 @@ "path": "github.com/zeebo/blake3/LICENSE", "licenseText": "This work is released into the public domain with CC0 1.0.\n\n-------------------------------------------------------------------------------\n\nCreative Commons Legal Code\n\nCC0 1.0 Universal\n\n CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE\n LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN\n ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS\n INFORMATION ON AN \"AS-IS\" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES\n REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS\n PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM\n THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED\n HEREUNDER.\n\nStatement of Purpose\n\nThe laws of most jurisdictions throughout the world automatically confer\nexclusive Copyright and Related Rights (defined below) upon the creator\nand subsequent owner(s) (each and all, an \"owner\") of an original work of\nauthorship and/or a database (each, a \"Work\").\n\nCertain owners wish to permanently relinquish those rights to a Work for\nthe purpose of contributing to a commons of creative, cultural and\nscientific works (\"Commons\") that the public can reliably and without fear\nof later claims of infringement build upon, modify, incorporate in other\nworks, reuse and redistribute as freely as possible in any form whatsoever\nand for any purposes, including without limitation commercial purposes.\nThese owners may contribute to the Commons to promote the ideal of a free\nculture and the further production of creative, cultural and scientific\nworks, or to gain reputation or greater distribution for their Work in\npart through the use and efforts of others.\n\nFor these and/or other purposes and motivations, and without any\nexpectation of additional consideration or compensation, the person\nassociating CC0 with a Work (the \"Affirmer\"), to the extent that he or she\nis an owner of Copyright and Related Rights in the Work, voluntarily\nelects to apply CC0 to the Work and publicly distribute the Work under its\nterms, with knowledge of his or her Copyright and Related Rights in the\nWork and the meaning and intended legal effect of CC0 on those rights.\n\n1. Copyright and Related Rights. A Work made available under CC0 may be\nprotected by copyright and related or neighboring rights (\"Copyright and\nRelated Rights\"). Copyright and Related Rights include, but are not\nlimited to, the following:\n\n i. the right to reproduce, adapt, distribute, perform, display,\n communicate, and translate a Work;\n ii. moral rights retained by the original author(s) and/or performer(s);\niii. publicity and privacy rights pertaining to a person's image or\n likeness depicted in a Work;\n iv. rights protecting against unfair competition in regards to a Work,\n subject to the limitations in paragraph 4(a), below;\n v. rights protecting the extraction, dissemination, use and reuse of data\n in a Work;\n vi. database rights (such as those arising under Directive 96/9/EC of the\n European Parliament and of the Council of 11 March 1996 on the legal\n protection of databases, and under any national implementation\n thereof, including any amended or successor version of such\n directive); and\nvii. other similar, equivalent or corresponding rights throughout the\n world based on applicable law or treaty, and any national\n implementations thereof.\n\n2. Waiver. To the greatest extent permitted by, but not in contravention\nof, applicable law, Affirmer hereby overtly, fully, permanently,\nirrevocably and unconditionally waives, abandons, and surrenders all of\nAffirmer's Copyright and Related Rights and associated claims and causes\nof action, whether now known or unknown (including existing as well as\nfuture claims and causes of action), in the Work (i) in all territories\nworldwide, (ii) for the maximum duration provided by applicable law or\ntreaty (including future time extensions), (iii) in any current or future\nmedium and for any number of copies, and (iv) for any purpose whatsoever,\nincluding without limitation commercial, advertising or promotional\npurposes (the \"Waiver\"). Affirmer makes the Waiver for the benefit of each\nmember of the public at large and to the detriment of Affirmer's heirs and\nsuccessors, fully intending that such Waiver shall not be subject to\nrevocation, rescission, cancellation, termination, or any other legal or\nequitable action to disrupt the quiet enjoyment of the Work by the public\nas contemplated by Affirmer's express Statement of Purpose.\n\n3. Public License Fallback. Should any part of the Waiver for any reason\nbe judged legally invalid or ineffective under applicable law, then the\nWaiver shall be preserved to the maximum extent permitted taking into\naccount Affirmer's express Statement of Purpose. In addition, to the\nextent the Waiver is so judged Affirmer hereby grants to each affected\nperson a royalty-free, non transferable, non sublicensable, non exclusive,\nirrevocable and unconditional license to exercise Affirmer's Copyright and\nRelated Rights in the Work (i) in all territories worldwide, (ii) for the\nmaximum duration provided by applicable law or treaty (including future\ntime extensions), (iii) in any current or future medium and for any number\nof copies, and (iv) for any purpose whatsoever, including without\nlimitation commercial, advertising or promotional purposes (the\n\"License\"). The License shall be deemed effective as of the date CC0 was\napplied by Affirmer to the Work. Should any part of the License for any\nreason be judged legally invalid or ineffective under applicable law, such\npartial invalidity or ineffectiveness shall not invalidate the remainder\nof the License, and in such case Affirmer hereby affirms that he or she\nwill not (i) exercise any of his or her remaining Copyright and Related\nRights in the Work or (ii) assert any associated claims and causes of\naction with respect to the Work, in either case contrary to Affirmer's\nexpress Statement of Purpose.\n\n4. Limitations and Disclaimers.\n\n a. No trademark or patent rights held by Affirmer are waived, abandoned,\n surrendered, licensed or otherwise affected by this document.\n b. Affirmer offers the Work as-is and makes no representations or\n warranties of any kind concerning the Work, express, implied,\n statutory or otherwise, including without limitation warranties of\n title, merchantability, fitness for a particular purpose, non\n infringement, or the absence of latent or other defects, accuracy, or\n the present or absence of errors, whether or not discoverable, all to\n the greatest extent permissible under applicable law.\n c. Affirmer disclaims responsibility for clearing rights of other persons\n that may apply to the Work or any use thereof, including without\n limitation any person's Copyright and Related Rights in the Work.\n Further, Affirmer disclaims responsibility for obtaining any necessary\n consents, permissions or other rights required for any use of the\n Work.\n d. Affirmer understands and acknowledges that Creative Commons is not a\n party to this document and has no duty or obligation with respect to\n this CC0 or use of the Work.\n" }, - { - "name": "gitlab.com/gitlab-org/api/client-go", - "path": "gitlab.com/gitlab-org/api/client-go/LICENSE", - "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright {yyyy} {name of copyright owner}\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" - }, { "name": "go.etcd.io/bbolt", "path": "go.etcd.io/bbolt/LICENSE", "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2013 Ben Johnson\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" }, + { + "name": "go.opentelemetry.io/otel", + "path": "go.opentelemetry.io/otel/LICENSE", + "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, + { + "name": "go.opentelemetry.io/otel/trace", + "path": "go.opentelemetry.io/otel/trace/LICENSE", + "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "go.uber.org/atomic", "path": "go.uber.org/atomic/LICENSE.txt", @@ -1161,58 +1071,53 @@ }, { "name": "go.uber.org/zap", - "path": "go.uber.org/zap/LICENSE", + "path": "go.uber.org/zap/LICENSE.txt", "licenseText": "Copyright (c) 2016-2017 Uber Technologies, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n" }, - { - "name": "go.uber.org/zap/exp/zapslog", - "path": "go.uber.org/zap/exp/zapslog/LICENSE", - "licenseText": "Copyright (c) 2016-2024 Uber Technologies, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n" - }, { "name": "golang.org/x/crypto", "path": "golang.org/x/crypto/LICENSE", - "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/image", "path": "golang.org/x/image/LICENSE", - "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/mod/semver", "path": "golang.org/x/mod/semver/LICENSE", - "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/net", "path": "golang.org/x/net/LICENSE", - "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/oauth2", "path": "golang.org/x/oauth2/LICENSE", - "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/sync", "path": "golang.org/x/sync/LICENSE", - "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/sys", "path": "golang.org/x/sys/LICENSE", - "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/text", "path": "golang.org/x/text/LICENSE", - "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/time/rate", "path": "golang.org/x/time/rate/LICENSE", - "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "google.golang.org/genproto/googleapis/rpc/status", @@ -1229,6 +1134,11 @@ "path": "google.golang.org/protobuf/LICENSE", "licenseText": "Copyright (c) 2018 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, + { + "name": "gopkg.in/gomail.v2", + "path": "gopkg.in/gomail.v2/LICENSE", + "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2014 Alexandre Cesaro\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" + }, { "name": "gopkg.in/ini.v1", "path": "gopkg.in/ini.v1/LICENSE", diff --git a/build.go b/build.go index e81ba54690..234579b514 100644 --- a/build.go +++ b/build.go @@ -5,10 +5,19 @@ package main -// Libraries that are included to vendor utilities used during Makefile build. +// Libraries that are included to vendor utilities used during build. // These libraries will not be included in a normal compilation. import ( + // for embed + _ "github.com/shurcooL/vfsgen" + + // for cover merge + _ "golang.org/x/tools/cover" + // for vet _ "code.gitea.io/gitea-vet" + + // for swagger + _ "github.com/go-swagger/go-swagger/cmd/swagger" ) diff --git a/build/code-batch-process.go b/build/code-batch-process.go index cc2ab68026..b3ee399420 100644 --- a/build/code-batch-process.go +++ b/build/code-batch-process.go @@ -69,7 +69,6 @@ func newFileCollector(fileFilter string, batchSize int) (*fileCollector, error) co.includePatterns = append(co.includePatterns, regexp.MustCompile(`.*\.go$`)) co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`.*\bbindata\.go$`)) - co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`\.pb\.go$`)) co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`tests/gitea-repositories-meta`)) co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`tests/integration/migration-test`)) co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`modules/git/tests`)) @@ -204,6 +203,17 @@ Example: `, "file-batch-exec") } +func getGoVersion() string { + goModFile, err := os.ReadFile("go.mod") + if err != nil { + log.Fatalf(`Faild to read "go.mod": %v`, err) + os.Exit(1) + } + goModVersionRegex := regexp.MustCompile(`go \d+\.\d+`) + goModVersionLine := goModVersionRegex.Find(goModFile) + return string(goModVersionLine[3:]) +} + func newFileCollectorFromMainOptions(mainOptions map[string]string) (fc *fileCollector, err error) { fileFilter := mainOptions["file-filter"] if fileFilter == "" { @@ -268,8 +278,7 @@ func main() { log.Print("the -d option is not supported by gitea-fmt") } cmdErrors = append(cmdErrors, giteaFormatGoImports(files, containsString(subArgs, "-w"))) - cmdErrors = append(cmdErrors, passThroughCmd("gofmt", append([]string{"-w", "-r", "interface{} -> any"}, substArgs...))) - cmdErrors = append(cmdErrors, passThroughCmd("go", append([]string{"run", os.Getenv("GOFUMPT_PACKAGE"), "-extra"}, substArgs...))) + cmdErrors = append(cmdErrors, passThroughCmd("go", append([]string{"run", os.Getenv("GOFUMPT_PACKAGE"), "-extra", "-lang", getGoVersion()}, substArgs...))) default: log.Fatalf("unknown cmd: %s %v", subCmd, subArgs) } diff --git a/build/generate-bindata.go b/build/generate-bindata.go index 2553770762..2fcb7c2f2a 100644 --- a/build/generate-bindata.go +++ b/build/generate-bindata.go @@ -6,22 +6,87 @@ package main import ( + "bytes" + "crypto/sha1" "fmt" + "log" + "net/http" "os" + "path/filepath" + "strconv" - "code.gitea.io/gitea/modules/assetfs" + "github.com/shurcooL/vfsgen" ) -func main() { - if len(os.Args) != 3 { - fmt.Println("usage: ./generate-bindata {local-directory} {bindata-filename}") - os.Exit(1) +func needsUpdate(dir, filename string) (bool, []byte) { + needRegen := false + _, err := os.Stat(filename) + if err != nil { + needRegen = true } - dir, filename := os.Args[1], os.Args[2] - fmt.Printf("generating bindata for %s to %s\n", dir, filename) - if err := assetfs.GenerateEmbedBindata(dir, filename); err != nil { - fmt.Printf("failed: %s\n", err.Error()) - os.Exit(1) + oldHash, err := os.ReadFile(filename + ".hash") + if err != nil { + oldHash = []byte{} } + + hasher := sha1.New() + + err = filepath.WalkDir(dir, func(path string, d os.DirEntry, err error) error { + if err != nil { + return err + } + info, err := d.Info() + if err != nil { + return err + } + _, _ = hasher.Write([]byte(d.Name())) + _, _ = hasher.Write([]byte(info.ModTime().String())) + _, _ = hasher.Write([]byte(strconv.FormatInt(info.Size(), 16))) + return nil + }) + if err != nil { + return true, oldHash + } + + newHash := hasher.Sum([]byte{}) + + if bytes.Compare(oldHash, newHash) != 0 { + return true, newHash + } + + return needRegen, newHash +} + +func main() { + if len(os.Args) < 4 { + log.Fatal("Insufficient number of arguments. Need: directory packageName filename") + } + + dir, packageName, filename := os.Args[1], os.Args[2], os.Args[3] + var useGlobalModTime bool + if len(os.Args) == 5 { + useGlobalModTime, _ = strconv.ParseBool(os.Args[4]) + } + + update, newHash := needsUpdate(dir, filename) + + if !update { + fmt.Printf("bindata for %s already up-to-date\n", packageName) + return + } + + fmt.Printf("generating bindata for %s\n", packageName) + var fsTemplates http.FileSystem = http.Dir(dir) + err := vfsgen.Generate(fsTemplates, vfsgen.Options{ + PackageName: packageName, + BuildTags: "bindata", + VariableName: "Assets", + Filename: filename, + UseGlobalModTime: useGlobalModTime, + }) + if err != nil { + log.Fatalf("%v\n", err) + } + _ = os.WriteFile(filename+".hash", newHash, 0o666) } diff --git a/build/generate-emoji.go b/build/generate-emoji.go index 446ab5f440..17a9670f06 100644 --- a/build/generate-emoji.go +++ b/build/generate-emoji.go @@ -53,6 +53,8 @@ func (e Emoji) MarshalJSON() ([]byte, error) { } func main() { + var err error + flag.Parse() // generate data @@ -81,6 +83,8 @@ var replacer = strings.NewReplacer( var emojiRE = regexp.MustCompile(`\{Emoji:"([^"]*)"`) func generate() ([]byte, error) { + var err error + // load gemoji data res, err := http.Get(gemojiURL) if err != nil { diff --git a/tools/generate-images.js b/build/generate-images.js similarity index 75% rename from tools/generate-images.js rename to build/generate-images.js index d28e0916f7..a3a0f8d8f3 100755 --- a/tools/generate-images.js +++ b/build/generate-images.js @@ -1,13 +1,20 @@ #!/usr/bin/env node -import imageminZopfli from 'imagemin-zopfli'; // eslint-disable-line import-x/no-unresolved -import {loadSVGFromString, Canvas, Rect, util} from 'fabric/node'; // eslint-disable-line import-x/no-unresolved +import imageminZopfli from 'imagemin-zopfli'; import {optimize} from 'svgo'; +import {fabric} from 'fabric'; import {readFile, writeFile} from 'node:fs/promises'; -import {argv, exit} from 'node:process'; -function doExit(err) { +function exit(err) { if (err) console.error(err); - exit(err ? 1 : 0); + process.exit(err ? 1 : 0); +} + +function loadSvg(svg) { + return new Promise((resolve) => { + fabric.loadSVGFromString(svg, (objects, options) => { + resolve({objects, options}); + }); + }); } async function generate(svg, path, {size, bg}) { @@ -20,7 +27,7 @@ async function generate(svg, path, {size, bg}) { 'removeDimensions', { name: 'addAttributesToSVGElement', - params: {attributes: [{width: size}, {height: size}]}, + params: {attributes: [{width: size}, {height: size}]} }, ], }); @@ -28,14 +35,14 @@ async function generate(svg, path, {size, bg}) { return; } - const {objects, options} = await loadSVGFromString(svg); - const canvas = new Canvas(); + const {objects, options} = await loadSvg(svg); + const canvas = new fabric.Canvas(); canvas.setDimensions({width: size, height: size}); const ctx = canvas.getContext('2d'); ctx.scale(options.width ? (size / options.width) : 1, options.height ? (size / options.height) : 1); if (bg) { - canvas.add(new Rect({ + canvas.add(new fabric.Rect({ left: 0, top: 0, height: size * (1 / (size / options.height)), @@ -44,7 +51,7 @@ async function generate(svg, path, {size, bg}) { })); } - canvas.add(util.groupSVGElements(objects, options)); + canvas.add(fabric.util.groupSVGElements(objects, options)); canvas.renderAll(); let png = Buffer.from([]); @@ -57,7 +64,7 @@ async function generate(svg, path, {size, bg}) { } async function main() { - const gitea = argv.slice(2).includes('gitea'); + const gitea = process.argv.slice(2).includes('gitea'); const logoSvg = await readFile(new URL('../assets/logo.svg', import.meta.url), 'utf8'); const faviconSvg = await readFile(new URL('../assets/favicon.svg', import.meta.url), 'utf8'); @@ -72,8 +79,4 @@ async function main() { ]); } -try { - doExit(await main()); -} catch (err) { - doExit(err); -} +main().then(exit).catch(exit); diff --git a/build/generate-licenses.go b/build/generate-licenses.go new file mode 100644 index 0000000000..9a111bc811 --- /dev/null +++ b/build/generate-licenses.go @@ -0,0 +1,122 @@ +//go:build ignore + +package main + +import ( + "archive/tar" + "compress/gzip" + "flag" + "fmt" + "io" + "log" + "net/http" + "os" + "path" + "path/filepath" + "strings" + + "code.gitea.io/gitea/modules/util" +) + +func main() { + var ( + prefix = "gitea-licenses" + url = "https://api.github.com/repos/spdx/license-list-data/tarball" + githubApiToken = "" + githubUsername = "" + destination = "" + ) + + flag.StringVar(&destination, "dest", "options/license/", "destination for the licenses") + flag.StringVar(&githubUsername, "username", "", "github username") + flag.StringVar(&githubApiToken, "token", "", "github api token") + flag.Parse() + + file, err := os.CreateTemp(os.TempDir(), prefix) + if err != nil { + log.Fatalf("Failed to create temp file. %s", err) + } + + defer util.Remove(file.Name()) + + if err := os.RemoveAll(destination); err != nil { + log.Fatalf("Cannot clean destination folder: %v", err) + } + + if err := os.MkdirAll(destination, 0o755); err != nil { + log.Fatalf("Cannot create destination: %v", err) + } + + req, err := http.NewRequest("GET", url, nil) + if err != nil { + log.Fatalf("Failed to download archive. %s", err) + } + + if len(githubApiToken) > 0 && len(githubUsername) > 0 { + req.SetBasicAuth(githubUsername, githubApiToken) + } + + resp, err := http.DefaultClient.Do(req) + if err != nil { + log.Fatalf("Failed to download archive. %s", err) + } + + defer resp.Body.Close() + + if _, err := io.Copy(file, resp.Body); err != nil { + log.Fatalf("Failed to copy archive to file. %s", err) + } + + if _, err := file.Seek(0, 0); err != nil { + log.Fatalf("Failed to reset seek on archive. %s", err) + } + + gz, err := gzip.NewReader(file) + if err != nil { + log.Fatalf("Failed to gunzip the archive. %s", err) + } + + tr := tar.NewReader(gz) + + for { + hdr, err := tr.Next() + + if err == io.EOF { + break + } + + if err != nil { + log.Fatalf("Failed to iterate archive. %s", err) + } + + if !strings.Contains(hdr.Name, "/text/") { + continue + } + + if filepath.Ext(hdr.Name) != ".txt" { + continue + } + + if strings.HasPrefix(filepath.Base(hdr.Name), "README") { + continue + } + + if strings.HasPrefix(filepath.Base(hdr.Name), "deprecated_") { + continue + } + out, err := os.Create(path.Join(destination, strings.TrimSuffix(filepath.Base(hdr.Name), ".txt"))) + if err != nil { + log.Fatalf("Failed to create new file. %s", err) + } + + defer out.Close() + + if _, err := io.Copy(out, tr); err != nil { + log.Fatalf("Failed to write new file. %s", err) + } else { + fmt.Printf("Written %s\n", out.Name()) + } + } + + fmt.Println("Done") +} diff --git a/build/generate-svg.js b/build/generate-svg.js new file mode 100755 index 0000000000..b845da9367 --- /dev/null +++ b/build/generate-svg.js @@ -0,0 +1,66 @@ +#!/usr/bin/env node +import fastGlob from 'fast-glob'; +import {optimize} from 'svgo'; +import {parse} from 'node:path'; +import {readFile, writeFile, mkdir} from 'node:fs/promises'; +import {fileURLToPath} from 'node:url'; + +const glob = (pattern) => fastGlob.sync(pattern, { + cwd: fileURLToPath(new URL('..', import.meta.url)), + absolute: true, +}); + +function exit(err) { + if (err) console.error(err); + process.exit(err ? 1 : 0); +} + +async function processFile(file, {prefix, fullName} = {}) { + let name; + if (fullName) { + name = fullName; + } else { + name = parse(file).name; + if (prefix) name = `${prefix}-${name}`; + if (prefix === 'octicon') name = name.replace(/-[0-9]+$/, ''); // chop of '-16' on octicons + } + + // Set the `xmlns` attribute so that the files are displayable in standalone documents + // The svg backend module will strip the attribute during startup for inline display + const {data} = optimize(await readFile(file, 'utf8'), { + plugins: [ + {name: 'preset-default'}, + {name: 'removeDimensions'}, + {name: 'prefixIds', params: {prefix: () => name}}, + {name: 'addClassesToSVGElement', params: {classNames: ['svg', name]}}, + { + name: 'addAttributesToSVGElement', params: { + attributes: [ + {'xmlns': 'http://www.w3.org/2000/svg'}, + {'width': '16'}, {'height': '16'}, {'aria-hidden': 'true'}, + ] + } + }, + ], + }); + + await writeFile(fileURLToPath(new URL(`../public/assets/img/svg/${name}.svg`, import.meta.url)), data); +} + +function processFiles(pattern, opts) { + return glob(pattern).map((file) => processFile(file, opts)); +} + +async function main() { + try { + await mkdir(fileURLToPath(new URL('../public/assets/img/svg', import.meta.url)), {recursive: true}); + } catch {} + + await Promise.all([ + ...processFiles('node_modules/@primer/octicons/build/svg/*-16.svg', {prefix: 'octicon'}), + ...processFiles('web_src/svg/*.svg'), + ...processFiles('public/assets/img/gitea.svg', {fullName: 'gitea-gitea'}), + ]); +} + +main().then(exit).catch(exit); diff --git a/tools/watch.sh b/build/watch.sh similarity index 100% rename from tools/watch.sh rename to build/watch.sh diff --git a/cmd/actions.go b/cmd/actions.go index 2c51c6a1bc..052afb9ebc 100644 --- a/cmd/actions.go +++ b/cmd/actions.go @@ -4,21 +4,21 @@ package cmd import ( - "context" "fmt" "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/setting" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) var ( // CmdActions represents the available actions sub-commands. CmdActions = &cli.Command{ - Name: "actions", - Usage: "Manage Gitea Actions", - Commands: []*cli.Command{ + Name: "actions", + Usage: "", + Description: "Commands for managing Gitea Actions", + Subcommands: []*cli.Command{ subcmdActionsGenRunnerToken, }, } @@ -39,7 +39,10 @@ var ( } ) -func runGenerateActionsRunnerToken(ctx context.Context, c *cli.Command) error { +func runGenerateActionsRunnerToken(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setting.MustInstalled() scope := c.String("scope") @@ -48,6 +51,6 @@ func runGenerateActionsRunnerToken(ctx context.Context, c *cli.Command) error { if extra.HasError() { return handleCliResponseExtra(extra) } - _, _ = fmt.Printf("%s\n", respText.Text) + _, _ = fmt.Printf("%s\n", respText) return nil } diff --git a/cmd/admin.go b/cmd/admin.go index 559544edd3..d49dcf13cb 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -6,24 +6,36 @@ package cmd import ( "context" + "errors" "fmt" + "net/url" + "os" + "strings" + "text/tabwriter" + asymkey_model "code.gitea.io/gitea/models/asymkey" + auth_model "code.gitea.io/gitea/models/auth" "code.gitea.io/gitea/models/db" repo_model "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/modules/git" - "code.gitea.io/gitea/modules/gitrepo" + "code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/log" repo_module "code.gitea.io/gitea/modules/repository" + "code.gitea.io/gitea/modules/util" + auth_service "code.gitea.io/gitea/services/auth" + "code.gitea.io/gitea/services/auth/source/oauth2" + "code.gitea.io/gitea/services/auth/source/smtp" + repo_service "code.gitea.io/gitea/services/repository" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) var ( // CmdAdmin represents the available admin sub-command. CmdAdmin = &cli.Command{ Name: "admin", - Usage: "Perform common administrative operations", - Commands: []*cli.Command{ + Usage: "Command line interface to perform common administrative operations", + Subcommands: []*cli.Command{ subcmdUser, subcmdRepoSyncReleases, subcmdRegenerate, @@ -41,38 +53,214 @@ var ( subcmdRegenerate = &cli.Command{ Name: "regenerate", Usage: "Regenerate specific files", - Commands: []*cli.Command{ + Subcommands: []*cli.Command{ microcmdRegenHooks, microcmdRegenKeys, }, } + microcmdRegenHooks = &cli.Command{ + Name: "hooks", + Usage: "Regenerate git-hooks", + Action: runRegenerateHooks, + } + + microcmdRegenKeys = &cli.Command{ + Name: "keys", + Usage: "Regenerate authorized_keys file", + Action: runRegenerateKeys, + } + subcmdAuth = &cli.Command{ Name: "auth", Usage: "Modify external auth providers", - Commands: []*cli.Command{ - microcmdAuthAddOauth(), - microcmdAuthUpdateOauth(), - microcmdAuthAddLdapBindDn(), - microcmdAuthUpdateLdapBindDn(), - microcmdAuthAddLdapSimpleAuth(), - microcmdAuthUpdateLdapSimpleAuth(), - microcmdAuthAddSMTP(), - microcmdAuthUpdateSMTP(), + Subcommands: []*cli.Command{ + microcmdAuthAddOauth, + microcmdAuthUpdateOauth, + cmdAuthAddLdapBindDn, + cmdAuthUpdateLdapBindDn, + cmdAuthAddLdapSimpleAuth, + cmdAuthUpdateLdapSimpleAuth, + microcmdAuthAddSMTP, + microcmdAuthUpdateSMTP, microcmdAuthList, microcmdAuthDelete, }, } + microcmdAuthList = &cli.Command{ + Name: "list", + Usage: "List auth sources", + Action: runListAuth, + Flags: []cli.Flag{ + &cli.IntFlag{ + Name: "min-width", + Usage: "Minimal cell width including any padding for the formatted table", + Value: 0, + }, + &cli.IntFlag{ + Name: "tab-width", + Usage: "width of tab characters in formatted table (equivalent number of spaces)", + Value: 8, + }, + &cli.IntFlag{ + Name: "padding", + Usage: "padding added to a cell before computing its width", + Value: 1, + }, + &cli.StringFlag{ + Name: "pad-char", + Usage: `ASCII char used for padding if padchar == '\\t', the Writer will assume that the width of a '\\t' in the formatted output is tabwidth, and cells are left-aligned independent of align_left (for correct-looking results, tabwidth must correspond to the tab width in the viewer displaying the result)`, + Value: "\t", + }, + &cli.BoolFlag{ + Name: "vertical-bars", + Usage: "Set to true to print vertical bars between columns", + }, + }, + } + + idFlag = &cli.Int64Flag{ + Name: "id", + Usage: "ID of authentication source", + } + + microcmdAuthDelete = &cli.Command{ + Name: "delete", + Usage: "Delete specific auth source", + Flags: []cli.Flag{idFlag}, + Action: runDeleteAuth, + } + + oauthCLIFlags = []cli.Flag{ + &cli.StringFlag{ + Name: "name", + Value: "", + Usage: "Application Name", + }, + &cli.StringFlag{ + Name: "provider", + Value: "", + Usage: "OAuth2 Provider", + }, + &cli.StringFlag{ + Name: "key", + Value: "", + Usage: "Client ID (Key)", + }, + &cli.StringFlag{ + Name: "secret", + Value: "", + Usage: "Client Secret", + }, + &cli.StringFlag{ + Name: "auto-discover-url", + Value: "", + Usage: "OpenID Connect Auto Discovery URL (only required when using OpenID Connect as provider)", + }, + &cli.StringFlag{ + Name: "use-custom-urls", + Value: "false", + Usage: "Use custom URLs for GitLab/GitHub OAuth endpoints", + }, + &cli.StringFlag{ + Name: "custom-tenant-id", + Value: "", + Usage: "Use custom Tenant ID for OAuth endpoints", + }, + &cli.StringFlag{ + Name: "custom-auth-url", + Value: "", + Usage: "Use a custom Authorization URL (option for GitLab/GitHub)", + }, + &cli.StringFlag{ + Name: "custom-token-url", + Value: "", + Usage: "Use a custom Token URL (option for GitLab/GitHub)", + }, + &cli.StringFlag{ + Name: "custom-profile-url", + Value: "", + Usage: "Use a custom Profile URL (option for GitLab/GitHub)", + }, + &cli.StringFlag{ + Name: "custom-email-url", + Value: "", + Usage: "Use a custom Email URL (option for GitHub)", + }, + &cli.StringFlag{ + Name: "icon-url", + Value: "", + Usage: "Custom icon URL for OAuth2 login source", + }, + &cli.BoolFlag{ + Name: "skip-local-2fa", + Usage: "Set to true to skip local 2fa for users authenticated by this source", + }, + &cli.StringSliceFlag{ + Name: "scopes", + Value: nil, + Usage: "Scopes to request when to authenticate against this OAuth2 source", + }, + &cli.StringFlag{ + Name: "required-claim-name", + Value: "", + Usage: "Claim name that has to be set to allow users to login with this source", + }, + &cli.StringFlag{ + Name: "required-claim-value", + Value: "", + Usage: "Claim value that has to be set to allow users to login with this source", + }, + &cli.StringFlag{ + Name: "group-claim-name", + Value: "", + Usage: "Claim name providing group names for this source", + }, + &cli.StringFlag{ + Name: "admin-group", + Value: "", + Usage: "Group Claim value for administrator users", + }, + &cli.StringFlag{ + Name: "restricted-group", + Value: "", + Usage: "Group Claim value for restricted users", + }, + &cli.StringFlag{ + Name: "group-team-map", + Value: "", + Usage: "JSON mapping between groups and org teams", + }, + &cli.BoolFlag{ + Name: "group-team-map-removal", + Usage: "Activate automatic team membership removal depending on groups", + }, + } + + microcmdAuthUpdateOauth = &cli.Command{ + Name: "update-oauth", + Usage: "Update existing Oauth authentication source", + Action: runUpdateOauth, + Flags: append(oauthCLIFlags[:1], append([]cli.Flag{idFlag}, oauthCLIFlags[1:]...)...), + } + + microcmdAuthAddOauth = &cli.Command{ + Name: "add-oauth", + Usage: "Add new Oauth authentication source", + Action: runAddOauth, + Flags: oauthCLIFlags, + } + subcmdSendMail = &cli.Command{ Name: "sendmail", Usage: "Send a message to all users", Action: runSendMail, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "title", - Usage: "a title of a message", - Required: true, + Name: "title", + Usage: `a title of a message`, + Value: "", }, &cli.StringFlag{ Name: "content", @@ -86,16 +274,83 @@ var ( }, }, } + + smtpCLIFlags = []cli.Flag{ + &cli.StringFlag{ + Name: "name", + Value: "", + Usage: "Application Name", + }, + &cli.StringFlag{ + Name: "auth-type", + Value: "PLAIN", + Usage: "SMTP Authentication Type (PLAIN/LOGIN/CRAM-MD5) default PLAIN", + }, + &cli.StringFlag{ + Name: "host", + Value: "", + Usage: "SMTP Host", + }, + &cli.IntFlag{ + Name: "port", + Usage: "SMTP Port", + }, + &cli.BoolFlag{ + Name: "force-smtps", + Usage: "SMTPS is always used on port 465. Set this to force SMTPS on other ports.", + Value: true, + }, + &cli.BoolFlag{ + Name: "skip-verify", + Usage: "Skip TLS verify.", + Value: true, + }, + &cli.StringFlag{ + Name: "helo-hostname", + Value: "", + Usage: "Hostname sent with HELO. Leave blank to send current hostname", + }, + &cli.BoolFlag{ + Name: "disable-helo", + Usage: "Disable SMTP helo.", + Value: true, + }, + &cli.StringFlag{ + Name: "allowed-domains", + Value: "", + Usage: "Leave empty to allow all domains. Separate multiple domains with a comma (',')", + }, + &cli.BoolFlag{ + Name: "skip-local-2fa", + Usage: "Skip 2FA to log on.", + Value: true, + }, + &cli.BoolFlag{ + Name: "active", + Usage: "This Authentication Source is Activated.", + Value: true, + }, + } + + microcmdAuthAddSMTP = &cli.Command{ + Name: "add-smtp", + Usage: "Add new SMTP authentication source", + Action: runAddSMTP, + Flags: smtpCLIFlags, + } + + microcmdAuthUpdateSMTP = &cli.Command{ + Name: "update-smtp", + Usage: "Update existing SMTP authentication source", + Action: runUpdateSMTP, + Flags: append(smtpCLIFlags[:1], append([]cli.Flag{idFlag}, smtpCLIFlags[1:]...)...), + } ) -func idFlag() *cli.Int64Flag { - return &cli.Int64Flag{ - Name: "id", - Usage: "ID of authentication source", - } -} +func runRepoSyncReleases(_ *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() -func runRepoSyncReleases(ctx context.Context, _ *cli.Command) error { if err := initDB(ctx); err != nil { return err } @@ -106,7 +361,7 @@ func runRepoSyncReleases(ctx context.Context, _ *cli.Command) error { log.Trace("Synchronizing repository releases (this may take a while)") for page := 1; ; page++ { - repos, count, err := repo_model.SearchRepositoryByName(ctx, repo_model.SearchRepoOptions{ + repos, count, err := repo_model.SearchRepositoryByName(ctx, &repo_model.SearchRepoOptions{ ListOptions: db.ListOptions{ PageSize: repo_model.RepositoryListDefaultPageSize, Page: page, @@ -122,7 +377,7 @@ func runRepoSyncReleases(ctx context.Context, _ *cli.Command) error { log.Trace("Processing next %d repos of %d", len(repos), count) for _, repo := range repos { log.Trace("Synchronizing repo %s with path %s", repo.FullName(), repo.RepoPath()) - gitRepo, err := gitrepo.OpenRepository(ctx, repo) + gitRepo, err := git.OpenRepository(ctx, repo.RepoPath()) if err != nil { log.Warn("OpenRepository: %v", err) continue @@ -157,11 +412,359 @@ func runRepoSyncReleases(ctx context.Context, _ *cli.Command) error { } func getReleaseCount(ctx context.Context, id int64) (int64, error) { - return db.Count[repo_model.Release]( + return repo_model.GetReleaseCountByRepoID( ctx, + id, repo_model.FindReleasesOptions{ - RepoID: id, IncludeTags: true, }, ) } + +func runRegenerateHooks(_ *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err + } + return repo_service.SyncRepositoryHooks(graceful.GetManager().ShutdownContext()) +} + +func runRegenerateKeys(_ *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err + } + return asymkey_model.RewriteAllPublicKeys(ctx) +} + +func parseOAuth2Config(c *cli.Context) *oauth2.Source { + var customURLMapping *oauth2.CustomURLMapping + if c.IsSet("use-custom-urls") { + customURLMapping = &oauth2.CustomURLMapping{ + TokenURL: c.String("custom-token-url"), + AuthURL: c.String("custom-auth-url"), + ProfileURL: c.String("custom-profile-url"), + EmailURL: c.String("custom-email-url"), + Tenant: c.String("custom-tenant-id"), + } + } else { + customURLMapping = nil + } + return &oauth2.Source{ + Provider: c.String("provider"), + ClientID: c.String("key"), + ClientSecret: c.String("secret"), + OpenIDConnectAutoDiscoveryURL: c.String("auto-discover-url"), + CustomURLMapping: customURLMapping, + IconURL: c.String("icon-url"), + SkipLocalTwoFA: c.Bool("skip-local-2fa"), + Scopes: c.StringSlice("scopes"), + RequiredClaimName: c.String("required-claim-name"), + RequiredClaimValue: c.String("required-claim-value"), + GroupClaimName: c.String("group-claim-name"), + AdminGroup: c.String("admin-group"), + RestrictedGroup: c.String("restricted-group"), + GroupTeamMap: c.String("group-team-map"), + GroupTeamMapRemoval: c.Bool("group-team-map-removal"), + } +} + +func runAddOauth(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err + } + + config := parseOAuth2Config(c) + if config.Provider == "openidConnect" { + discoveryURL, err := url.Parse(config.OpenIDConnectAutoDiscoveryURL) + if err != nil || (discoveryURL.Scheme != "http" && discoveryURL.Scheme != "https") { + return fmt.Errorf("invalid Auto Discovery URL: %s (this must be a valid URL starting with http:// or https://)", config.OpenIDConnectAutoDiscoveryURL) + } + } + + return auth_model.CreateSource(&auth_model.Source{ + Type: auth_model.OAuth2, + Name: c.String("name"), + IsActive: true, + Cfg: config, + }) +} + +func runUpdateOauth(c *cli.Context) error { + if !c.IsSet("id") { + return fmt.Errorf("--id flag is missing") + } + + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err + } + + source, err := auth_model.GetSourceByID(c.Int64("id")) + if err != nil { + return err + } + + oAuth2Config := source.Cfg.(*oauth2.Source) + + if c.IsSet("name") { + source.Name = c.String("name") + } + + if c.IsSet("provider") { + oAuth2Config.Provider = c.String("provider") + } + + if c.IsSet("key") { + oAuth2Config.ClientID = c.String("key") + } + + if c.IsSet("secret") { + oAuth2Config.ClientSecret = c.String("secret") + } + + if c.IsSet("auto-discover-url") { + oAuth2Config.OpenIDConnectAutoDiscoveryURL = c.String("auto-discover-url") + } + + if c.IsSet("icon-url") { + oAuth2Config.IconURL = c.String("icon-url") + } + + if c.IsSet("scopes") { + oAuth2Config.Scopes = c.StringSlice("scopes") + } + + if c.IsSet("required-claim-name") { + oAuth2Config.RequiredClaimName = c.String("required-claim-name") + } + if c.IsSet("required-claim-value") { + oAuth2Config.RequiredClaimValue = c.String("required-claim-value") + } + + if c.IsSet("group-claim-name") { + oAuth2Config.GroupClaimName = c.String("group-claim-name") + } + if c.IsSet("admin-group") { + oAuth2Config.AdminGroup = c.String("admin-group") + } + if c.IsSet("restricted-group") { + oAuth2Config.RestrictedGroup = c.String("restricted-group") + } + if c.IsSet("group-team-map") { + oAuth2Config.GroupTeamMap = c.String("group-team-map") + } + if c.IsSet("group-team-map-removal") { + oAuth2Config.GroupTeamMapRemoval = c.Bool("group-team-map-removal") + } + + // update custom URL mapping + customURLMapping := &oauth2.CustomURLMapping{} + + if oAuth2Config.CustomURLMapping != nil { + customURLMapping.TokenURL = oAuth2Config.CustomURLMapping.TokenURL + customURLMapping.AuthURL = oAuth2Config.CustomURLMapping.AuthURL + customURLMapping.ProfileURL = oAuth2Config.CustomURLMapping.ProfileURL + customURLMapping.EmailURL = oAuth2Config.CustomURLMapping.EmailURL + customURLMapping.Tenant = oAuth2Config.CustomURLMapping.Tenant + } + if c.IsSet("use-custom-urls") && c.IsSet("custom-token-url") { + customURLMapping.TokenURL = c.String("custom-token-url") + } + + if c.IsSet("use-custom-urls") && c.IsSet("custom-auth-url") { + customURLMapping.AuthURL = c.String("custom-auth-url") + } + + if c.IsSet("use-custom-urls") && c.IsSet("custom-profile-url") { + customURLMapping.ProfileURL = c.String("custom-profile-url") + } + + if c.IsSet("use-custom-urls") && c.IsSet("custom-email-url") { + customURLMapping.EmailURL = c.String("custom-email-url") + } + + if c.IsSet("use-custom-urls") && c.IsSet("custom-tenant-id") { + customURLMapping.Tenant = c.String("custom-tenant-id") + } + + oAuth2Config.CustomURLMapping = customURLMapping + source.Cfg = oAuth2Config + + return auth_model.UpdateSource(source) +} + +func parseSMTPConfig(c *cli.Context, conf *smtp.Source) error { + if c.IsSet("auth-type") { + conf.Auth = c.String("auth-type") + validAuthTypes := []string{"PLAIN", "LOGIN", "CRAM-MD5"} + if !util.SliceContainsString(validAuthTypes, strings.ToUpper(c.String("auth-type"))) { + return errors.New("Auth must be one of PLAIN/LOGIN/CRAM-MD5") + } + conf.Auth = c.String("auth-type") + } + if c.IsSet("host") { + conf.Host = c.String("host") + } + if c.IsSet("port") { + conf.Port = c.Int("port") + } + if c.IsSet("allowed-domains") { + conf.AllowedDomains = c.String("allowed-domains") + } + if c.IsSet("force-smtps") { + conf.ForceSMTPS = c.Bool("force-smtps") + } + if c.IsSet("skip-verify") { + conf.SkipVerify = c.Bool("skip-verify") + } + if c.IsSet("helo-hostname") { + conf.HeloHostname = c.String("helo-hostname") + } + if c.IsSet("disable-helo") { + conf.DisableHelo = c.Bool("disable-helo") + } + if c.IsSet("skip-local-2fa") { + conf.SkipLocalTwoFA = c.Bool("skip-local-2fa") + } + return nil +} + +func runAddSMTP(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err + } + + if !c.IsSet("name") || len(c.String("name")) == 0 { + return errors.New("name must be set") + } + if !c.IsSet("host") || len(c.String("host")) == 0 { + return errors.New("host must be set") + } + if !c.IsSet("port") { + return errors.New("port must be set") + } + active := true + if c.IsSet("active") { + active = c.Bool("active") + } + + var smtpConfig smtp.Source + if err := parseSMTPConfig(c, &smtpConfig); err != nil { + return err + } + + // If not set default to PLAIN + if len(smtpConfig.Auth) == 0 { + smtpConfig.Auth = "PLAIN" + } + + return auth_model.CreateSource(&auth_model.Source{ + Type: auth_model.SMTP, + Name: c.String("name"), + IsActive: active, + Cfg: &smtpConfig, + }) +} + +func runUpdateSMTP(c *cli.Context) error { + if !c.IsSet("id") { + return fmt.Errorf("--id flag is missing") + } + + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err + } + + source, err := auth_model.GetSourceByID(c.Int64("id")) + if err != nil { + return err + } + + smtpConfig := source.Cfg.(*smtp.Source) + + if err := parseSMTPConfig(c, smtpConfig); err != nil { + return err + } + + if c.IsSet("name") { + source.Name = c.String("name") + } + + if c.IsSet("active") { + source.IsActive = c.Bool("active") + } + + source.Cfg = smtpConfig + + return auth_model.UpdateSource(source) +} + +func runListAuth(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err + } + + authSources, err := auth_model.Sources() + if err != nil { + return err + } + + flags := tabwriter.AlignRight + if c.Bool("vertical-bars") { + flags |= tabwriter.Debug + } + + padChar := byte('\t') + if len(c.String("pad-char")) > 0 { + padChar = c.String("pad-char")[0] + } + + // loop through each source and print + w := tabwriter.NewWriter(os.Stdout, c.Int("min-width"), c.Int("tab-width"), c.Int("padding"), padChar, flags) + fmt.Fprintf(w, "ID\tName\tType\tEnabled\n") + for _, source := range authSources { + fmt.Fprintf(w, "%d\t%s\t%s\t%t\n", source.ID, source.Name, source.Type.String(), source.IsActive) + } + w.Flush() + + return nil +} + +func runDeleteAuth(c *cli.Context) error { + if !c.IsSet("id") { + return fmt.Errorf("--id flag is missing") + } + + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err + } + + source, err := auth_model.GetSourceByID(c.Int64("id")) + if err != nil { + return err + } + + return auth_service.DeleteSource(source) +} diff --git a/cmd/admin_auth.go b/cmd/admin_auth.go deleted file mode 100644 index 1a09366722..0000000000 --- a/cmd/admin_auth.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2023 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "context" - "errors" - "fmt" - "os" - "text/tabwriter" - - auth_model "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/models/db" - auth_service "code.gitea.io/gitea/services/auth" - - "github.com/urfave/cli/v3" -) - -var ( - microcmdAuthDelete = &cli.Command{ - Name: "delete", - Usage: "Delete specific auth source", - Flags: []cli.Flag{idFlag()}, - Action: runDeleteAuth, - } - microcmdAuthList = &cli.Command{ - Name: "list", - Usage: "List auth sources", - Action: runListAuth, - Flags: []cli.Flag{ - &cli.IntFlag{ - Name: "min-width", - Usage: "Minimal cell width including any padding for the formatted table", - Value: 0, - }, - &cli.IntFlag{ - Name: "tab-width", - Usage: "width of tab characters in formatted table (equivalent number of spaces)", - Value: 8, - }, - &cli.IntFlag{ - Name: "padding", - Usage: "padding added to a cell before computing its width", - Value: 1, - }, - &cli.StringFlag{ - Name: "pad-char", - Usage: `ASCII char used for padding if padchar == '\\t', the Writer will assume that the width of a '\\t' in the formatted output is tabwidth, and cells are left-aligned independent of align_left (for correct-looking results, tabwidth must correspond to the tab width in the viewer displaying the result)`, - Value: "\t", - }, - &cli.BoolFlag{ - Name: "vertical-bars", - Usage: "Set to true to print vertical bars between columns", - }, - }, - } -) - -func runListAuth(ctx context.Context, c *cli.Command) error { - if err := initDB(ctx); err != nil { - return err - } - - authSources, err := db.Find[auth_model.Source](ctx, auth_model.FindSourcesOptions{}) - if err != nil { - return err - } - - flags := tabwriter.AlignRight - if c.Bool("vertical-bars") { - flags |= tabwriter.Debug - } - - padChar := byte('\t') - if len(c.String("pad-char")) > 0 { - padChar = c.String("pad-char")[0] - } - - // loop through each source and print - w := tabwriter.NewWriter(os.Stdout, c.Int("min-width"), c.Int("tab-width"), c.Int("padding"), padChar, flags) - fmt.Fprintf(w, "ID\tName\tType\tEnabled\n") - for _, source := range authSources { - fmt.Fprintf(w, "%d\t%s\t%s\t%t\n", source.ID, source.Name, source.Type.String(), source.IsActive) - } - w.Flush() - - return nil -} - -func runDeleteAuth(ctx context.Context, c *cli.Command) error { - if !c.IsSet("id") { - return errors.New("--id flag is missing") - } - - if err := initDB(ctx); err != nil { - return err - } - - source, err := auth_model.GetSourceByID(ctx, c.Int64("id")) - if err != nil { - return err - } - - return auth_service.DeleteSource(ctx, source) -} diff --git a/cmd/admin_auth_ldap.go b/cmd/admin_auth_ldap.go index 069ad6600c..cfa1a23235 100644 --- a/cmd/admin_auth_ldap.go +++ b/cmd/admin_auth_ldap.go @@ -9,23 +9,22 @@ import ( "strings" "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/services/auth/source/ldap" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) type ( authService struct { initDB func(ctx context.Context) error - createAuthSource func(context.Context, *auth.Source) error - updateAuthSource func(context.Context, *auth.Source) error - getAuthSourceByID func(ctx context.Context, id int64) (*auth.Source, error) + createAuthSource func(*auth.Source) error + updateAuthSource func(*auth.Source) error + getAuthSourceByID func(id int64) (*auth.Source, error) } ) -func commonLdapCLIFlags() []cli.Flag { - return []cli.Flag{ +var ( + commonLdapCLIFlags = []cli.Flag{ &cli.StringFlag{ Name: "name", Usage: "Authentication name.", @@ -103,10 +102,8 @@ func commonLdapCLIFlags() []cli.Flag { Usage: "The attribute of the user’s LDAP record containing the user’s avatar.", }, } -} -func ldapBindDnCLIFlags() []cli.Flag { - return append(commonLdapCLIFlags(), + ldapBindDnCLIFlags = append(commonLdapCLIFlags, &cli.StringFlag{ Name: "bind-dn", Usage: "The DN to bind to the LDAP server with when searching for the user.", @@ -130,88 +127,50 @@ func ldapBindDnCLIFlags() []cli.Flag { &cli.UintFlag{ Name: "page-size", Usage: "Search page size.", - }, - &cli.BoolFlag{ - Name: "enable-groups", - Usage: "Enable LDAP groups", - }, - &cli.StringFlag{ - Name: "group-search-base-dn", - Usage: "The LDAP base DN at which group accounts will be searched for", - }, - &cli.StringFlag{ - Name: "group-member-attribute", - Usage: "Group attribute containing list of users", - }, - &cli.StringFlag{ - Name: "group-user-attribute", - Usage: "User attribute listed in group", - }, - &cli.StringFlag{ - Name: "group-filter", - Usage: "Verify group membership in LDAP", - }, - &cli.StringFlag{ - Name: "group-team-map", - Usage: "Map LDAP groups to Organization teams", - }, - &cli.BoolFlag{ - Name: "group-team-map-removal", - Usage: "Remove users from synchronized teams if user does not belong to corresponding LDAP group", }) -} -func ldapSimpleAuthCLIFlags() []cli.Flag { - return append(commonLdapCLIFlags(), + ldapSimpleAuthCLIFlags = append(commonLdapCLIFlags, &cli.StringFlag{ Name: "user-dn", - Usage: "The user's DN.", + Usage: "The user’s DN.", }) -} -func microcmdAuthAddLdapBindDn() *cli.Command { - return &cli.Command{ + cmdAuthAddLdapBindDn = &cli.Command{ Name: "add-ldap", Usage: "Add new LDAP (via Bind DN) authentication source", - Action: func(ctx context.Context, cmd *cli.Command) error { - return newAuthService().addLdapBindDn(ctx, cmd) + Action: func(c *cli.Context) error { + return newAuthService().addLdapBindDn(c) }, - Flags: ldapBindDnCLIFlags(), + Flags: ldapBindDnCLIFlags, } -} -func microcmdAuthUpdateLdapBindDn() *cli.Command { - return &cli.Command{ + cmdAuthUpdateLdapBindDn = &cli.Command{ Name: "update-ldap", Usage: "Update existing LDAP (via Bind DN) authentication source", - Action: func(ctx context.Context, cmd *cli.Command) error { - return newAuthService().updateLdapBindDn(ctx, cmd) + Action: func(c *cli.Context) error { + return newAuthService().updateLdapBindDn(c) }, - Flags: append([]cli.Flag{idFlag()}, ldapBindDnCLIFlags()...), + Flags: append([]cli.Flag{idFlag}, ldapBindDnCLIFlags...), } -} -func microcmdAuthAddLdapSimpleAuth() *cli.Command { - return &cli.Command{ + cmdAuthAddLdapSimpleAuth = &cli.Command{ Name: "add-ldap-simple", Usage: "Add new LDAP (simple auth) authentication source", - Action: func(ctx context.Context, cmd *cli.Command) error { - return newAuthService().addLdapSimpleAuth(ctx, cmd) + Action: func(c *cli.Context) error { + return newAuthService().addLdapSimpleAuth(c) }, - Flags: ldapSimpleAuthCLIFlags(), + Flags: ldapSimpleAuthCLIFlags, } -} -func microcmdAuthUpdateLdapSimpleAuth() *cli.Command { - return &cli.Command{ + cmdAuthUpdateLdapSimpleAuth = &cli.Command{ Name: "update-ldap-simple", Usage: "Update existing LDAP (simple auth) authentication source", - Action: func(ctx context.Context, cmd *cli.Command) error { - return newAuthService().updateLdapSimpleAuth(ctx, cmd) + Action: func(c *cli.Context) error { + return newAuthService().updateLdapSimpleAuth(c) }, - Flags: append([]cli.Flag{idFlag()}, ldapSimpleAuthCLIFlags()...), + Flags: append([]cli.Flag{idFlag}, ldapSimpleAuthCLIFlags...), } -} +) // newAuthService creates a service with default functions. func newAuthService() *authService { @@ -223,8 +182,8 @@ func newAuthService() *authService { } } -// parseAuthSourceLdap assigns values on authSource according to command line flags. -func parseAuthSourceLdap(c *cli.Command, authSource *auth.Source) { +// parseAuthSource assigns values on authSource according to command line flags. +func parseAuthSource(c *cli.Context, authSource *auth.Source) { if c.IsSet("name") { authSource.Name = c.String("name") } @@ -240,11 +199,10 @@ func parseAuthSourceLdap(c *cli.Command, authSource *auth.Source) { if c.IsSet("disable-synchronize-users") { authSource.IsSyncEnabled = !c.Bool("disable-synchronize-users") } - authSource.TwoFactorPolicy = util.Iif(c.Bool("skip-local-2fa"), "skip", "") } // parseLdapConfig assigns values on config according to command line flags. -func parseLdapConfig(c *cli.Command, config *ldap.Source) error { +func parseLdapConfig(c *cli.Context, config *ldap.Source) error { if c.IsSet("name") { config.Name = c.String("name") } @@ -257,7 +215,7 @@ func parseLdapConfig(c *cli.Command, config *ldap.Source) error { if c.IsSet("security-protocol") { p, ok := findLdapSecurityProtocolByName(c.String("security-protocol")) if !ok { - return fmt.Errorf("unknown security protocol name: %s", c.String("security-protocol")) + return fmt.Errorf("Unknown security protocol name: %s", c.String("security-protocol")) } config.SecurityProtocol = p } @@ -312,26 +270,8 @@ func parseLdapConfig(c *cli.Command, config *ldap.Source) error { if c.IsSet("allow-deactivate-all") { config.AllowDeactivateAll = c.Bool("allow-deactivate-all") } - if c.IsSet("enable-groups") { - config.GroupsEnabled = c.Bool("enable-groups") - } - if c.IsSet("group-search-base-dn") { - config.GroupDN = c.String("group-search-base-dn") - } - if c.IsSet("group-member-attribute") { - config.GroupMemberUID = c.String("group-member-attribute") - } - if c.IsSet("group-user-attribute") { - config.UserUID = c.String("group-user-attribute") - } - if c.IsSet("group-filter") { - config.GroupFilter = c.String("group-filter") - } - if c.IsSet("group-team-map") { - config.GroupTeamMap = c.String("group-team-map") - } - if c.IsSet("group-team-map-removal") { - config.GroupTeamMapRemoval = c.Bool("group-team-map-removal") + if c.IsSet("skip-local-2fa") { + config.SkipLocalTwoFA = c.Bool("skip-local-2fa") } return nil } @@ -349,27 +289,32 @@ func findLdapSecurityProtocolByName(name string) (ldap.SecurityProtocol, bool) { // getAuthSource gets the login source by its id defined in the command line flags. // It returns an error if the id is not set, does not match any source or if the source is not of expected type. -func (a *authService) getAuthSource(ctx context.Context, c *cli.Command, authType auth.Type) (*auth.Source, error) { +func (a *authService) getAuthSource(c *cli.Context, authType auth.Type) (*auth.Source, error) { if err := argsSet(c, "id"); err != nil { return nil, err } - authSource, err := a.getAuthSourceByID(ctx, c.Int64("id")) + + authSource, err := a.getAuthSourceByID(c.Int64("id")) if err != nil { return nil, err } if authSource.Type != authType { - return nil, fmt.Errorf("invalid authentication type. expected: %s, actual: %s", authType.String(), authSource.Type.String()) + return nil, fmt.Errorf("Invalid authentication type. expected: %s, actual: %s", authType.String(), authSource.Type.String()) } return authSource, nil } // addLdapBindDn adds a new LDAP via Bind DN authentication source. -func (a *authService) addLdapBindDn(ctx context.Context, c *cli.Command) error { +func (a *authService) addLdapBindDn(c *cli.Context) error { if err := argsSet(c, "name", "security-protocol", "host", "port", "user-search-base", "user-filter", "email-attribute"); err != nil { return err } + + ctx, cancel := installSignals() + defer cancel() + if err := a.initDB(ctx); err != nil { return err } @@ -382,39 +327,45 @@ func (a *authService) addLdapBindDn(ctx context.Context, c *cli.Command) error { }, } - parseAuthSourceLdap(c, authSource) + parseAuthSource(c, authSource) if err := parseLdapConfig(c, authSource.Cfg.(*ldap.Source)); err != nil { return err } - return a.createAuthSource(ctx, authSource) + return a.createAuthSource(authSource) } // updateLdapBindDn updates a new LDAP via Bind DN authentication source. -func (a *authService) updateLdapBindDn(ctx context.Context, c *cli.Command) error { +func (a *authService) updateLdapBindDn(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + if err := a.initDB(ctx); err != nil { return err } - authSource, err := a.getAuthSource(ctx, c, auth.LDAP) + authSource, err := a.getAuthSource(c, auth.LDAP) if err != nil { return err } - parseAuthSourceLdap(c, authSource) + parseAuthSource(c, authSource) if err := parseLdapConfig(c, authSource.Cfg.(*ldap.Source)); err != nil { return err } - return a.updateAuthSource(ctx, authSource) + return a.updateAuthSource(authSource) } // addLdapSimpleAuth adds a new LDAP (simple auth) authentication source. -func (a *authService) addLdapSimpleAuth(ctx context.Context, c *cli.Command) error { +func (a *authService) addLdapSimpleAuth(c *cli.Context) error { if err := argsSet(c, "name", "security-protocol", "host", "port", "user-dn", "user-filter", "email-attribute"); err != nil { return err } + ctx, cancel := installSignals() + defer cancel() + if err := a.initDB(ctx); err != nil { return err } @@ -427,29 +378,32 @@ func (a *authService) addLdapSimpleAuth(ctx context.Context, c *cli.Command) err }, } - parseAuthSourceLdap(c, authSource) + parseAuthSource(c, authSource) if err := parseLdapConfig(c, authSource.Cfg.(*ldap.Source)); err != nil { return err } - return a.createAuthSource(ctx, authSource) + return a.createAuthSource(authSource) } -// updateLdapSimpleAuth updates a new LDAP (simple auth) authentication source. -func (a *authService) updateLdapSimpleAuth(ctx context.Context, c *cli.Command) error { +// updateLdapBindDn updates a new LDAP (simple auth) authentication source. +func (a *authService) updateLdapSimpleAuth(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + if err := a.initDB(ctx); err != nil { return err } - authSource, err := a.getAuthSource(ctx, c, auth.DLDAP) + authSource, err := a.getAuthSource(c, auth.DLDAP) if err != nil { return err } - parseAuthSourceLdap(c, authSource) + parseAuthSource(c, authSource) if err := parseLdapConfig(c, authSource.Cfg.(*ldap.Source)); err != nil { return err } - return a.updateAuthSource(ctx, authSource) + return a.updateAuthSource(authSource) } diff --git a/cmd/admin_auth_ldap_test.go b/cmd/admin_auth_ldap_test.go index 2da7ebc573..210a6463c3 100644 --- a/cmd/admin_auth_ldap_test.go +++ b/cmd/admin_auth_ldap_test.go @@ -8,16 +8,17 @@ import ( "testing" "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/modules/test" "code.gitea.io/gitea/services/auth/source/ldap" "github.com/stretchr/testify/assert" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) func TestAddLdapBindDn(t *testing.T) { // Mock cli functions to do not exit on error - defer test.MockVariableValue(&cli.OsExiter, func(code int) {})() + osExiter := cli.OsExiter + defer func() { cli.OsExiter = osExiter }() + cli.OsExiter = func(code int) {} // Test cases cases := []struct { @@ -50,13 +51,6 @@ func TestAddLdapBindDn(t *testing.T) { "--attributes-in-bind", "--synchronize-users", "--page-size", "99", - "--enable-groups", - "--group-search-base-dn", "ou=group,dc=full-domain-bind,dc=org", - "--group-member-attribute", "memberUid", - "--group-user-attribute", "uid", - "--group-filter", "(|(cn=gitea_users)(cn=admins))", - "--group-team-map", `{"cn=my-group,cn=groups,dc=example,dc=org": {"MyGiteaOrganization": ["MyGiteaTeam1", "MyGiteaTeam2"]}}`, - "--group-team-map-removal", }, source: &auth.Source{ Type: auth.LDAP, @@ -84,13 +78,6 @@ func TestAddLdapBindDn(t *testing.T) { AdminFilter: "(memberOf=cn=admin-group,ou=example,dc=full-domain-bind,dc=org)", RestrictedFilter: "(memberOf=cn=restricted-group,ou=example,dc=full-domain-bind,dc=org)", Enabled: true, - GroupsEnabled: true, - GroupDN: "ou=group,dc=full-domain-bind,dc=org", - GroupMemberUID: "memberUid", - UserUID: "uid", - GroupFilter: "(|(cn=gitea_users)(cn=admins))", - GroupTeamMap: `{"cn=my-group,cn=groups,dc=example,dc=org": {"MyGiteaOrganization": ["MyGiteaTeam1", "MyGiteaTeam2"]}}`, - GroupTeamMapRemoval: true, }, }, }, @@ -134,7 +121,7 @@ func TestAddLdapBindDn(t *testing.T) { "--user-filter", "(memberOf=cn=user-group,ou=example,dc=domain,dc=org)", "--email-attribute", "mail", }, - errMsg: "unknown security protocol name: zzzzz", + errMsg: "Unknown security protocol name: zzzzz", }, // case 3 { @@ -223,28 +210,27 @@ func TestAddLdapBindDn(t *testing.T) { initDB: func(context.Context) error { return nil }, - createAuthSource: func(ctx context.Context, authSource *auth.Source) error { + createAuthSource: func(authSource *auth.Source) error { createdAuthSource = authSource return nil }, - updateAuthSource: func(ctx context.Context, authSource *auth.Source) error { - assert.FailNow(t, "updateAuthSource called", "case %d: should not call updateAuthSource", n) + updateAuthSource: func(authSource *auth.Source) error { + assert.FailNow(t, "case %d: should not call updateAuthSource", n) return nil }, - getAuthSourceByID: func(ctx context.Context, id int64) (*auth.Source, error) { - assert.FailNow(t, "getAuthSourceByID called", "case %d: should not call getAuthSourceByID", n) + getAuthSourceByID: func(id int64) (*auth.Source, error) { + assert.FailNow(t, "case %d: should not call getAuthSourceByID", n) return nil, nil }, } // Create a copy of command to test - app := cli.Command{ - Flags: microcmdAuthAddLdapBindDn().Flags, - Action: service.addLdapBindDn, - } + app := cli.NewApp() + app.Flags = cmdAuthAddLdapBindDn.Flags + app.Action = service.addLdapBindDn // Run it - err := app.Run(t.Context(), c.args) + err := app.Run(c.args) if c.errMsg != "" { assert.EqualError(t, err, c.errMsg, "case %d: error should match", n) } else { @@ -256,7 +242,9 @@ func TestAddLdapBindDn(t *testing.T) { func TestAddLdapSimpleAuth(t *testing.T) { // Mock cli functions to do not exit on error - defer test.MockVariableValue(&cli.OsExiter, func(code int) {})() + osExiter := cli.OsExiter + defer func() { cli.OsExiter = osExiter }() + cli.OsExiter = func(code int) {} // Test cases cases := []struct { @@ -346,12 +334,12 @@ func TestAddLdapSimpleAuth(t *testing.T) { "--name", "ldap (simple auth) source", "--security-protocol", "zzzzz", "--host", "ldap-server", - "--port", "1234", + "--port", "123", "--user-filter", "(&(objectClass=posixAccount)(cn=%s))", "--email-attribute", "mail", "--user-dn", "cn=%s,ou=Users,dc=domain,dc=org", }, - errMsg: "unknown security protocol name: zzzzz", + errMsg: "Unknown security protocol name: zzzzz", }, // case 3 { @@ -453,28 +441,27 @@ func TestAddLdapSimpleAuth(t *testing.T) { initDB: func(context.Context) error { return nil }, - createAuthSource: func(ctx context.Context, authSource *auth.Source) error { + createAuthSource: func(authSource *auth.Source) error { createdAuthSource = authSource return nil }, - updateAuthSource: func(ctx context.Context, authSource *auth.Source) error { - assert.FailNow(t, "updateAuthSource called", "case %d: should not call updateAuthSource", n) + updateAuthSource: func(authSource *auth.Source) error { + assert.FailNow(t, "case %d: should not call updateAuthSource", n) return nil }, - getAuthSourceByID: func(ctx context.Context, id int64) (*auth.Source, error) { - assert.FailNow(t, "getAuthSourceById called", "case %d: should not call getAuthSourceByID", n) + getAuthSourceByID: func(id int64) (*auth.Source, error) { + assert.FailNow(t, "case %d: should not call getAuthSourceByID", n) return nil, nil }, } // Create a copy of command to test - app := &cli.Command{ - Flags: microcmdAuthAddLdapSimpleAuth().Flags, - Action: service.addLdapSimpleAuth, - } + app := cli.NewApp() + app.Flags = cmdAuthAddLdapSimpleAuth.Flags + app.Action = service.addLdapSimpleAuth // Run it - err := app.Run(t.Context(), c.args) + err := app.Run(c.args) if c.errMsg != "" { assert.EqualError(t, err, c.errMsg, "case %d: error should match", n) } else { @@ -486,7 +473,9 @@ func TestAddLdapSimpleAuth(t *testing.T) { func TestUpdateLdapBindDn(t *testing.T) { // Mock cli functions to do not exit on error - defer test.MockVariableValue(&cli.OsExiter, func(code int) {})() + osExiter := cli.OsExiter + defer func() { cli.OsExiter = osExiter }() + cli.OsExiter = func(code int) {} // Test cases cases := []struct { @@ -521,13 +510,6 @@ func TestUpdateLdapBindDn(t *testing.T) { "--bind-password", "secret-bind-full", "--synchronize-users", "--page-size", "99", - "--enable-groups", - "--group-search-base-dn", "ou=group,dc=full-domain-bind,dc=org", - "--group-member-attribute", "memberUid", - "--group-user-attribute", "uid", - "--group-filter", "(|(cn=gitea_users)(cn=admins))", - "--group-team-map", `{"cn=my-group,cn=groups,dc=example,dc=org": {"MyGiteaOrganization": ["MyGiteaTeam1", "MyGiteaTeam2"]}}`, - "--group-team-map-removal", }, id: 23, existingAuthSource: &auth.Source{ @@ -563,13 +545,6 @@ func TestUpdateLdapBindDn(t *testing.T) { AdminFilter: "(memberOf=cn=admin-group,ou=example,dc=full-domain-bind,dc=org)", RestrictedFilter: "(memberOf=cn=restricted-group,ou=example,dc=full-domain-bind,dc=org)", Enabled: true, - GroupsEnabled: true, - GroupDN: "ou=group,dc=full-domain-bind,dc=org", - GroupMemberUID: "memberUid", - UserUID: "uid", - GroupFilter: "(|(cn=gitea_users)(cn=admins))", - GroupTeamMap: `{"cn=my-group,cn=groups,dc=example,dc=org": {"MyGiteaOrganization": ["MyGiteaTeam1", "MyGiteaTeam2"]}}`, - GroupTeamMapRemoval: true, }, }, }, @@ -861,7 +836,7 @@ func TestUpdateLdapBindDn(t *testing.T) { "--id", "1", "--security-protocol", "xxxxx", }, - errMsg: "unknown security protocol name: xxxxx", + errMsg: "Unknown security protocol name: xxxxx", }, // case 22 { @@ -880,7 +855,7 @@ func TestUpdateLdapBindDn(t *testing.T) { Type: auth.OAuth2, Cfg: &ldap.Source{}, }, - errMsg: "invalid authentication type. expected: LDAP (via BindDN), actual: OAuth2", + errMsg: "Invalid authentication type. expected: LDAP (via BindDN), actual: OAuth2", }, // case 24 { @@ -921,15 +896,15 @@ func TestUpdateLdapBindDn(t *testing.T) { initDB: func(context.Context) error { return nil }, - createAuthSource: func(ctx context.Context, authSource *auth.Source) error { - assert.FailNow(t, "createAuthSource called", "case %d: should not call createAuthSource", n) + createAuthSource: func(authSource *auth.Source) error { + assert.FailNow(t, "case %d: should not call createAuthSource", n) return nil }, - updateAuthSource: func(ctx context.Context, authSource *auth.Source) error { + updateAuthSource: func(authSource *auth.Source) error { updatedAuthSource = authSource return nil }, - getAuthSourceByID: func(ctx context.Context, id int64) (*auth.Source, error) { + getAuthSourceByID: func(id int64) (*auth.Source, error) { if c.id != 0 { assert.Equal(t, c.id, id, "case %d: wrong id", n) } @@ -944,12 +919,12 @@ func TestUpdateLdapBindDn(t *testing.T) { } // Create a copy of command to test - app := cli.Command{ - Flags: microcmdAuthUpdateLdapBindDn().Flags, - Action: service.updateLdapBindDn, - } + app := cli.NewApp() + app.Flags = cmdAuthUpdateLdapBindDn.Flags + app.Action = service.updateLdapBindDn + // Run it - err := app.Run(t.Context(), c.args) + err := app.Run(c.args) if c.errMsg != "" { assert.EqualError(t, err, c.errMsg, "case %d: error should match", n) } else { @@ -961,7 +936,9 @@ func TestUpdateLdapBindDn(t *testing.T) { func TestUpdateLdapSimpleAuth(t *testing.T) { // Mock cli functions to do not exit on error - defer test.MockVariableValue(&cli.OsExiter, func(code int) {})() + osExiter := cli.OsExiter + defer func() { cli.OsExiter = osExiter }() + cli.OsExiter = func(code int) {} // Test cases cases := []struct { @@ -1252,7 +1229,7 @@ func TestUpdateLdapSimpleAuth(t *testing.T) { "--id", "1", "--security-protocol", "xxxxx", }, - errMsg: "unknown security protocol name: xxxxx", + errMsg: "Unknown security protocol name: xxxxx", }, // case 18 { @@ -1271,7 +1248,7 @@ func TestUpdateLdapSimpleAuth(t *testing.T) { Type: auth.PAM, Cfg: &ldap.Source{}, }, - errMsg: "invalid authentication type. expected: LDAP (simple auth), actual: PAM", + errMsg: "Invalid authentication type. expected: LDAP (simple auth), actual: PAM", }, // case 20 { @@ -1309,15 +1286,15 @@ func TestUpdateLdapSimpleAuth(t *testing.T) { initDB: func(context.Context) error { return nil }, - createAuthSource: func(ctx context.Context, authSource *auth.Source) error { - assert.FailNow(t, "createAuthSource called", "case %d: should not call createAuthSource", n) + createAuthSource: func(authSource *auth.Source) error { + assert.FailNow(t, "case %d: should not call createAuthSource", n) return nil }, - updateAuthSource: func(ctx context.Context, authSource *auth.Source) error { + updateAuthSource: func(authSource *auth.Source) error { updatedAuthSource = authSource return nil }, - getAuthSourceByID: func(ctx context.Context, id int64) (*auth.Source, error) { + getAuthSourceByID: func(id int64) (*auth.Source, error) { if c.id != 0 { assert.Equal(t, c.id, id, "case %d: wrong id", n) } @@ -1332,12 +1309,12 @@ func TestUpdateLdapSimpleAuth(t *testing.T) { } // Create a copy of command to test - app := cli.Command{ - Flags: microcmdAuthUpdateLdapSimpleAuth().Flags, - Action: service.updateLdapSimpleAuth, - } + app := cli.NewApp() + app.Flags = cmdAuthUpdateLdapSimpleAuth.Flags + app.Action = service.updateLdapSimpleAuth + // Run it - err := app.Run(t.Context(), c.args) + err := app.Run(c.args) if c.errMsg != "" { assert.EqualError(t, err, c.errMsg, "case %d: error should match", n) } else { diff --git a/cmd/admin_auth_oauth.go b/cmd/admin_auth_oauth.go deleted file mode 100644 index d1aa753500..0000000000 --- a/cmd/admin_auth_oauth.go +++ /dev/null @@ -1,306 +0,0 @@ -// Copyright 2023 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "context" - "errors" - "fmt" - "net/url" - - auth_model "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/modules/util" - "code.gitea.io/gitea/services/auth/source/oauth2" - - "github.com/urfave/cli/v3" -) - -func oauthCLIFlags() []cli.Flag { - return []cli.Flag{ - &cli.StringFlag{ - Name: "name", - Value: "", - Usage: "Application Name", - }, - &cli.StringFlag{ - Name: "provider", - Value: "", - Usage: "OAuth2 Provider", - }, - &cli.StringFlag{ - Name: "key", - Value: "", - Usage: "Client ID (Key)", - }, - &cli.StringFlag{ - Name: "secret", - Value: "", - Usage: "Client Secret", - }, - &cli.StringFlag{ - Name: "auto-discover-url", - Value: "", - Usage: "OpenID Connect Auto Discovery URL (only required when using OpenID Connect as provider)", - }, - &cli.StringFlag{ - Name: "use-custom-urls", - Value: "false", - Usage: "Use custom URLs for GitLab/GitHub OAuth endpoints", - }, - &cli.StringFlag{ - Name: "custom-tenant-id", - Value: "", - Usage: "Use custom Tenant ID for OAuth endpoints", - }, - &cli.StringFlag{ - Name: "custom-auth-url", - Value: "", - Usage: "Use a custom Authorization URL (option for GitLab/GitHub)", - }, - &cli.StringFlag{ - Name: "custom-token-url", - Value: "", - Usage: "Use a custom Token URL (option for GitLab/GitHub)", - }, - &cli.StringFlag{ - Name: "custom-profile-url", - Value: "", - Usage: "Use a custom Profile URL (option for GitLab/GitHub)", - }, - &cli.StringFlag{ - Name: "custom-email-url", - Value: "", - Usage: "Use a custom Email URL (option for GitHub)", - }, - &cli.StringFlag{ - Name: "icon-url", - Value: "", - Usage: "Custom icon URL for OAuth2 login source", - }, - &cli.BoolFlag{ - Name: "skip-local-2fa", - Usage: "Set to true to skip local 2fa for users authenticated by this source", - }, - &cli.StringSliceFlag{ - Name: "scopes", - Value: nil, - Usage: "Scopes to request when to authenticate against this OAuth2 source", - }, - &cli.StringFlag{ - Name: "required-claim-name", - Value: "", - Usage: "Claim name that has to be set to allow users to login with this source", - }, - &cli.StringFlag{ - Name: "required-claim-value", - Value: "", - Usage: "Claim value that has to be set to allow users to login with this source", - }, - &cli.StringFlag{ - Name: "group-claim-name", - Value: "", - Usage: "Claim name providing group names for this source", - }, - &cli.StringFlag{ - Name: "admin-group", - Value: "", - Usage: "Group Claim value for administrator users", - }, - &cli.StringFlag{ - Name: "restricted-group", - Value: "", - Usage: "Group Claim value for restricted users", - }, - &cli.StringFlag{ - Name: "group-team-map", - Value: "", - Usage: "JSON mapping between groups and org teams", - }, - &cli.BoolFlag{ - Name: "group-team-map-removal", - Usage: "Activate automatic team membership removal depending on groups", - }, - } -} - -func microcmdAuthAddOauth() *cli.Command { - return &cli.Command{ - Name: "add-oauth", - Usage: "Add new Oauth authentication source", - Action: func(ctx context.Context, cmd *cli.Command) error { - return newAuthService().runAddOauth(ctx, cmd) - }, - Flags: oauthCLIFlags(), - } -} - -func microcmdAuthUpdateOauth() *cli.Command { - return &cli.Command{ - Name: "update-oauth", - Usage: "Update existing Oauth authentication source", - Action: func(ctx context.Context, cmd *cli.Command) error { - return newAuthService().runUpdateOauth(ctx, cmd) - }, - Flags: append(oauthCLIFlags()[:1], append([]cli.Flag{&cli.Int64Flag{ - Name: "id", - Usage: "ID of authentication source", - }}, oauthCLIFlags()[1:]...)...), - } -} - -func parseOAuth2Config(c *cli.Command) *oauth2.Source { - var customURLMapping *oauth2.CustomURLMapping - if c.IsSet("use-custom-urls") { - customURLMapping = &oauth2.CustomURLMapping{ - TokenURL: c.String("custom-token-url"), - AuthURL: c.String("custom-auth-url"), - ProfileURL: c.String("custom-profile-url"), - EmailURL: c.String("custom-email-url"), - Tenant: c.String("custom-tenant-id"), - } - } else { - customURLMapping = nil - } - return &oauth2.Source{ - Provider: c.String("provider"), - ClientID: c.String("key"), - ClientSecret: c.String("secret"), - OpenIDConnectAutoDiscoveryURL: c.String("auto-discover-url"), - CustomURLMapping: customURLMapping, - IconURL: c.String("icon-url"), - Scopes: c.StringSlice("scopes"), - RequiredClaimName: c.String("required-claim-name"), - RequiredClaimValue: c.String("required-claim-value"), - GroupClaimName: c.String("group-claim-name"), - AdminGroup: c.String("admin-group"), - RestrictedGroup: c.String("restricted-group"), - GroupTeamMap: c.String("group-team-map"), - GroupTeamMapRemoval: c.Bool("group-team-map-removal"), - } -} - -func (a *authService) runAddOauth(ctx context.Context, c *cli.Command) error { - if err := a.initDB(ctx); err != nil { - return err - } - - config := parseOAuth2Config(c) - if config.Provider == "openidConnect" { - discoveryURL, err := url.Parse(config.OpenIDConnectAutoDiscoveryURL) - if err != nil || (discoveryURL.Scheme != "http" && discoveryURL.Scheme != "https") { - return fmt.Errorf("invalid Auto Discovery URL: %s (this must be a valid URL starting with http:// or https://)", config.OpenIDConnectAutoDiscoveryURL) - } - } - - return a.createAuthSource(ctx, &auth_model.Source{ - Type: auth_model.OAuth2, - Name: c.String("name"), - IsActive: true, - Cfg: config, - TwoFactorPolicy: util.Iif(c.Bool("skip-local-2fa"), "skip", ""), - }) -} - -func (a *authService) runUpdateOauth(ctx context.Context, c *cli.Command) error { - if !c.IsSet("id") { - return errors.New("--id flag is missing") - } - - if err := a.initDB(ctx); err != nil { - return err - } - - source, err := a.getAuthSourceByID(ctx, c.Int64("id")) - if err != nil { - return err - } - - oAuth2Config := source.Cfg.(*oauth2.Source) - - if c.IsSet("name") { - source.Name = c.String("name") - } - - if c.IsSet("provider") { - oAuth2Config.Provider = c.String("provider") - } - - if c.IsSet("key") { - oAuth2Config.ClientID = c.String("key") - } - - if c.IsSet("secret") { - oAuth2Config.ClientSecret = c.String("secret") - } - - if c.IsSet("auto-discover-url") { - oAuth2Config.OpenIDConnectAutoDiscoveryURL = c.String("auto-discover-url") - } - - if c.IsSet("icon-url") { - oAuth2Config.IconURL = c.String("icon-url") - } - - if c.IsSet("scopes") { - oAuth2Config.Scopes = c.StringSlice("scopes") - } - - if c.IsSet("required-claim-name") { - oAuth2Config.RequiredClaimName = c.String("required-claim-name") - } - if c.IsSet("required-claim-value") { - oAuth2Config.RequiredClaimValue = c.String("required-claim-value") - } - - if c.IsSet("group-claim-name") { - oAuth2Config.GroupClaimName = c.String("group-claim-name") - } - if c.IsSet("admin-group") { - oAuth2Config.AdminGroup = c.String("admin-group") - } - if c.IsSet("restricted-group") { - oAuth2Config.RestrictedGroup = c.String("restricted-group") - } - if c.IsSet("group-team-map") { - oAuth2Config.GroupTeamMap = c.String("group-team-map") - } - if c.IsSet("group-team-map-removal") { - oAuth2Config.GroupTeamMapRemoval = c.Bool("group-team-map-removal") - } - - // update custom URL mapping - customURLMapping := &oauth2.CustomURLMapping{} - - if oAuth2Config.CustomURLMapping != nil { - customURLMapping.TokenURL = oAuth2Config.CustomURLMapping.TokenURL - customURLMapping.AuthURL = oAuth2Config.CustomURLMapping.AuthURL - customURLMapping.ProfileURL = oAuth2Config.CustomURLMapping.ProfileURL - customURLMapping.EmailURL = oAuth2Config.CustomURLMapping.EmailURL - customURLMapping.Tenant = oAuth2Config.CustomURLMapping.Tenant - } - if c.IsSet("use-custom-urls") && c.IsSet("custom-token-url") { - customURLMapping.TokenURL = c.String("custom-token-url") - } - - if c.IsSet("use-custom-urls") && c.IsSet("custom-auth-url") { - customURLMapping.AuthURL = c.String("custom-auth-url") - } - - if c.IsSet("use-custom-urls") && c.IsSet("custom-profile-url") { - customURLMapping.ProfileURL = c.String("custom-profile-url") - } - - if c.IsSet("use-custom-urls") && c.IsSet("custom-email-url") { - customURLMapping.EmailURL = c.String("custom-email-url") - } - - if c.IsSet("use-custom-urls") && c.IsSet("custom-tenant-id") { - customURLMapping.Tenant = c.String("custom-tenant-id") - } - - oAuth2Config.CustomURLMapping = customURLMapping - source.Cfg = oAuth2Config - source.TwoFactorPolicy = util.Iif(c.Bool("skip-local-2fa"), "skip", "") - return a.updateAuthSource(ctx, source) -} diff --git a/cmd/admin_auth_oauth_test.go b/cmd/admin_auth_oauth_test.go deleted file mode 100644 index df1bd9c1a6..0000000000 --- a/cmd/admin_auth_oauth_test.go +++ /dev/null @@ -1,333 +0,0 @@ -// Copyright 2025 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "context" - "testing" - - auth_model "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/services/auth/source/oauth2" - - "github.com/stretchr/testify/assert" - "github.com/urfave/cli/v3" -) - -func TestAddOauth(t *testing.T) { - testCases := []struct { - name string - args []string - source *auth_model.Source - errMsg string - }{ - { - name: "valid config", - args: []string{ - "--name", "test", - "--provider", "github", - "--key", "some_key", - "--secret", "some_secret", - }, - source: &auth_model.Source{ - Type: auth_model.OAuth2, - Name: "test", - IsActive: true, - Cfg: &oauth2.Source{ - Scopes: []string{}, - Provider: "github", - ClientID: "some_key", - ClientSecret: "some_secret", - }, - TwoFactorPolicy: "", - }, - }, - { - name: "valid config with openid connect", - args: []string{ - "--name", "test", - "--provider", "openidConnect", - "--key", "some_key", - "--secret", "some_secret", - "--auto-discover-url", "https://example.com", - }, - source: &auth_model.Source{ - Type: auth_model.OAuth2, - Name: "test", - IsActive: true, - Cfg: &oauth2.Source{ - Scopes: []string{}, - Provider: "openidConnect", - ClientID: "some_key", - ClientSecret: "some_secret", - OpenIDConnectAutoDiscoveryURL: "https://example.com", - }, - TwoFactorPolicy: "", - }, - }, - { - name: "valid config with options", - args: []string{ - "--name", "test", - "--provider", "gitlab", - "--key", "some_key", - "--secret", "some_secret", - "--use-custom-urls", "true", - "--custom-token-url", "https://example.com/token", - "--custom-auth-url", "https://example.com/auth", - "--custom-profile-url", "https://example.com/profile", - "--custom-email-url", "https://example.com/email", - "--custom-tenant-id", "some_tenant", - "--icon-url", "https://example.com/icon", - "--scopes", "scope1,scope2", - "--skip-local-2fa", "true", - "--required-claim-name", "claim_name", - "--required-claim-value", "claim_value", - "--group-claim-name", "group_name", - "--admin-group", "admin", - "--restricted-group", "restricted", - "--group-team-map", `{"group1": [1,2]}`, - "--group-team-map-removal=true", - }, - source: &auth_model.Source{ - Type: auth_model.OAuth2, - Name: "test", - IsActive: true, - Cfg: &oauth2.Source{ - Provider: "gitlab", - ClientID: "some_key", - ClientSecret: "some_secret", - CustomURLMapping: &oauth2.CustomURLMapping{ - TokenURL: "https://example.com/token", - AuthURL: "https://example.com/auth", - ProfileURL: "https://example.com/profile", - EmailURL: "https://example.com/email", - Tenant: "some_tenant", - }, - IconURL: "https://example.com/icon", - Scopes: []string{"scope1", "scope2"}, - RequiredClaimName: "claim_name", - RequiredClaimValue: "claim_value", - GroupClaimName: "group_name", - AdminGroup: "admin", - RestrictedGroup: "restricted", - GroupTeamMap: `{"group1": [1,2]}`, - GroupTeamMapRemoval: true, - }, - TwoFactorPolicy: "skip", - }, - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - var createdSource *auth_model.Source - a := &authService{ - initDB: func(ctx context.Context) error { - return nil - }, - createAuthSource: func(ctx context.Context, source *auth_model.Source) error { - createdSource = source - return nil - }, - } - - app := &cli.Command{ - Flags: microcmdAuthAddOauth().Flags, - Action: a.runAddOauth, - } - - args := []string{"oauth-test"} - args = append(args, tc.args...) - - err := app.Run(t.Context(), args) - - if tc.errMsg != "" { - assert.EqualError(t, err, tc.errMsg) - } else { - assert.NoError(t, err) - assert.Equal(t, tc.source, createdSource) - } - }) - } -} - -func TestUpdateOauth(t *testing.T) { - testCases := []struct { - name string - args []string - id int64 - existingAuthSource *auth_model.Source - authSource *auth_model.Source - errMsg string - }{ - { - name: "missing id", - args: []string{ - "--name", "test", - }, - errMsg: "--id flag is missing", - }, - { - name: "valid config", - id: 1, - existingAuthSource: &auth_model.Source{ - ID: 1, - Type: auth_model.OAuth2, - Name: "old name", - IsActive: true, - Cfg: &oauth2.Source{ - Provider: "github", - ClientID: "old_key", - ClientSecret: "old_secret", - }, - TwoFactorPolicy: "", - }, - args: []string{ - "--id", "1", - "--name", "test", - "--provider", "gitlab", - "--key", "new_key", - "--secret", "new_secret", - }, - authSource: &auth_model.Source{ - ID: 1, - Type: auth_model.OAuth2, - Name: "test", - IsActive: true, - Cfg: &oauth2.Source{ - Provider: "gitlab", - ClientID: "new_key", - ClientSecret: "new_secret", - CustomURLMapping: &oauth2.CustomURLMapping{}, - }, - TwoFactorPolicy: "", - }, - }, - { - name: "valid config with options", - id: 1, - existingAuthSource: &auth_model.Source{ - ID: 1, - Type: auth_model.OAuth2, - Name: "old name", - IsActive: true, - Cfg: &oauth2.Source{ - Provider: "gitlab", - ClientID: "old_key", - ClientSecret: "old_secret", - CustomURLMapping: &oauth2.CustomURLMapping{ - TokenURL: "https://old.example.com/token", - AuthURL: "https://old.example.com/auth", - ProfileURL: "https://old.example.com/profile", - EmailURL: "https://old.example.com/email", - Tenant: "old_tenant", - }, - IconURL: "https://old.example.com/icon", - Scopes: []string{"old_scope1", "old_scope2"}, - RequiredClaimName: "old_claim_name", - RequiredClaimValue: "old_claim_value", - GroupClaimName: "old_group_name", - AdminGroup: "old_admin", - RestrictedGroup: "old_restricted", - GroupTeamMap: `{"old_group1": [1,2]}`, - GroupTeamMapRemoval: true, - }, - TwoFactorPolicy: "", - }, - args: []string{ - "--id", "1", - "--name", "test", - "--provider", "github", - "--key", "new_key", - "--secret", "new_secret", - "--use-custom-urls", "true", - "--custom-token-url", "https://example.com/token", - "--custom-auth-url", "https://example.com/auth", - "--custom-profile-url", "https://example.com/profile", - "--custom-email-url", "https://example.com/email", - "--custom-tenant-id", "new_tenant", - "--icon-url", "https://example.com/icon", - "--scopes", "scope1,scope2", - "--skip-local-2fa=true", - "--required-claim-name", "claim_name", - "--required-claim-value", "claim_value", - "--group-claim-name", "group_name", - "--admin-group", "admin", - "--restricted-group", "restricted", - "--group-team-map", `{"group1": [1,2]}`, - "--group-team-map-removal=false", - }, - authSource: &auth_model.Source{ - ID: 1, - Type: auth_model.OAuth2, - Name: "test", - IsActive: true, - Cfg: &oauth2.Source{ - Provider: "github", - ClientID: "new_key", - ClientSecret: "new_secret", - CustomURLMapping: &oauth2.CustomURLMapping{ - TokenURL: "https://example.com/token", - AuthURL: "https://example.com/auth", - ProfileURL: "https://example.com/profile", - EmailURL: "https://example.com/email", - Tenant: "new_tenant", - }, - IconURL: "https://example.com/icon", - Scopes: []string{"scope1", "scope2"}, - RequiredClaimName: "claim_name", - RequiredClaimValue: "claim_value", - GroupClaimName: "group_name", - AdminGroup: "admin", - RestrictedGroup: "restricted", - GroupTeamMap: `{"group1": [1,2]}`, - GroupTeamMapRemoval: false, - }, - TwoFactorPolicy: "skip", - }, - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - a := &authService{ - initDB: func(ctx context.Context) error { - return nil - }, - getAuthSourceByID: func(ctx context.Context, id int64) (*auth_model.Source, error) { - return &auth_model.Source{ - ID: 1, - Type: auth_model.OAuth2, - Name: "test", - IsActive: true, - Cfg: &oauth2.Source{ - CustomURLMapping: &oauth2.CustomURLMapping{}, - }, - TwoFactorPolicy: "skip", - }, nil - }, - updateAuthSource: func(ctx context.Context, source *auth_model.Source) error { - assert.Equal(t, tc.authSource, source) - return nil - }, - } - - app := &cli.Command{ - Flags: microcmdAuthUpdateOauth().Flags, - Action: a.runUpdateOauth, - } - - args := []string{"oauth-test"} - args = append(args, tc.args...) - - err := app.Run(t.Context(), args) - - if tc.errMsg != "" { - assert.EqualError(t, err, tc.errMsg) - } else { - assert.NoError(t, err) - } - }) - } -} diff --git a/cmd/admin_auth_smtp.go b/cmd/admin_auth_smtp.go deleted file mode 100644 index 93e0587fc3..0000000000 --- a/cmd/admin_auth_smtp.go +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2023 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "context" - "errors" - "strings" - - auth_model "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/modules/util" - "code.gitea.io/gitea/services/auth/source/smtp" - - "github.com/urfave/cli/v3" -) - -func smtpCLIFlags() []cli.Flag { - return []cli.Flag{ - &cli.StringFlag{ - Name: "name", - Value: "", - Usage: "Application Name", - }, - &cli.StringFlag{ - Name: "auth-type", - Value: "PLAIN", - Usage: "SMTP Authentication Type (PLAIN/LOGIN/CRAM-MD5) default PLAIN", - }, - &cli.StringFlag{ - Name: "host", - Value: "", - Usage: "SMTP Host", - }, - &cli.IntFlag{ - Name: "port", - Usage: "SMTP Port", - }, - &cli.BoolFlag{ - Name: "force-smtps", - Usage: "SMTPS is always used on port 465. Set this to force SMTPS on other ports.", - }, - &cli.BoolFlag{ - Name: "skip-verify", - Usage: "Skip TLS verify.", - }, - &cli.StringFlag{ - Name: "helo-hostname", - Value: "", - Usage: "Hostname sent with HELO. Leave blank to send current hostname", - }, - &cli.BoolFlag{ - Name: "disable-helo", - Usage: "Disable SMTP helo.", - }, - &cli.StringFlag{ - Name: "allowed-domains", - Value: "", - Usage: "Leave empty to allow all domains. Separate multiple domains with a comma (',')", - }, - &cli.BoolFlag{ - Name: "skip-local-2fa", - Usage: "Skip 2FA to log on.", - }, - &cli.BoolFlag{ - Name: "active", - Usage: "This Authentication Source is Activated.", - Value: true, - }, - } -} - -func microcmdAuthUpdateSMTP() *cli.Command { - return &cli.Command{ - Name: "update-smtp", - Usage: "Update existing SMTP authentication source", - Action: func(ctx context.Context, cmd *cli.Command) error { - return newAuthService().runUpdateSMTP(ctx, cmd) - }, - Flags: append(smtpCLIFlags()[:1], append([]cli.Flag{&cli.Int64Flag{ - Name: "id", - Usage: "ID of authentication source", - }}, smtpCLIFlags()[1:]...)...), - } -} - -func microcmdAuthAddSMTP() *cli.Command { - return &cli.Command{ - Name: "add-smtp", - Usage: "Add new SMTP authentication source", - Action: func(ctx context.Context, cmd *cli.Command) error { - return newAuthService().runAddSMTP(ctx, cmd) - }, - Flags: smtpCLIFlags(), - } -} - -func parseSMTPConfig(c *cli.Command, conf *smtp.Source) error { - if c.IsSet("auth-type") { - conf.Auth = c.String("auth-type") - validAuthTypes := []string{"PLAIN", "LOGIN", "CRAM-MD5"} - if !util.SliceContainsString(validAuthTypes, strings.ToUpper(c.String("auth-type"))) { - return errors.New("Auth must be one of PLAIN/LOGIN/CRAM-MD5") - } - conf.Auth = c.String("auth-type") - } - if c.IsSet("host") { - conf.Host = c.String("host") - } - if c.IsSet("port") { - conf.Port = c.Int("port") - } - if c.IsSet("allowed-domains") { - conf.AllowedDomains = c.String("allowed-domains") - } - if c.IsSet("force-smtps") { - conf.ForceSMTPS = c.Bool("force-smtps") - } - if c.IsSet("skip-verify") { - conf.SkipVerify = c.Bool("skip-verify") - } - if c.IsSet("helo-hostname") { - conf.HeloHostname = c.String("helo-hostname") - } - if c.IsSet("disable-helo") { - conf.DisableHelo = c.Bool("disable-helo") - } - return nil -} - -func (a *authService) runAddSMTP(ctx context.Context, c *cli.Command) error { - if err := a.initDB(ctx); err != nil { - return err - } - - if !c.IsSet("name") || len(c.String("name")) == 0 { - return errors.New("name must be set") - } - if !c.IsSet("host") || len(c.String("host")) == 0 { - return errors.New("host must be set") - } - if !c.IsSet("port") { - return errors.New("port must be set") - } - active := true - if c.IsSet("active") { - active = c.Bool("active") - } - - var smtpConfig smtp.Source - if err := parseSMTPConfig(c, &smtpConfig); err != nil { - return err - } - - // If not set default to PLAIN - if len(smtpConfig.Auth) == 0 { - smtpConfig.Auth = "PLAIN" - } - - return a.createAuthSource(ctx, &auth_model.Source{ - Type: auth_model.SMTP, - Name: c.String("name"), - IsActive: active, - Cfg: &smtpConfig, - TwoFactorPolicy: util.Iif(c.Bool("skip-local-2fa"), "skip", ""), - }) -} - -func (a *authService) runUpdateSMTP(ctx context.Context, c *cli.Command) error { - if !c.IsSet("id") { - return errors.New("--id flag is missing") - } - - if err := a.initDB(ctx); err != nil { - return err - } - - source, err := a.getAuthSourceByID(ctx, c.Int64("id")) - if err != nil { - return err - } - - smtpConfig := source.Cfg.(*smtp.Source) - - if err := parseSMTPConfig(c, smtpConfig); err != nil { - return err - } - - if c.IsSet("name") { - source.Name = c.String("name") - } - - if c.IsSet("active") { - source.IsActive = c.Bool("active") - } - - source.Cfg = smtpConfig - source.TwoFactorPolicy = util.Iif(c.Bool("skip-local-2fa"), "skip", "") - return a.updateAuthSource(ctx, source) -} diff --git a/cmd/admin_auth_smtp_test.go b/cmd/admin_auth_smtp_test.go deleted file mode 100644 index e54e01830c..0000000000 --- a/cmd/admin_auth_smtp_test.go +++ /dev/null @@ -1,271 +0,0 @@ -// Copyright 2025 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "context" - "testing" - - auth_model "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/services/auth/source/smtp" - - "github.com/stretchr/testify/assert" - "github.com/urfave/cli/v3" -) - -func TestAddSMTP(t *testing.T) { - testCases := []struct { - name string - args []string - source *auth_model.Source - errMsg string - }{ - { - name: "missing name", - args: []string{ - "--host", "localhost", - "--port", "25", - }, - errMsg: "name must be set", - }, - { - name: "missing host", - args: []string{ - "--name", "test", - "--port", "25", - }, - errMsg: "host must be set", - }, - { - name: "missing port", - args: []string{ - "--name", "test", - "--host", "localhost", - }, - errMsg: "port must be set", - }, - { - name: "valid config", - args: []string{ - "--name", "test", - "--host", "localhost", - "--port", "25", - }, - source: &auth_model.Source{ - Type: auth_model.SMTP, - Name: "test", - IsActive: true, - Cfg: &smtp.Source{ - Auth: "PLAIN", - Host: "localhost", - Port: 25, - }, - TwoFactorPolicy: "", - }, - }, - { - name: "valid config with options", - args: []string{ - "--name", "test", - "--host", "localhost", - "--port", "25", - "--auth-type", "LOGIN", - "--force-smtps", - "--skip-verify", - "--helo-hostname", "example.com", - "--disable-helo=true", - "--allowed-domains", "example.com,example.org", - "--skip-local-2fa", - "--active=false", - }, - source: &auth_model.Source{ - Type: auth_model.SMTP, - Name: "test", - IsActive: false, - Cfg: &smtp.Source{ - Auth: "LOGIN", - Host: "localhost", - Port: 25, - ForceSMTPS: true, - SkipVerify: true, - HeloHostname: "example.com", - DisableHelo: true, - AllowedDomains: "example.com,example.org", - }, - TwoFactorPolicy: "skip", - }, - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - a := &authService{ - initDB: func(ctx context.Context) error { - return nil - }, - createAuthSource: func(ctx context.Context, source *auth_model.Source) error { - assert.Equal(t, tc.source, source) - return nil - }, - } - - cmd := &cli.Command{ - Flags: microcmdAuthAddSMTP().Flags, - Action: a.runAddSMTP, - } - - args := []string{"smtp-test"} - args = append(args, tc.args...) - - t.Log(args) - err := cmd.Run(t.Context(), args) - - if tc.errMsg != "" { - assert.EqualError(t, err, tc.errMsg) - } else { - assert.NoError(t, err) - } - }) - } -} - -func TestUpdateSMTP(t *testing.T) { - testCases := []struct { - name string - args []string - existingAuthSource *auth_model.Source - authSource *auth_model.Source - errMsg string - }{ - { - name: "missing id", - args: []string{ - "--name", "test", - "--host", "localhost", - "--port", "25", - }, - errMsg: "--id flag is missing", - }, - { - name: "valid config", - existingAuthSource: &auth_model.Source{ - ID: 1, - Type: auth_model.SMTP, - Name: "old name", - IsActive: true, - Cfg: &smtp.Source{ - Auth: "PLAIN", - Host: "old host", - Port: 26, - }, - }, - args: []string{ - "--id", "1", - "--name", "test", - "--host", "localhost", - "--port", "25", - }, - authSource: &auth_model.Source{ - ID: 1, - Type: auth_model.SMTP, - Name: "test", - IsActive: true, - Cfg: &smtp.Source{ - Auth: "PLAIN", - Host: "localhost", - Port: 25, - }, - }, - }, - { - name: "valid config with options", - existingAuthSource: &auth_model.Source{ - ID: 1, - Type: auth_model.SMTP, - Name: "old name", - IsActive: true, - Cfg: &smtp.Source{ - Auth: "PLAIN", - Host: "old host", - Port: 26, - HeloHostname: "old.example.com", - AllowedDomains: "old.example.com", - }, - TwoFactorPolicy: "", - }, - args: []string{ - "--id", "1", - "--name", "test", - "--host", "localhost", - "--port", "25", - "--auth-type", "LOGIN", - "--force-smtps", - "--skip-verify", - "--helo-hostname", "example.com", - "--disable-helo", - "--allowed-domains", "example.com,example.org", - "--skip-local-2fa", - "--active=false", - }, - authSource: &auth_model.Source{ - ID: 1, - Type: auth_model.SMTP, - Name: "test", - IsActive: false, - Cfg: &smtp.Source{ - Auth: "LOGIN", - Host: "localhost", - Port: 25, - ForceSMTPS: true, - SkipVerify: true, - HeloHostname: "example.com", - DisableHelo: true, - AllowedDomains: "example.com,example.org", - }, - TwoFactorPolicy: "skip", - }, - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - a := &authService{ - initDB: func(ctx context.Context) error { - return nil - }, - getAuthSourceByID: func(ctx context.Context, id int64) (*auth_model.Source, error) { - return &auth_model.Source{ - ID: 1, - Type: auth_model.SMTP, - Name: "test", - IsActive: true, - Cfg: &smtp.Source{ - Auth: "PLAIN", - }, - }, nil - }, - - updateAuthSource: func(ctx context.Context, source *auth_model.Source) error { - assert.Equal(t, tc.authSource, source) - return nil - }, - } - - app := &cli.Command{ - Flags: microcmdAuthUpdateSMTP().Flags, - Action: a.runUpdateSMTP, - } - args := []string{"smtp-tests"} - args = append(args, tc.args...) - - err := app.Run(t.Context(), args) - - if tc.errMsg != "" { - assert.EqualError(t, err, tc.errMsg) - } else { - assert.NoError(t, err) - } - }) - } -} diff --git a/cmd/admin_regenerate.go b/cmd/admin_regenerate.go deleted file mode 100644 index a5f1bd5105..0000000000 --- a/cmd/admin_regenerate.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2023 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "context" - - "code.gitea.io/gitea/modules/graceful" - asymkey_service "code.gitea.io/gitea/services/asymkey" - repo_service "code.gitea.io/gitea/services/repository" - - "github.com/urfave/cli/v3" -) - -var ( - microcmdRegenHooks = &cli.Command{ - Name: "hooks", - Usage: "Regenerate git-hooks", - Action: runRegenerateHooks, - } - - microcmdRegenKeys = &cli.Command{ - Name: "keys", - Usage: "Regenerate authorized_keys file", - Action: runRegenerateKeys, - } -) - -func runRegenerateHooks(ctx context.Context, _ *cli.Command) error { - if err := initDB(ctx); err != nil { - return err - } - return repo_service.SyncRepositoryHooks(graceful.GetManager().ShutdownContext()) -} - -func runRegenerateKeys(ctx context.Context, _ *cli.Command) error { - if err := initDB(ctx); err != nil { - return err - } - return asymkey_service.RewriteAllPublicKeys(ctx) -} diff --git a/cmd/admin_user.go b/cmd/admin_user.go index 3a24c3e56f..967a6ed88a 100644 --- a/cmd/admin_user.go +++ b/cmd/admin_user.go @@ -4,18 +4,18 @@ package cmd import ( - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) var subcmdUser = &cli.Command{ Name: "user", Usage: "Modify users", - Commands: []*cli.Command{ - microcmdUserCreate(), + Subcommands: []*cli.Command{ + microcmdUserCreate, microcmdUserList, - microcmdUserChangePassword(), - microcmdUserDelete(), + microcmdUserChangePassword, + microcmdUserDelete, microcmdUserGenerateAccessToken, - microcmdUserMustChangePassword(), + microcmdUserMustChangePassword, }, } diff --git a/cmd/admin_user_change_password.go b/cmd/admin_user_change_password.go index c27905b4db..eebbfb3b67 100644 --- a/cmd/admin_user_change_password.go +++ b/cmd/admin_user_change_password.go @@ -9,68 +9,68 @@ import ( "fmt" user_model "code.gitea.io/gitea/models/user" - "code.gitea.io/gitea/modules/auth/password" - "code.gitea.io/gitea/modules/optional" + pwd "code.gitea.io/gitea/modules/auth/password" "code.gitea.io/gitea/modules/setting" - user_service "code.gitea.io/gitea/services/user" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) -func microcmdUserChangePassword() *cli.Command { - return &cli.Command{ - Name: "change-password", - Usage: "Change a user's password", - Action: runChangePassword, - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "username", - Aliases: []string{"u"}, - Usage: "The user to change password for", - Required: true, - }, - &cli.StringFlag{ - Name: "password", - Aliases: []string{"p"}, - Usage: "New password to set for user", - Required: true, - }, - &cli.BoolFlag{ - Name: "must-change-password", - Usage: "User must change password (can be disabled by --must-change-password=false)", - Value: true, - }, +var microcmdUserChangePassword = &cli.Command{ + Name: "change-password", + Usage: "Change a user's password", + Action: runChangePassword, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "username", + Aliases: []string{"u"}, + Value: "", + Usage: "The user to change password for", }, - } + &cli.StringFlag{ + Name: "password", + Aliases: []string{"p"}, + Value: "", + Usage: "New password to set for user", + }, + }, } -func runChangePassword(ctx context.Context, c *cli.Command) error { - if !setting.IsInTesting { - if err := initDB(ctx); err != nil { - return err - } - } - - user, err := user_model.GetUserByName(ctx, c.String("username")) - if err != nil { +func runChangePassword(c *cli.Context) error { + if err := argsSet(c, "username", "password"); err != nil { return err } - opts := &user_service.UpdateAuthOptions{ - Password: optional.Some(c.String("password")), - MustChangePassword: optional.Some(c.Bool("must-change-password")), + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err } - if err := user_service.UpdateAuth(ctx, user, opts); err != nil { - switch { - case errors.Is(err, password.ErrMinLength): - return fmt.Errorf("password is not long enough, needs to be at least %d characters", setting.MinPasswordLength) - case errors.Is(err, password.ErrComplexity): - return errors.New("password does not meet complexity requirements") - case errors.Is(err, password.ErrIsPwned): - return errors.New("the password is in a list of stolen passwords previously exposed in public data breaches, please try again with a different password, to see more details: https://haveibeenpwned.com/Passwords") - default: - return err - } + if len(c.String("password")) < setting.MinPasswordLength { + return fmt.Errorf("Password is not long enough. Needs to be at least %d", setting.MinPasswordLength) + } + + if !pwd.IsComplexEnough(c.String("password")) { + return errors.New("Password does not meet complexity requirements") + } + pwned, err := pwd.IsPwned(context.Background(), c.String("password")) + if err != nil { + return err + } + if pwned { + return errors.New("The password you chose is on a list of stolen passwords previously exposed in public data breaches. Please try again with a different password.\nFor more details, see https://haveibeenpwned.com/Passwords") + } + uname := c.String("username") + user, err := user_model.GetUserByName(ctx, uname) + if err != nil { + return err + } + if err = user.SetPassword(c.String("password")); err != nil { + return err + } + + if err = user_model.UpdateUserCols(ctx, user, "passwd", "passwd_hash_algo", "salt"); err != nil { + return err } fmt.Printf("%s's password has been successfully updated!\n", user.Name) diff --git a/cmd/admin_user_change_password_test.go b/cmd/admin_user_change_password_test.go deleted file mode 100644 index 17d0382af7..0000000000 --- a/cmd/admin_user_change_password_test.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2025 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "testing" - - "code.gitea.io/gitea/models/db" - "code.gitea.io/gitea/models/unittest" - user_model "code.gitea.io/gitea/models/user" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestChangePasswordCommand(t *testing.T) { - ctx := t.Context() - - defer func() { - require.NoError(t, db.TruncateBeans(db.DefaultContext, &user_model.User{})) - }() - - t.Run("change password successfully", func(t *testing.T) { - // defer func() { - // require.NoError(t, db.TruncateBeans(db.DefaultContext, &user_model.User{})) - // }() - // Prepare test user - unittest.AssertNotExistsBean(t, &user_model.User{LowerName: "testuser"}) - err := microcmdUserCreate().Run(ctx, []string{"create", "--username", "testuser", "--email", "testuser@gitea.local", "--random-password"}) - require.NoError(t, err) - - // load test user - userBase := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - - // Change the password - err = microcmdUserChangePassword().Run(ctx, []string{"change-password", "--username", "testuser", "--password", "newpassword"}) - require.NoError(t, err) - - // Verify the password has been changed - user := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - assert.NotEqual(t, userBase.Passwd, user.Passwd) - assert.NotEqual(t, userBase.Salt, user.Salt) - - // Additional check for must-change-password flag - require.NoError(t, microcmdUserChangePassword().Run(ctx, []string{"change-password", "--username", "testuser", "--password", "anotherpassword", "--must-change-password=false"})) - user = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - assert.False(t, user.MustChangePassword) - - require.NoError(t, microcmdUserChangePassword().Run(ctx, []string{"change-password", "--username", "testuser", "--password", "yetanotherpassword", "--must-change-password"})) - user = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - assert.True(t, user.MustChangePassword) - }) - - t.Run("failure cases", func(t *testing.T) { - testCases := []struct { - name string - args []string - expectedErr string - }{ - { - name: "user does not exist", - args: []string{"change-password", "--username", "nonexistentuser", "--password", "newpassword"}, - expectedErr: "user does not exist", - }, - { - name: "missing username", - args: []string{"change-password", "--password", "newpassword"}, - expectedErr: `"username" not set`, - }, - { - name: "missing password", - args: []string{"change-password", "--username", "testuser"}, - expectedErr: `"password" not set`, - }, - { - name: "too short password", - args: []string{"change-password", "--username", "testuser", "--password", "1"}, - expectedErr: "password is not long enough", - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - err := microcmdUserChangePassword().Run(ctx, tc.args) - require.Error(t, err) - require.Contains(t, err.Error(), tc.expectedErr) - }) - } - }) -} diff --git a/cmd/admin_user_create.go b/cmd/admin_user_create.go index cbdb5f90e2..fefe18d39c 100644 --- a/cmd/admin_user_create.go +++ b/cmd/admin_user_create.go @@ -4,122 +4,77 @@ package cmd import ( - "context" "errors" "fmt" - "strings" auth_model "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/models/db" user_model "code.gitea.io/gitea/models/user" pwd "code.gitea.io/gitea/modules/auth/password" - "code.gitea.io/gitea/modules/optional" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) -func microcmdUserCreate() *cli.Command { - return &cli.Command{ - Name: "create", - Usage: "Create a new user in database", - Action: runCreateUser, - MutuallyExclusiveFlags: []cli.MutuallyExclusiveFlags{ - { - Flags: [][]cli.Flag{ - { - &cli.StringFlag{ - Name: "name", - Usage: "Username. DEPRECATED: use username instead", - }, - &cli.StringFlag{ - Name: "username", - Usage: "Username", - }, - }, - }, - Required: true, - }, +var microcmdUserCreate = &cli.Command{ + Name: "create", + Usage: "Create a new user in database", + Action: runCreateUser, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "name", + Usage: "Username. DEPRECATED: use username instead", }, - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "user-type", - Usage: "Set user's type: individual or bot", - Value: "individual", - }, - &cli.StringFlag{ - Name: "password", - Usage: "User password", - }, - &cli.StringFlag{ - Name: "email", - Usage: "User email address", - Required: true, - }, - &cli.BoolFlag{ - Name: "admin", - Usage: "User is an admin", - }, - &cli.BoolFlag{ - Name: "random-password", - Usage: "Generate a random password for the user", - }, - &cli.BoolFlag{ - Name: "must-change-password", - Usage: "User must change password after initial login, defaults to true for all users except the first one (can be disabled by --must-change-password=false)", - HideDefault: true, - }, - &cli.IntFlag{ - Name: "random-password-length", - Usage: "Length of the random password to be generated", - Value: 12, - }, - &cli.BoolFlag{ - Name: "access-token", - Usage: "Generate access token for the user", - }, - &cli.StringFlag{ - Name: "access-token-name", - Usage: `Name of the generated access token`, - Value: "gitea-admin", - }, - &cli.StringFlag{ - Name: "access-token-scopes", - Usage: `Scopes of the generated access token, comma separated. Examples: "all", "public-only,read:issue", "write:repository,write:user"`, - Value: "all", - }, - &cli.BoolFlag{ - Name: "restricted", - Usage: "Make a restricted user account", - }, - &cli.StringFlag{ - Name: "fullname", - Usage: `The full, human-readable name of the user`, - }, + &cli.StringFlag{ + Name: "username", + Usage: "Username", }, - } + &cli.StringFlag{ + Name: "password", + Usage: "User password", + }, + &cli.StringFlag{ + Name: "email", + Usage: "User email address", + }, + &cli.BoolFlag{ + Name: "admin", + Usage: "User is an admin", + }, + &cli.BoolFlag{ + Name: "random-password", + Usage: "Generate a random password for the user", + }, + &cli.BoolFlag{ + Name: "must-change-password", + Usage: "Set this option to false to prevent forcing the user to change their password after initial login, (Default: true)", + }, + &cli.IntFlag{ + Name: "random-password-length", + Usage: "Length of the random password to be generated", + Value: 12, + }, + &cli.BoolFlag{ + Name: "access-token", + Usage: "Generate access token for the user", + }, + &cli.BoolFlag{ + Name: "restricted", + Usage: "Make a restricted user account", + }, + }, } -func runCreateUser(ctx context.Context, c *cli.Command) error { - // this command highly depends on the many setting options (create org, visibility, etc.), so it must have a full setting load first - // duplicate setting loading should be safe at the moment, but it should be refactored & improved in the future. - setting.LoadSettings() +func runCreateUser(c *cli.Context) error { + if err := argsSet(c, "email"); err != nil { + return err + } - userTypes := map[string]user_model.UserType{ - "individual": user_model.UserTypeIndividual, - "bot": user_model.UserTypeBot, + if c.IsSet("name") && c.IsSet("username") { + return errors.New("Cannot set both --name and --username flags") } - userType, ok := userTypes[c.String("user-type")] - if !ok { - return fmt.Errorf("invalid user type: %s", c.String("user-type")) - } - if userType != user_model.UserTypeIndividual { - // Some other commands like "change-password" also only support individual users. - // It needs to clarify the "password" behavior for bot users in the future. - // At the moment, we do not allow setting password for bot users. - if c.IsSet("password") || c.IsSet("random-password") { - return errors.New("password can only be set for individual users") - } + if !c.IsSet("name") && !c.IsSet("username") { + return errors.New("One of --name or --username flags must be set") } if c.IsSet("password") && c.IsSet("random-password") { @@ -131,15 +86,14 @@ func runCreateUser(ctx context.Context, c *cli.Command) error { username = c.String("username") } else { username = c.String("name") - _, _ = fmt.Fprintf(c.ErrWriter, "--name flag is deprecated. Use --username instead.\n") + _, _ = fmt.Fprintf(c.App.ErrWriter, "--name flag is deprecated. Use --username instead.\n") } - if !setting.IsInTesting { - // FIXME: need to refactor the "initDB" related code later - // it doesn't make sense to call it in (almost) every command action function - if err := initDB(ctx); err != nil { - return err - } + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err } var password string @@ -152,34 +106,27 @@ func runCreateUser(ctx context.Context, c *cli.Command) error { return err } fmt.Printf("generated random password is '%s'\n", password) - } else if userType == user_model.UserTypeIndividual { + } else { return errors.New("must set either password or random-password flag") } - isAdmin := c.Bool("admin") - mustChangePassword := true // always default to true - if c.IsSet("must-change-password") { - if userType != user_model.UserTypeIndividual { - return errors.New("must-change-password flag can only be set for individual users") - } - // if the flag is set, use the value provided by the user - mustChangePassword = c.Bool("must-change-password") - } else if userType == user_model.UserTypeIndividual { - // check whether there are users in the database - hasUserRecord, err := db.IsTableNotEmpty(&user_model.User{}) - if err != nil { - return fmt.Errorf("IsTableNotEmpty: %w", err) - } - if !hasUserRecord { - // if this is the first one being created, don't force to change password (keep the old behavior) - mustChangePassword = false - } + // always default to true + changePassword := true + + // If this is the first user being created. + // Take it as the admin and don't force a password update. + if n := user_model.CountUsers(ctx, nil); n == 0 { + changePassword = false } - restricted := optional.None[bool]() + if c.IsSet("must-change-password") { + changePassword = c.Bool("must-change-password") + } + + restricted := util.OptionalBoolNone if c.IsSet("restricted") { - restricted = optional.Some(c.Bool("restricted")) + restricted = util.OptionalBoolOf(c.Bool("restricted")) } // default user visibility in app.ini @@ -188,53 +135,34 @@ func runCreateUser(ctx context.Context, c *cli.Command) error { u := &user_model.User{ Name: username, Email: c.String("email"), - IsAdmin: isAdmin, - Type: userType, Passwd: password, - MustChangePassword: mustChangePassword, + IsAdmin: c.Bool("admin"), + MustChangePassword: changePassword, Visibility: visibility, - FullName: c.String("fullname"), } overwriteDefault := &user_model.CreateUserOverwriteOptions{ - IsActive: optional.Some(true), + IsActive: util.OptionalBoolTrue, IsRestricted: restricted, } - var accessTokenName string - var accessTokenScope auth_model.AccessTokenScope - if c.IsSet("access-token") { - accessTokenName = strings.TrimSpace(c.String("access-token-name")) - if accessTokenName == "" { - return errors.New("access-token-name cannot be empty") - } - var err error - accessTokenScope, err = auth_model.AccessTokenScope(c.String("access-token-scopes")).Normalize() - if err != nil { - return fmt.Errorf("invalid access token scope provided: %w", err) - } - if !accessTokenScope.HasPermissionScope() { - return errors.New("access token does not have any permission") - } - } else if c.IsSet("access-token-name") || c.IsSet("access-token-scopes") { - return errors.New("access-token-name and access-token-scopes flags are only valid when access-token flag is set") - } - - // arguments should be prepared before creating the user & access token, in case there is anything wrong - - // create the user - if err := user_model.CreateUser(ctx, u, &user_model.Meta{}, overwriteDefault); err != nil { + if err := user_model.CreateUser(ctx, u, overwriteDefault); err != nil { return fmt.Errorf("CreateUser: %w", err) } - fmt.Printf("New user '%s' has been successfully created!\n", username) - // create the access token - if accessTokenScope != "" { - t := &auth_model.AccessToken{Name: accessTokenName, UID: u.ID, Scope: accessTokenScope} + if c.Bool("access-token") { + t := &auth_model.AccessToken{ + Name: "gitea-admin", + UID: u.ID, + } + if err := auth_model.NewAccessToken(ctx, t); err != nil { return err } + fmt.Printf("Access token was successfully created... %s\n", t.Token) } + + fmt.Printf("New user '%s' has been successfully created!\n", username) return nil } diff --git a/cmd/admin_user_create_test.go b/cmd/admin_user_create_test.go deleted file mode 100644 index 437e07d9a2..0000000000 --- a/cmd/admin_user_create_test.go +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2023 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "fmt" - "strings" - "testing" - - auth_model "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/models/db" - "code.gitea.io/gitea/models/unittest" - user_model "code.gitea.io/gitea/models/user" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestAdminUserCreate(t *testing.T) { - reset := func() { - require.NoError(t, db.TruncateBeans(db.DefaultContext, &user_model.User{})) - require.NoError(t, db.TruncateBeans(db.DefaultContext, &user_model.EmailAddress{})) - require.NoError(t, db.TruncateBeans(db.DefaultContext, &auth_model.AccessToken{})) - } - - t.Run("MustChangePassword", func(t *testing.T) { - type check struct { - IsAdmin bool - MustChangePassword bool - } - - createCheck := func(name, args string) check { - require.NoError(t, microcmdUserCreate().Run(t.Context(), strings.Fields(fmt.Sprintf("create --username %s --email %s@gitea.local %s --password foobar", name, name, args)))) - u := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: name}) - return check{IsAdmin: u.IsAdmin, MustChangePassword: u.MustChangePassword} - } - reset() - assert.Equal(t, check{IsAdmin: false, MustChangePassword: false}, createCheck("u", ""), "first non-admin user doesn't need to change password") - - reset() - assert.Equal(t, check{IsAdmin: true, MustChangePassword: false}, createCheck("u", "--admin"), "first admin user doesn't need to change password") - - reset() - assert.Equal(t, check{IsAdmin: true, MustChangePassword: true}, createCheck("u", "--admin --must-change-password")) - assert.Equal(t, check{IsAdmin: true, MustChangePassword: true}, createCheck("u2", "--admin")) - assert.Equal(t, check{IsAdmin: true, MustChangePassword: false}, createCheck("u3", "--admin --must-change-password=false")) - assert.Equal(t, check{IsAdmin: false, MustChangePassword: true}, createCheck("u4", "")) - assert.Equal(t, check{IsAdmin: false, MustChangePassword: false}, createCheck("u5", "--must-change-password=false")) - }) - - createUser := func(name string, args ...string) error { - return microcmdUserCreate().Run(t.Context(), append([]string{"create", "--username", name, "--email", name + "@gitea.local"}, args...)) - } - - t.Run("UserType", func(t *testing.T) { - reset() - assert.ErrorContains(t, createUser("u", "--user-type", "invalid"), "invalid user type") - assert.ErrorContains(t, createUser("u", "--user-type", "bot", "--password", "123"), "can only be set for individual users") - assert.ErrorContains(t, createUser("u", "--user-type", "bot", "--must-change-password"), "can only be set for individual users") - - assert.NoError(t, createUser("u", "--user-type", "bot")) - u := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "u"}) - assert.Equal(t, user_model.UserTypeBot, u.Type) - assert.Empty(t, u.Passwd) - }) - - t.Run("AccessToken", func(t *testing.T) { - // no generated access token - reset() - assert.NoError(t, createUser("u", "--random-password")) - assert.Equal(t, 1, unittest.GetCount(t, &user_model.User{})) - assert.Equal(t, 0, unittest.GetCount(t, &auth_model.AccessToken{})) - - // using "--access-token" only means "all" access - reset() - assert.NoError(t, createUser("u", "--random-password", "--access-token")) - assert.Equal(t, 1, unittest.GetCount(t, &user_model.User{})) - assert.Equal(t, 1, unittest.GetCount(t, &auth_model.AccessToken{})) - accessToken := unittest.AssertExistsAndLoadBean(t, &auth_model.AccessToken{Name: "gitea-admin"}) - hasScopes, err := accessToken.Scope.HasScope(auth_model.AccessTokenScopeWriteAdmin, auth_model.AccessTokenScopeWriteRepository) - assert.NoError(t, err) - assert.True(t, hasScopes) - - // using "--access-token" with name & scopes - reset() - assert.NoError(t, createUser("u", "--random-password", "--access-token", "--access-token-name", "new-token-name", "--access-token-scopes", "read:issue,read:user")) - assert.Equal(t, 1, unittest.GetCount(t, &user_model.User{})) - assert.Equal(t, 1, unittest.GetCount(t, &auth_model.AccessToken{})) - accessToken = unittest.AssertExistsAndLoadBean(t, &auth_model.AccessToken{Name: "new-token-name"}) - hasScopes, err = accessToken.Scope.HasScope(auth_model.AccessTokenScopeReadIssue, auth_model.AccessTokenScopeReadUser) - assert.NoError(t, err) - assert.True(t, hasScopes) - hasScopes, err = accessToken.Scope.HasScope(auth_model.AccessTokenScopeWriteAdmin, auth_model.AccessTokenScopeWriteRepository) - assert.NoError(t, err) - assert.False(t, hasScopes) - - // using "--access-token-name" without "--access-token" - reset() - err = createUser("u", "--random-password", "--access-token-name", "new-token-name") - assert.Equal(t, 0, unittest.GetCount(t, &user_model.User{})) - assert.Equal(t, 0, unittest.GetCount(t, &auth_model.AccessToken{})) - assert.ErrorContains(t, err, "access-token-name and access-token-scopes flags are only valid when access-token flag is set") - - // using "--access-token-scopes" without "--access-token" - reset() - err = createUser("u", "--random-password", "--access-token-scopes", "read:issue") - assert.Equal(t, 0, unittest.GetCount(t, &user_model.User{})) - assert.Equal(t, 0, unittest.GetCount(t, &auth_model.AccessToken{})) - assert.ErrorContains(t, err, "access-token-name and access-token-scopes flags are only valid when access-token flag is set") - - // empty permission - reset() - err = createUser("u", "--random-password", "--access-token", "--access-token-scopes", "public-only") - assert.Equal(t, 0, unittest.GetCount(t, &user_model.User{})) - assert.Equal(t, 0, unittest.GetCount(t, &auth_model.AccessToken{})) - assert.ErrorContains(t, err, "access token does not have any permission") - }) - - t.Run("UserFields", func(t *testing.T) { - reset() - assert.NoError(t, createUser("u-FullNameWithSpace", "--random-password", "--fullname", "First O'Middle Last")) - unittest.AssertExistsAndLoadBean(t, &user_model.User{ - Name: "u-FullNameWithSpace", - LowerName: "u-fullnamewithspace", - FullName: "First O'Middle Last", - Email: "u-FullNameWithSpace@gitea.local", - }) - - assert.NoError(t, createUser("u-FullNameEmpty", "--random-password", "--fullname", "")) - u := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "u-fullnameempty"}) - assert.Empty(t, u.FullName) - }) -} diff --git a/cmd/admin_user_delete.go b/cmd/admin_user_delete.go index f91041577c..1cbc6f7527 100644 --- a/cmd/admin_user_delete.go +++ b/cmd/admin_user_delete.go @@ -4,56 +4,52 @@ package cmd import ( - "context" - "errors" "fmt" "strings" user_model "code.gitea.io/gitea/models/user" - "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/storage" user_service "code.gitea.io/gitea/services/user" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) -func microcmdUserDelete() *cli.Command { - return &cli.Command{ - Name: "delete", - Usage: "Delete specific user by id, name or email", - Flags: []cli.Flag{ - &cli.Int64Flag{ - Name: "id", - Usage: "ID of user of the user to delete", - }, - &cli.StringFlag{ - Name: "username", - Aliases: []string{"u"}, - Usage: "Username of the user to delete", - }, - &cli.StringFlag{ - Name: "email", - Aliases: []string{"e"}, - Usage: "Email of the user to delete", - }, - &cli.BoolFlag{ - Name: "purge", - Usage: "Purge user, all their repositories, organizations and comments", - }, +var microcmdUserDelete = &cli.Command{ + Name: "delete", + Usage: "Delete specific user by id, name or email", + Flags: []cli.Flag{ + &cli.Int64Flag{ + Name: "id", + Usage: "ID of user of the user to delete", }, - Action: runDeleteUser, - } + &cli.StringFlag{ + Name: "username", + Aliases: []string{"u"}, + Usage: "Username of the user to delete", + }, + &cli.StringFlag{ + Name: "email", + Aliases: []string{"e"}, + Usage: "Email of the user to delete", + }, + &cli.BoolFlag{ + Name: "purge", + Usage: "Purge user, all their repositories, organizations and comments", + }, + }, + Action: runDeleteUser, } -func runDeleteUser(ctx context.Context, c *cli.Command) error { +func runDeleteUser(c *cli.Context) error { if !c.IsSet("id") && !c.IsSet("username") && !c.IsSet("email") { - return errors.New("You must provide the id, username or email of a user to delete") + return fmt.Errorf("You must provide the id, username or email of a user to delete") } - if !setting.IsInTesting { - if err := initDB(ctx); err != nil { - return err - } + ctx, cancel := installSignals() + defer cancel() + + if err := initDB(ctx); err != nil { + return err } if err := storage.Init(); err != nil { @@ -73,11 +69,11 @@ func runDeleteUser(ctx context.Context, c *cli.Command) error { return err } if c.IsSet("username") && user.LowerName != strings.ToLower(strings.TrimSpace(c.String("username"))) { - return fmt.Errorf("the user %s who has email %s does not match the provided username %s", user.Name, c.String("email"), c.String("username")) + return fmt.Errorf("The user %s who has email %s does not match the provided username %s", user.Name, c.String("email"), c.String("username")) } if c.IsSet("id") && user.ID != c.Int64("id") { - return fmt.Errorf("the user %s does not match the provided id %d", user.Name, c.Int64("id")) + return fmt.Errorf("The user %s does not match the provided id %d", user.Name, c.Int64("id")) } return user_service.DeleteUser(ctx, user, c.Bool("purge")) diff --git a/cmd/admin_user_delete_test.go b/cmd/admin_user_delete_test.go deleted file mode 100644 index d0330582d7..0000000000 --- a/cmd/admin_user_delete_test.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2025 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "strconv" - "strings" - "testing" - - auth_model "code.gitea.io/gitea/models/auth" - "code.gitea.io/gitea/models/db" - "code.gitea.io/gitea/models/unittest" - user_model "code.gitea.io/gitea/models/user" - - "github.com/stretchr/testify/require" -) - -func TestAdminUserDelete(t *testing.T) { - ctx := t.Context() - defer func() { - require.NoError(t, db.TruncateBeans(db.DefaultContext, &user_model.User{})) - require.NoError(t, db.TruncateBeans(db.DefaultContext, &user_model.EmailAddress{})) - require.NoError(t, db.TruncateBeans(db.DefaultContext, &auth_model.AccessToken{})) - }() - - setupTestUser := func(t *testing.T) { - unittest.AssertNotExistsBean(t, &user_model.User{LowerName: "testuser"}) - err := microcmdUserCreate().Run(t.Context(), []string{"create", "--username", "testuser", "--email", "testuser@gitea.local", "--random-password"}) - require.NoError(t, err) - } - - t.Run("delete user by id", func(t *testing.T) { - setupTestUser(t) - - u := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - err := microcmdUserDelete().Run(ctx, []string{"delete-test", "--id", strconv.FormatInt(u.ID, 10)}) - require.NoError(t, err) - unittest.AssertNotExistsBean(t, &user_model.User{LowerName: "testuser"}) - }) - t.Run("delete user by username", func(t *testing.T) { - setupTestUser(t) - - err := microcmdUserDelete().Run(ctx, []string{"delete-test", "--username", "testuser"}) - require.NoError(t, err) - unittest.AssertNotExistsBean(t, &user_model.User{LowerName: "testuser"}) - }) - t.Run("delete user by email", func(t *testing.T) { - setupTestUser(t) - - err := microcmdUserDelete().Run(ctx, []string{"delete-test", "--email", "testuser@gitea.local"}) - require.NoError(t, err) - unittest.AssertNotExistsBean(t, &user_model.User{LowerName: "testuser"}) - }) - t.Run("delete user by all 3 attributes", func(t *testing.T) { - setupTestUser(t) - - u := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - err := microcmdUserDelete().Run(ctx, []string{"delete", "--id", strconv.FormatInt(u.ID, 10), "--username", "testuser", "--email", "testuser@gitea.local"}) - require.NoError(t, err) - unittest.AssertNotExistsBean(t, &user_model.User{LowerName: "testuser"}) - }) -} - -func TestAdminUserDeleteFailure(t *testing.T) { - testCases := []struct { - name string - args []string - expectedErr string - }{ - { - name: "no user to delete", - args: []string{"delete", "--username", "nonexistentuser"}, - expectedErr: "user does not exist", - }, - { - name: "user exists but provided username does not match", - args: []string{"delete", "--email", "testuser@gitea.local", "--username", "wrongusername"}, - expectedErr: "the user testuser who has email testuser@gitea.local does not match the provided username wrongusername", - }, - { - name: "user exists but provided id does not match", - args: []string{"delete", "--username", "testuser", "--id", "999"}, - expectedErr: "the user testuser does not match the provided id 999", - }, - { - name: "no required flags are provided", - args: []string{"delete"}, - expectedErr: "You must provide the id, username or email of a user to delete", - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - ctx := t.Context() - if strings.Contains(tc.name, "user exists") { - unittest.AssertNotExistsBean(t, &user_model.User{LowerName: "testuser"}) - err := microcmdUserCreate().Run(t.Context(), []string{"create", "--username", "testuser", "--email", "testuser@gitea.local", "--random-password"}) - require.NoError(t, err) - } - - err := microcmdUserDelete().Run(ctx, tc.args) - require.Error(t, err) - require.Contains(t, err.Error(), tc.expectedErr) - }) - - require.NoError(t, db.TruncateBeans(db.DefaultContext, &user_model.User{})) - require.NoError(t, db.TruncateBeans(db.DefaultContext, &user_model.EmailAddress{})) - require.NoError(t, db.TruncateBeans(db.DefaultContext, &auth_model.AccessToken{})) - } -} diff --git a/cmd/admin_user_generate_access_token.go b/cmd/admin_user_generate_access_token.go index 61064fdef4..6e78939680 100644 --- a/cmd/admin_user_generate_access_token.go +++ b/cmd/admin_user_generate_access_token.go @@ -4,14 +4,12 @@ package cmd import ( - "context" - "errors" "fmt" auth_model "code.gitea.io/gitea/models/auth" user_model "code.gitea.io/gitea/models/user" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) var microcmdUserGenerateAccessToken = &cli.Command{ @@ -35,18 +33,21 @@ var microcmdUserGenerateAccessToken = &cli.Command{ }, &cli.StringFlag{ Name: "scopes", - Value: "all", - Usage: `Comma separated list of scopes to apply to access token, examples: "all", "public-only,read:issue", "write:repository,write:user"`, + Value: "", + Usage: "Comma separated list of scopes to apply to access token", }, }, Action: runGenerateAccessToken, } -func runGenerateAccessToken(ctx context.Context, c *cli.Command) error { +func runGenerateAccessToken(c *cli.Context) error { if !c.IsSet("username") { - return errors.New("you must provide a username to generate a token for") + return fmt.Errorf("You must provide a username to generate a token for") } + ctx, cancel := installSignals() + defer cancel() + if err := initDB(ctx); err != nil { return err } @@ -67,7 +68,7 @@ func runGenerateAccessToken(ctx context.Context, c *cli.Command) error { return err } if exist { - return errors.New("access token name has been used already") + return fmt.Errorf("access token name has been used already") } // make sure the scopes are valid @@ -75,9 +76,6 @@ func runGenerateAccessToken(ctx context.Context, c *cli.Command) error { if err != nil { return fmt.Errorf("invalid access token scope provided: %w", err) } - if !accessTokenScope.HasPermissionScope() { - return errors.New("access token does not have any permission") - } t.Scope = accessTokenScope // create the token diff --git a/cmd/admin_user_list.go b/cmd/admin_user_list.go index e3d345e2f2..4c2b26d1df 100644 --- a/cmd/admin_user_list.go +++ b/cmd/admin_user_list.go @@ -4,14 +4,13 @@ package cmd import ( - "context" "fmt" "os" "text/tabwriter" user_model "code.gitea.io/gitea/models/user" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) var microcmdUserList = &cli.Command{ @@ -26,7 +25,10 @@ var microcmdUserList = &cli.Command{ }, } -func runListUsers(ctx context.Context, c *cli.Command) error { +func runListUsers(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + if err := initDB(ctx); err != nil { return err } diff --git a/cmd/admin_user_must_change_password.go b/cmd/admin_user_must_change_password.go index 8521853dc1..2794414259 100644 --- a/cmd/admin_user_must_change_password.go +++ b/cmd/admin_user_must_change_password.go @@ -4,41 +4,40 @@ package cmd import ( - "context" "errors" "fmt" user_model "code.gitea.io/gitea/models/user" - "code.gitea.io/gitea/modules/setting" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) -func microcmdUserMustChangePassword() *cli.Command { - return &cli.Command{ - Name: "must-change-password", - Usage: "Set the must change password flag for the provided users or all users", - Action: runMustChangePassword, - Flags: []cli.Flag{ - &cli.BoolFlag{ - Name: "all", - Aliases: []string{"A"}, - Usage: "All users must change password, except those explicitly excluded with --exclude", - }, - &cli.StringSliceFlag{ - Name: "exclude", - Aliases: []string{"e"}, - Usage: "Do not change the must-change-password flag for these users", - }, - &cli.BoolFlag{ - Name: "unset", - Usage: "Instead of setting the must-change-password flag, unset it", - }, +var microcmdUserMustChangePassword = &cli.Command{ + Name: "must-change-password", + Usage: "Set the must change password flag for the provided users or all users", + Action: runMustChangePassword, + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "all", + Aliases: []string{"A"}, + Usage: "All users must change password, except those explicitly excluded with --exclude", }, - } + &cli.StringSliceFlag{ + Name: "exclude", + Aliases: []string{"e"}, + Usage: "Do not change the must-change-password flag for these users", + }, + &cli.BoolFlag{ + Name: "unset", + Usage: "Instead of setting the must-change-password flag, unset it", + }, + }, } -func runMustChangePassword(ctx context.Context, c *cli.Command) error { +func runMustChangePassword(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + if c.NArg() == 0 && !c.IsSet("all") { return errors.New("either usernames or --all must be provided") } @@ -47,10 +46,8 @@ func runMustChangePassword(ctx context.Context, c *cli.Command) error { all := c.Bool("all") exclude := c.StringSlice("exclude") - if !setting.IsInTesting { - if err := initDB(ctx); err != nil { - return err - } + if err := initDB(ctx); err != nil { + return err } n, err := user_model.SetMustChangePassword(ctx, all, mustChangePassword, c.Args().Slice(), exclude) diff --git a/cmd/admin_user_must_change_password_test.go b/cmd/admin_user_must_change_password_test.go deleted file mode 100644 index a6611fdc04..0000000000 --- a/cmd/admin_user_must_change_password_test.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2025 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "testing" - - "code.gitea.io/gitea/models/db" - "code.gitea.io/gitea/models/unittest" - user_model "code.gitea.io/gitea/models/user" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestMustChangePassword(t *testing.T) { - defer func() { - require.NoError(t, db.TruncateBeans(db.DefaultContext, &user_model.User{})) - }() - err := microcmdUserCreate().Run(t.Context(), []string{"create", "--username", "testuser", "--email", "testuser@gitea.local", "--random-password"}) - require.NoError(t, err) - err = microcmdUserCreate().Run(t.Context(), []string{"create", "--username", "testuserexclude", "--email", "testuserexclude@gitea.local", "--random-password"}) - require.NoError(t, err) - // Reset password change flag - err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--all", "--unset"}) - require.NoError(t, err) - - testUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - assert.False(t, testUser.MustChangePassword) - testUserExclude := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"}) - assert.False(t, testUserExclude.MustChangePassword) - - // Make all users change password - err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--all"}) - require.NoError(t, err) - - testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - assert.True(t, testUser.MustChangePassword) - testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"}) - assert.True(t, testUserExclude.MustChangePassword) - - // Reset password change flag but exclude all tested users - err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--all", "--unset", "--exclude", "testuser,testuserexclude"}) - require.NoError(t, err) - - testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - assert.True(t, testUser.MustChangePassword) - testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"}) - assert.True(t, testUserExclude.MustChangePassword) - - // Reset password change flag by listing multiple users - err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--unset", "testuser", "testuserexclude"}) - require.NoError(t, err) - - testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - assert.False(t, testUser.MustChangePassword) - testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"}) - assert.False(t, testUserExclude.MustChangePassword) - - // Exclude a user from all user - err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--all", "--exclude", "testuserexclude"}) - require.NoError(t, err) - - testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - assert.True(t, testUser.MustChangePassword) - testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"}) - assert.False(t, testUserExclude.MustChangePassword) - - // Unset a flag for single user - err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--unset", "testuser"}) - require.NoError(t, err) - - testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"}) - assert.False(t, testUser.MustChangePassword) - testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"}) - assert.False(t, testUserExclude.MustChangePassword) -} diff --git a/cmd/cert.go b/cmd/cert.go index 53b4f9dcb4..38241d71a3 100644 --- a/cmd/cert.go +++ b/cmd/cert.go @@ -6,7 +6,6 @@ package cmd import ( - "context" "crypto/ecdsa" "crypto/elliptic" "crypto/rand" @@ -14,7 +13,6 @@ import ( "crypto/x509" "crypto/x509/pkix" "encoding/pem" - "fmt" "log" "math/big" "net" @@ -22,59 +20,47 @@ import ( "strings" "time" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) -// cmdCert represents the available cert sub-command. -func cmdCert() *cli.Command { - return &cli.Command{ - Name: "cert", - Usage: "Generate self-signed certificate", - Description: `Generate a self-signed X.509 certificate for a TLS server. +// CmdCert represents the available cert sub-command. +var CmdCert = &cli.Command{ + Name: "cert", + Usage: "Generate self-signed certificate", + Description: `Generate a self-signed X.509 certificate for a TLS server. Outputs to 'cert.pem' and 'key.pem' and will overwrite existing files.`, - Action: runCert, - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "host", - Usage: "Comma-separated hostnames and IPs to generate a certificate for", - Required: true, - }, - &cli.StringFlag{ - Name: "ecdsa-curve", - Value: "", - Usage: "ECDSA curve to use to generate a key. Valid values are P224, P256, P384, P521", - }, - &cli.IntFlag{ - Name: "rsa-bits", - Value: 3072, - Usage: "Size of RSA key to generate. Ignored if --ecdsa-curve is set", - }, - &cli.StringFlag{ - Name: "start-date", - Value: "", - Usage: "Creation date formatted as Jan 1 15:04:05 2011", - }, - &cli.DurationFlag{ - Name: "duration", - Value: 365 * 24 * time.Hour, - Usage: "Duration that certificate is valid for", - }, - &cli.BoolFlag{ - Name: "ca", - Usage: "whether this cert should be its own Certificate Authority", - }, - &cli.StringFlag{ - Name: "out", - Value: "cert.pem", - Usage: "Path to the file where there certificate will be saved", - }, - &cli.StringFlag{ - Name: "keyout", - Value: "key.pem", - Usage: "Path to the file where there certificate key will be saved", - }, + Action: runCert, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "host", + Value: "", + Usage: "Comma-separated hostnames and IPs to generate a certificate for", }, - } + &cli.StringFlag{ + Name: "ecdsa-curve", + Value: "", + Usage: "ECDSA curve to use to generate a key. Valid values are P224, P256, P384, P521", + }, + &cli.IntFlag{ + Name: "rsa-bits", + Value: 3072, + Usage: "Size of RSA key to generate. Ignored if --ecdsa-curve is set", + }, + &cli.StringFlag{ + Name: "start-date", + Value: "", + Usage: "Creation date formatted as Jan 1 15:04:05 2011", + }, + &cli.DurationFlag{ + Name: "duration", + Value: 365 * 24 * time.Hour, + Usage: "Duration that certificate is valid for", + }, + &cli.BoolFlag{ + Name: "ca", + Usage: "whether this cert should be its own Certificate Authority", + }, + }, } func publicKey(priv any) any { @@ -103,7 +89,11 @@ func pemBlockForKey(priv any) *pem.Block { } } -func runCert(_ context.Context, c *cli.Command) error { +func runCert(c *cli.Context) error { + if err := argsSet(c, "host"); err != nil { + return err + } + var priv any var err error switch c.String("ecdsa-curve") { @@ -118,17 +108,17 @@ func runCert(_ context.Context, c *cli.Command) error { case "P521": priv, err = ecdsa.GenerateKey(elliptic.P521(), rand.Reader) default: - err = fmt.Errorf("unrecognized elliptic curve: %q", c.String("ecdsa-curve")) + log.Fatalf("Unrecognized elliptic curve: %q", c.String("ecdsa-curve")) } if err != nil { - return fmt.Errorf("failed to generate private key: %w", err) + log.Fatalf("Failed to generate private key: %v", err) } var notBefore time.Time if startDate := c.String("start-date"); startDate != "" { notBefore, err = time.Parse("Jan 2 15:04:05 2006", startDate) if err != nil { - return fmt.Errorf("failed to parse creation date %w", err) + log.Fatalf("Failed to parse creation date: %v", err) } } else { notBefore = time.Now() @@ -139,7 +129,7 @@ func runCert(_ context.Context, c *cli.Command) error { serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128) serialNumber, err := rand.Int(rand.Reader, serialNumberLimit) if err != nil { - return fmt.Errorf("failed to generate serial number: %w", err) + log.Fatalf("Failed to generate serial number: %v", err) } template := x509.Certificate{ @@ -156,8 +146,8 @@ func runCert(_ context.Context, c *cli.Command) error { BasicConstraintsValid: true, } - hosts := strings.SplitSeq(c.String("host"), ",") - for h := range hosts { + hosts := strings.Split(c.String("host"), ",") + for _, h := range hosts { if ip := net.ParseIP(h); ip != nil { template.IPAddresses = append(template.IPAddresses, ip) } else { @@ -172,35 +162,35 @@ func runCert(_ context.Context, c *cli.Command) error { derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv) if err != nil { - return fmt.Errorf("failed to create certificate: %w", err) + log.Fatalf("Failed to create certificate: %v", err) } - certOut, err := os.Create(c.String("out")) + certOut, err := os.Create("cert.pem") if err != nil { - return fmt.Errorf("failed to open %s for writing: %w", c.String("keyout"), err) + log.Fatalf("Failed to open cert.pem for writing: %v", err) } err = pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}) if err != nil { - return fmt.Errorf("failed to encode certificate: %w", err) + log.Fatalf("Failed to encode certificate: %v", err) } err = certOut.Close() if err != nil { - return fmt.Errorf("failed to write cert: %w", err) + log.Fatalf("Failed to write cert: %v", err) } - fmt.Fprintf(c.Writer, "Written cert to %s\n", c.String("out")) + log.Println("Written cert.pem") - keyOut, err := os.OpenFile(c.String("keyout"), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600) + keyOut, err := os.OpenFile("key.pem", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600) if err != nil { - return fmt.Errorf("failed to open %s for writing: %w", c.String("keyout"), err) + log.Fatalf("Failed to open key.pem for writing: %v", err) } err = pem.Encode(keyOut, pemBlockForKey(priv)) if err != nil { - return fmt.Errorf("failed to encode key: %w", err) + log.Fatalf("Failed to encode key: %v", err) } err = keyOut.Close() if err != nil { - return fmt.Errorf("failed to write key: %w", err) + log.Fatalf("Failed to write key: %v", err) } - fmt.Fprintf(c.Writer, "Written key to %s\n", c.String("keyout")) + log.Println("Written key.pem") return nil } diff --git a/cmd/cert_test.go b/cmd/cert_test.go deleted file mode 100644 index 4242d8915b..0000000000 --- a/cmd/cert_test.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2025 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "path/filepath" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestCertCommand(t *testing.T) { - cases := []struct { - name string - args []string - }{ - { - name: "RSA cert generation", - args: []string{ - "cert-test", - "--host", "localhost", - "--rsa-bits", "2048", - "--duration", "1h", - "--start-date", "Jan 1 00:00:00 2024", - }, - }, - { - name: "ECDSA cert generation", - args: []string{ - "cert-test", - "--host", "localhost", - "--ecdsa-curve", "P256", - "--duration", "1h", - "--start-date", "Jan 1 00:00:00 2024", - }, - }, - { - name: "mixed host, certificate authority", - args: []string{ - "cert-test", - "--host", "localhost,127.0.0.1", - "--duration", "1h", - "--start-date", "Jan 1 00:00:00 2024", - }, - }, - } - - for _, c := range cases { - t.Run(c.name, func(t *testing.T) { - app := cmdCert() - tempDir := t.TempDir() - - certFile := filepath.Join(tempDir, "cert.pem") - keyFile := filepath.Join(tempDir, "key.pem") - - err := app.Run(t.Context(), append(c.args, "--out", certFile, "--keyout", keyFile)) - require.NoError(t, err) - - assert.FileExists(t, certFile) - assert.FileExists(t, keyFile) - }) - } -} - -func TestCertCommandFailures(t *testing.T) { - cases := []struct { - name string - args []string - errMsg string - }{ - { - name: "Start Date Parsing failure", - args: []string{ - "cert-test", - "--host", "localhost", - "--start-date", "invalid-date", - }, - errMsg: "parsing time", - }, - { - name: "Unknown curve", - args: []string{ - "cert-test", - "--host", "localhost", - "--ecdsa-curve", "invalid-curve", - }, - errMsg: "unrecognized elliptic curve", - }, - { - name: "Key generation failure", - args: []string{ - "cert-test", - "--host", "localhost", - "--rsa-bits", "invalid-bits", - }, - }, - { - name: "Missing parameters", - args: []string{ - "cert-test", - }, - errMsg: `"host" not set`, - }, - } - for _, c := range cases { - t.Run(c.name, func(t *testing.T) { - app := cmdCert() - tempDir := t.TempDir() - - certFile := filepath.Join(tempDir, "cert.pem") - keyFile := filepath.Join(tempDir, "key.pem") - err := app.Run(t.Context(), append(c.args, "--out", certFile, "--keyout", keyFile)) - require.Error(t, err) - if c.errMsg != "" { - assert.ErrorContains(t, err, c.errMsg) - } - assert.NoFileExists(t, certFile) - assert.NoFileExists(t, keyFile) - }) - } -} diff --git a/cmd/cmd.go b/cmd/cmd.go index 5b96bcbf9a..423dce2674 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -18,19 +18,20 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // argsSet checks that all the required arguments are set. args is a list of // arguments that must be set in the passed Context. -func argsSet(c *cli.Command, args ...string) error { +func argsSet(c *cli.Context, args ...string) error { for _, a := range args { if !c.IsSet(a) { return errors.New(a + " is not set") } - if c.Value(a) == nil { + if util.IsEmptyString(c.String(a)) { return errors.New(a + " is required") } } @@ -108,7 +109,7 @@ func setupConsoleLogger(level log.Level, colorize bool, out io.Writer) { log.GetManager().GetLogger(log.DEFAULT).ReplaceAllWriters(writer) } -func globalBool(c *cli.Command, name string) bool { +func globalBool(c *cli.Context, name string) bool { for _, ctx := range c.Lineage() { if ctx.Bool(name) { return true @@ -119,8 +120,8 @@ func globalBool(c *cli.Command, name string) bool { // PrepareConsoleLoggerLevel by default, use INFO level for console logger, but some sub-commands (for git/ssh protocol) shouldn't output any log to stdout. // Any log appears in git stdout pipe will break the git protocol, eg: client can't push and hangs forever. -func PrepareConsoleLoggerLevel(defaultLevel log.Level) func(context.Context, *cli.Command) (context.Context, error) { - return func(ctx context.Context, c *cli.Command) (context.Context, error) { +func PrepareConsoleLoggerLevel(defaultLevel log.Level) func(*cli.Context) error { + return func(c *cli.Context) error { level := defaultLevel if globalBool(c, "quiet") { level = log.FATAL @@ -129,16 +130,6 @@ func PrepareConsoleLoggerLevel(defaultLevel log.Level) func(context.Context, *cl level = log.TRACE } log.SetConsoleLogger(log.DEFAULT, "console-default", level) - return ctx, nil + return nil } } - -func isValidDefaultSubCommand(cmd *cli.Command) (string, bool) { - // Dirty patch for urfave/cli's strange design. - // "./gitea bad-cmd" should not start the web server. - rootArgs := cmd.Root().Args().Slice() - if len(rootArgs) != 0 && rootArgs[0] != cmd.Name { - return rootArgs[0], false - } - return "", true -} diff --git a/cmd/cmd_test.go b/cmd/cmd_test.go deleted file mode 100644 index a36d05c76e..0000000000 --- a/cmd/cmd_test.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2025 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package cmd - -import ( - "context" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/urfave/cli/v3" -) - -func TestDefaultCommand(t *testing.T) { - test := func(t *testing.T, args []string, expectedRetName string, expectedRetValid bool) { - called := false - cmd := &cli.Command{ - DefaultCommand: "test", - Commands: []*cli.Command{ - { - Name: "test", - Action: func(ctx context.Context, command *cli.Command) error { - retName, retValid := isValidDefaultSubCommand(command) - assert.Equal(t, expectedRetName, retName) - assert.Equal(t, expectedRetValid, retValid) - called = true - return nil - }, - }, - }, - } - assert.NoError(t, cmd.Run(t.Context(), args)) - assert.True(t, called) - } - test(t, []string{"./gitea"}, "", true) - test(t, []string{"./gitea", "test"}, "", true) - test(t, []string{"./gitea", "other"}, "other", false) -} diff --git a/cmd/docs.go b/cmd/docs.go index 098c0e9a8a..605d02e3ef 100644 --- a/cmd/docs.go +++ b/cmd/docs.go @@ -4,13 +4,11 @@ package cmd import ( - "context" "fmt" "os" "strings" - cli_docs "github.com/urfave/cli-docs/v3" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // CmdDocs represents the available docs sub-command. @@ -32,16 +30,16 @@ var CmdDocs = &cli.Command{ }, } -func runDocs(_ context.Context, cmd *cli.Command) error { - docs, err := cli_docs.ToMarkdown(cmd.Root()) - if cmd.Bool("man") { - docs, err = cli_docs.ToMan(cmd.Root()) +func runDocs(ctx *cli.Context) error { + docs, err := ctx.App.ToMarkdown() + if ctx.Bool("man") { + docs, err = ctx.App.ToMan() } if err != nil { return err } - if !cmd.Bool("man") { + if !ctx.Bool("man") { // Clean up markdown. The following bug was fixed in v2, but is present in v1. // It affects markdown output (even though the issue is referring to man pages) // https://github.com/urfave/cli/issues/1040 @@ -53,8 +51,8 @@ func runDocs(_ context.Context, cmd *cli.Command) error { } out := os.Stdout - if cmd.String("output") != "" { - fi, err := os.Create(cmd.String("output")) + if ctx.String("output") != "" { + fi, err := os.Create(ctx.String("output")) if err != nil { return err } diff --git a/cmd/doctor.go b/cmd/doctor.go index 9e0fcbf877..4085d37332 100644 --- a/cmd/doctor.go +++ b/cmd/doctor.go @@ -4,7 +4,6 @@ package cmd import ( - "context" "fmt" golog "log" "os" @@ -16,21 +15,21 @@ import ( "code.gitea.io/gitea/models/migrations" migrate_base "code.gitea.io/gitea/models/migrations/base" "code.gitea.io/gitea/modules/container" + "code.gitea.io/gitea/modules/doctor" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/services/doctor" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" "xorm.io/xorm" ) // CmdDoctor represents the available doctor sub-command. var CmdDoctor = &cli.Command{ Name: "doctor", - Usage: "Diagnose and optionally fix problems, convert or re-create database tables", + Usage: "Diagnose and optionally fix problems", Description: "A command to diagnose problems with the current Gitea instance according to the given configuration. Some problems can optionally be fixed by modifying the database or data storage.", - Commands: []*cli.Command{ + Subcommands: []*cli.Command{ cmdDoctorCheck, cmdRecreateTable, cmdDoctorConvert, @@ -93,13 +92,16 @@ You should back-up your database before doing this and ensure that your database Action: runRecreateTable, } -func runRecreateTable(ctx context.Context, cmd *cli.Command) error { +func runRecreateTable(ctx *cli.Context) error { + stdCtx, cancel := installSignals() + defer cancel() + // Redirect the default golog to here golog.SetFlags(0) golog.SetPrefix("") golog.SetOutput(log.LoggerToWriter(log.GetLogger(log.DEFAULT).Info)) - debug := cmd.Bool("debug") + debug := ctx.Bool("debug") setting.MustInstalled() setting.LoadDBSetting() @@ -110,15 +112,15 @@ func runRecreateTable(ctx context.Context, cmd *cli.Command) error { } setting.Database.LogSQL = debug - if err := db.InitEngine(ctx); err != nil { + if err := db.InitEngine(stdCtx); err != nil { fmt.Println(err) fmt.Println("Check if you are using the right config file. You can use a --config directive to specify one.") return nil } - args := cmd.Args() - names := make([]string, 0, cmd.NArg()) - for i := 0; i < cmd.NArg(); i++ { + args := ctx.Args() + names := make([]string, 0, ctx.NArg()) + for i := 0; i < ctx.NArg(); i++ { names = append(names, args.Get(i)) } @@ -128,25 +130,24 @@ func runRecreateTable(ctx context.Context, cmd *cli.Command) error { } recreateTables := migrate_base.RecreateTables(beans...) - return db.InitEngineWithMigration(ctx, func(ctx context.Context, x *xorm.Engine) error { - if err := migrations.EnsureUpToDate(ctx, x); err != nil { + return db.InitEngineWithMigration(stdCtx, func(x *xorm.Engine) error { + if err := migrations.EnsureUpToDate(x); err != nil { return err } return recreateTables(x) }) } -func setupDoctorDefaultLogger(cmd *cli.Command, colorize bool) { +func setupDoctorDefaultLogger(ctx *cli.Context, colorize bool) { // Silence the default loggers setupConsoleLogger(log.FATAL, log.CanColorStderr, os.Stderr) - logFile := cmd.String("log-file") - switch logFile { - case "": + logFile := ctx.String("log-file") + if logFile == "" { return // if no doctor log-file is set, do not show any log from default logger - case "-": + } else if logFile == "-" { setupConsoleLogger(log.TRACE, colorize, os.Stdout) - default: + } else { logFile, _ = filepath.Abs(logFile) writeMode := log.WriterMode{Level: log.TRACE, WriterOption: log.WriterFileOption{FileName: logFile}} writer, err := log.NewEventWriter("console-to-file", "file", writeMode) @@ -158,20 +159,23 @@ func setupDoctorDefaultLogger(cmd *cli.Command, colorize bool) { } } -func runDoctorCheck(ctx context.Context, cmd *cli.Command) error { +func runDoctorCheck(ctx *cli.Context) error { + stdCtx, cancel := installSignals() + defer cancel() + colorize := log.CanColorStdout - if cmd.IsSet("color") { - colorize = cmd.Bool("color") + if ctx.IsSet("color") { + colorize = ctx.Bool("color") } - setupDoctorDefaultLogger(cmd, colorize) + setupDoctorDefaultLogger(ctx, colorize) // Finally redirect the default golang's log to here golog.SetFlags(0) golog.SetPrefix("") golog.SetOutput(log.LoggerToWriter(log.GetLogger(log.DEFAULT).Info)) - if cmd.IsSet("list") { + if ctx.IsSet("list") { w := tabwriter.NewWriter(os.Stdout, 0, 8, 1, '\t', 0) _, _ = w.Write([]byte("Default\tName\tTitle\n")) doctor.SortChecks(doctor.Checks) @@ -189,12 +193,12 @@ func runDoctorCheck(ctx context.Context, cmd *cli.Command) error { } var checks []*doctor.Check - if cmd.Bool("all") { + if ctx.Bool("all") { checks = make([]*doctor.Check, len(doctor.Checks)) copy(checks, doctor.Checks) - } else if cmd.IsSet("run") { - addDefault := cmd.Bool("default") - runNamesSet := container.SetOf(cmd.StringSlice("run")...) + } else if ctx.IsSet("run") { + addDefault := ctx.Bool("default") + runNamesSet := container.SetOf(ctx.StringSlice("run")...) for _, check := range doctor.Checks { if (addDefault && check.IsDefault) || runNamesSet.Contains(check.Name) { checks = append(checks, check) @@ -211,5 +215,5 @@ func runDoctorCheck(ctx context.Context, cmd *cli.Command) error { } } } - return doctor.RunChecks(ctx, colorize, cmd.Bool("fix"), checks) + return doctor.RunChecks(stdCtx, colorize, ctx.Bool("fix"), checks) } diff --git a/cmd/doctor_convert.go b/cmd/doctor_convert.go index 8cb718d383..2385f23e52 100644 --- a/cmd/doctor_convert.go +++ b/cmd/doctor_convert.go @@ -4,14 +4,13 @@ package cmd import ( - "context" "fmt" "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // cmdDoctorConvert represents the available convert sub-command. @@ -22,8 +21,11 @@ var cmdDoctorConvert = &cli.Command{ Action: runDoctorConvert, } -func runDoctorConvert(ctx context.Context, cmd *cli.Command) error { - if err := initDB(ctx); err != nil { +func runDoctorConvert(ctx *cli.Context) error { + stdCtx, cancel := installSignals() + defer cancel() + + if err := initDB(stdCtx); err != nil { return err } @@ -35,8 +37,8 @@ func runDoctorConvert(ctx context.Context, cmd *cli.Command) error { switch { case setting.Database.Type.IsMySQL(): - if err := db.ConvertDatabaseTable(); err != nil { - log.Fatal("Failed to convert database & table: %v", err) + if err := db.ConvertUtf8ToUtf8mb4(); err != nil { + log.Fatal("Failed to convert database from utf8 to utf8mb4: %v", err) return err } fmt.Println("Converted successfully, please confirm your database's character set is now utf8mb4") diff --git a/cmd/doctor_test.go b/cmd/doctor_test.go index da942b38b6..75376a567e 100644 --- a/cmd/doctor_test.go +++ b/cmd/doctor_test.go @@ -7,11 +7,11 @@ import ( "context" "testing" + "code.gitea.io/gitea/modules/doctor" "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/services/doctor" "github.com/stretchr/testify/assert" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) func TestDoctorRun(t *testing.T) { @@ -22,13 +22,12 @@ func TestDoctorRun(t *testing.T) { SkipDatabaseInitialization: true, }) - app := &cli.Command{ - Commands: []*cli.Command{cmdDoctorCheck}, - } - err := app.Run(t.Context(), []string{"./gitea", "check", "--run", "test-check"}) + app := cli.NewApp() + app.Commands = []*cli.Command{cmdDoctorCheck} + err := app.Run([]string{"./gitea", "check", "--run", "test-check"}) assert.NoError(t, err) - err = app.Run(t.Context(), []string{"./gitea", "check", "--run", "no-such"}) + err = app.Run([]string{"./gitea", "check", "--run", "no-such"}) assert.ErrorContains(t, err, `unknown checks: "no-such"`) - err = app.Run(t.Context(), []string{"./gitea", "check", "--run", "test-check,no-such"}) + err = app.Run([]string{"./gitea", "check", "--run", "test-check,no-such"}) assert.ErrorContains(t, err, `unknown checks: "no-such"`) } diff --git a/cmd/dump.go b/cmd/dump.go index ed19e3d4bf..69ecdcec12 100644 --- a/cmd/dump.go +++ b/cmd/dump.go @@ -5,14 +5,15 @@ package cmd import ( - "context" + "fmt" + "io" "os" "path" "path/filepath" "strings" + "time" "code.gitea.io/gitea/models/db" - "code.gitea.io/gitea/modules/dump" "code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" @@ -21,20 +22,92 @@ import ( "gitea.com/go-chi/session" "github.com/mholt/archiver/v3" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) +func addReader(w archiver.Writer, r io.ReadCloser, info os.FileInfo, customName string, verbose bool) error { + if verbose { + log.Info("Adding file %s", customName) + } + + return w.Write(archiver.File{ + FileInfo: archiver.FileInfo{ + FileInfo: info, + CustomName: customName, + }, + ReadCloser: r, + }) +} + +func addFile(w archiver.Writer, filePath, absPath string, verbose bool) error { + file, err := os.Open(absPath) + if err != nil { + return err + } + defer file.Close() + fileInfo, err := file.Stat() + if err != nil { + return err + } + + return addReader(w, file, fileInfo, filePath, verbose) +} + +func isSubdir(upper, lower string) (bool, error) { + if relPath, err := filepath.Rel(upper, lower); err != nil { + return false, err + } else if relPath == "." || !strings.HasPrefix(relPath, ".") { + return true, nil + } + return false, nil +} + +type outputType struct { + Enum []string + Default string + selected string +} + +func (o outputType) Join() string { + return strings.Join(o.Enum, ", ") +} + +func (o *outputType) Set(value string) error { + for _, enum := range o.Enum { + if enum == value { + o.selected = value + return nil + } + } + + return fmt.Errorf("allowed values are %s", o.Join()) +} + +func (o outputType) String() string { + if o.selected == "" { + return o.Default + } + return o.selected +} + +var outputTypeEnum = &outputType{ + Enum: []string{"zip", "tar", "tar.sz", "tar.gz", "tar.xz", "tar.bz2", "tar.br", "tar.lz4", "tar.zst"}, + Default: "zip", +} + // CmdDump represents the available dump sub-command. var CmdDump = &cli.Command{ - Name: "dump", - Usage: "Dump Gitea files and database", - Description: `Dump compresses all related files and database into zip file. It can be used for backup and capture Gitea server image to send to maintainer`, - Action: runDump, + Name: "dump", + Usage: "Dump Gitea files and database", + Description: `Dump compresses all related files and database into zip file. +It can be used for backup and capture Gitea server image to send to maintainer`, + Action: runDump, Flags: []cli.Flag{ &cli.StringFlag{ Name: "file", Aliases: []string{"f"}, - Usage: `Name of the dump file which will be created, default to "gitea-dump-{time}.zip". Supply '-' for stdout. See type for available types.`, + Value: fmt.Sprintf("gitea-dump-%d.zip", time.Now().Unix()), + Usage: "Name of the dump file which will be created. Supply '-' for stdout. See type for available types.", }, &cli.BoolFlag{ Name: "verbose", @@ -87,91 +160,114 @@ var CmdDump = &cli.Command{ Name: "skip-index", Usage: "Skip bleve index data", }, - &cli.BoolFlag{ - Name: "skip-db", - Usage: "Skip database", - }, - &cli.StringFlag{ + &cli.GenericFlag{ Name: "type", - Usage: `Dump output format, default to "zip", supported types: ` + strings.Join(dump.SupportedOutputTypes, ", "), + Value: outputTypeEnum, + Usage: fmt.Sprintf("Dump output format: %s", outputTypeEnum.Join()), }, }, } func fatal(format string, args ...any) { + fmt.Fprintf(os.Stderr, format+"\n", args...) log.Fatal(format, args...) } -func runDump(ctx context.Context, cmd *cli.Command) error { +func runDump(ctx *cli.Context) error { + var file *os.File + fileName := ctx.String("file") + outType := ctx.String("type") + if fileName == "-" { + file = os.Stdout + setupConsoleLogger(log.FATAL, log.CanColorStderr, os.Stderr) + } else { + for _, suffix := range outputTypeEnum.Enum { + if strings.HasSuffix(fileName, "."+suffix) { + fileName = strings.TrimSuffix(fileName, "."+suffix) + break + } + } + fileName += "." + outType + } setting.MustInstalled() - quite := cmd.Bool("quiet") - verbose := cmd.Bool("verbose") - if verbose && quite { - fatal("Option --quiet and --verbose cannot both be set") + // make sure we are logging to the console no matter what the configuration tells us do to + // FIXME: don't use CfgProvider directly + if _, err := setting.CfgProvider.Section("log").NewKey("MODE", "console"); err != nil { + fatal("Setting logging mode to console failed: %v", err) + } + if _, err := setting.CfgProvider.Section("log.console").NewKey("STDERR", "true"); err != nil { + fatal("Setting console logger to stderr failed: %v", err) } - // outFileName is either "-" or a file name (will be made absolute) - outFileName, outType := dump.PrepareFileNameAndType(cmd.String("file"), cmd.String("type")) - if outType == "" { - fatal("Invalid output type") + // Set loglevel to Warn if quiet-mode is requested + if ctx.Bool("quiet") { + if _, err := setting.CfgProvider.Section("log.console").NewKey("LEVEL", "Warn"); err != nil { + fatal("Setting console log-level failed: %v", err) + } } - outFile := os.Stdout - if outFileName != "-" { - var err error - if outFileName, err = filepath.Abs(outFileName); err != nil { - fatal("Unable to get absolute path of dump file: %v", err) - } - if exist, _ := util.IsExist(outFileName); exist { - fatal("Dump file %q exists", outFileName) - } - if outFile, err = os.Create(outFileName); err != nil { - fatal("Unable to create dump file %q: %v", outFileName, err) - } - defer outFile.Close() + if !setting.InstallLock { + log.Error("Is '%s' really the right config path?\n", setting.CustomConf) + return fmt.Errorf("gitea is not initialized") } - - setupConsoleLogger(util.Iif(quite, log.WARN, log.INFO), log.CanColorStderr, os.Stderr) - - setting.DisableLoggerInit() setting.LoadSettings() // cannot access session settings otherwise - err := db.InitEngine(ctx) + verbose := ctx.Bool("verbose") + if verbose && ctx.Bool("quiet") { + return fmt.Errorf("--quiet and --verbose cannot both be set") + } + + stdCtx, cancel := installSignals() + defer cancel() + + err := db.InitEngine(stdCtx) if err != nil { return err } - if err = storage.Init(); err != nil { + if err := storage.Init(); err != nil { return err } - archiverGeneric, err := archiver.ByExtension("." + outType) + if file == nil { + file, err = os.Create(fileName) + if err != nil { + fatal("Unable to open %s: %v", fileName, err) + } + } + defer file.Close() + + absFileName, err := filepath.Abs(fileName) + if err != nil { + return err + } + + var iface any + if fileName == "-" { + iface, err = archiver.ByExtension(fmt.Sprintf(".%s", outType)) + } else { + iface, err = archiver.ByExtension(fileName) + } if err != nil { fatal("Unable to get archiver for extension: %v", err) } - archiverWriter := archiverGeneric.(archiver.Writer) - if err := archiverWriter.Create(outFile); err != nil { + w, _ := iface.(archiver.Writer) + if err := w.Create(file); err != nil { fatal("Creating archiver.Writer failed: %v", err) } - defer archiverWriter.Close() + defer w.Close() - dumper := &dump.Dumper{ - Writer: archiverWriter, - Verbose: verbose, - } - dumper.GlobalExcludeAbsPath(outFileName) - - if cmd.IsSet("skip-repository") && cmd.Bool("skip-repository") { + if ctx.IsSet("skip-repository") && ctx.Bool("skip-repository") { log.Info("Skip dumping local repositories") } else { log.Info("Dumping local repositories... %s", setting.RepoRootPath) - if err := dumper.AddRecursiveExclude("repos", setting.RepoRootPath, nil); err != nil { + if err := addRecursiveExclude(w, "repos", setting.RepoRootPath, []string{absFileName}, verbose); err != nil { fatal("Failed to include repositories: %v", err) } - if cmd.IsSet("skip-lfs-data") && cmd.Bool("skip-lfs-data") { + if ctx.IsSet("skip-lfs-data") && ctx.Bool("skip-lfs-data") { log.Info("Skip dumping LFS data") } else if !setting.LFS.StartServer { log.Info("LFS isn't enabled. Skip dumping LFS data") @@ -180,61 +276,58 @@ func runDump(ctx context.Context, cmd *cli.Command) error { if err != nil { return err } - return dumper.AddReader(object, info, path.Join("data", "lfs", objPath)) + + return addReader(w, object, info, path.Join("data", "lfs", objPath), verbose) }); err != nil { fatal("Failed to dump LFS objects: %v", err) } } - if cmd.Bool("skip-db") { - // Ensure that we don't dump the database file that may reside in setting.AppDataPath or elsewhere. - dumper.GlobalExcludeAbsPath(setting.Database.Path) - log.Info("Skipping database") + tmpDir := ctx.String("tempdir") + if _, err := os.Stat(tmpDir); os.IsNotExist(err) { + fatal("Path does not exist: %s", tmpDir) + } + + dbDump, err := os.CreateTemp(tmpDir, "gitea-db.sql") + if err != nil { + fatal("Failed to create tmp file: %v", err) + } + defer func() { + _ = dbDump.Close() + if err := util.Remove(dbDump.Name()); err != nil { + log.Warn("Unable to remove temporary file: %s: Error: %v", dbDump.Name(), err) + } + }() + + targetDBType := ctx.String("database") + if len(targetDBType) > 0 && targetDBType != setting.Database.Type.String() { + log.Info("Dumping database %s => %s...", setting.Database.Type, targetDBType) } else { - tmpDir := cmd.String("tempdir") - if _, err := os.Stat(tmpDir); os.IsNotExist(err) { - fatal("Path does not exist: %s", tmpDir) - } + log.Info("Dumping database...") + } - dbDump, err := os.CreateTemp(tmpDir, "gitea-db.sql") - if err != nil { - fatal("Failed to create tmp file: %v", err) - } - defer func() { - _ = dbDump.Close() - if err := util.Remove(dbDump.Name()); err != nil { - log.Warn("Unable to remove temporary file: %s: Error: %v", dbDump.Name(), err) - } - }() + if err := db.DumpDatabase(dbDump.Name(), targetDBType); err != nil { + fatal("Failed to dump database: %v", err) + } - targetDBType := cmd.String("database") - if len(targetDBType) > 0 && targetDBType != setting.Database.Type.String() { - log.Info("Dumping database %s => %s...", setting.Database.Type, targetDBType) - } else { - log.Info("Dumping database...") - } + if err := addFile(w, "gitea-db.sql", dbDump.Name(), verbose); err != nil { + fatal("Failed to include gitea-db.sql: %v", err) + } - if err := db.DumpDatabase(dbDump.Name(), targetDBType); err != nil { - fatal("Failed to dump database: %v", err) - } - - if err = dumper.AddFile("gitea-db.sql", dbDump.Name()); err != nil { - fatal("Failed to include gitea-db.sql: %v", err) + if len(setting.CustomConf) > 0 { + log.Info("Adding custom configuration file from %s", setting.CustomConf) + if err := addFile(w, "app.ini", setting.CustomConf, verbose); err != nil { + fatal("Failed to include specified app.ini: %v", err) } } - log.Info("Adding custom configuration file from %s", setting.CustomConf) - if err = dumper.AddFile("app.ini", setting.CustomConf); err != nil { - fatal("Failed to include specified app.ini: %v", err) - } - - if cmd.IsSet("skip-custom-dir") && cmd.Bool("skip-custom-dir") { + if ctx.IsSet("skip-custom-dir") && ctx.Bool("skip-custom-dir") { log.Info("Skipping custom directory") } else { customDir, err := os.Stat(setting.CustomPath) if err == nil && customDir.IsDir() { - if is, _ := dump.IsSubdir(setting.AppDataPath, setting.CustomPath); !is { - if err := dumper.AddRecursiveExclude("custom", setting.CustomPath, nil); err != nil { + if is, _ := isSubdir(setting.AppDataPath, setting.CustomPath); !is { + if err := addRecursiveExclude(w, "custom", setting.CustomPath, []string{absFileName}, verbose); err != nil { fatal("Failed to include custom: %v", err) } } else { @@ -261,7 +354,7 @@ func runDump(ctx context.Context, cmd *cli.Command) error { excludes = append(excludes, opts.ProviderConfig) } - if cmd.IsSet("skip-index") && cmd.Bool("skip-index") { + if ctx.IsSet("skip-index") && ctx.Bool("skip-index") { excludes = append(excludes, setting.Indexer.RepoPath) excludes = append(excludes, setting.Indexer.IssuePath) } @@ -271,24 +364,26 @@ func runDump(ctx context.Context, cmd *cli.Command) error { excludes = append(excludes, setting.Attachment.Storage.Path) excludes = append(excludes, setting.Packages.Storage.Path) excludes = append(excludes, setting.Log.RootPath) - if err := dumper.AddRecursiveExclude("data", setting.AppDataPath, excludes); err != nil { + excludes = append(excludes, absFileName) + if err := addRecursiveExclude(w, "data", setting.AppDataPath, excludes, verbose); err != nil { fatal("Failed to include data directory: %v", err) } } - if cmd.IsSet("skip-attachment-data") && cmd.Bool("skip-attachment-data") { + if ctx.IsSet("skip-attachment-data") && ctx.Bool("skip-attachment-data") { log.Info("Skip dumping attachment data") } else if err := storage.Attachments.IterateObjects("", func(objPath string, object storage.Object) error { info, err := object.Stat() if err != nil { return err } - return dumper.AddReader(object, info, path.Join("data", "attachments", objPath)) + + return addReader(w, object, info, path.Join("data", "attachments", objPath), verbose) }); err != nil { fatal("Failed to dump attachments: %v", err) } - if cmd.IsSet("skip-package-data") && cmd.Bool("skip-package-data") { + if ctx.IsSet("skip-package-data") && ctx.Bool("skip-package-data") { log.Info("Skip dumping package data") } else if !setting.Packages.Enabled { log.Info("Packages isn't enabled. Skip dumping package data") @@ -297,7 +392,8 @@ func runDump(ctx context.Context, cmd *cli.Command) error { if err != nil { return err } - return dumper.AddReader(object, info, path.Join("data", "packages", objPath)) + + return addReader(w, object, info, path.Join("data", "packages", objPath), verbose) }); err != nil { fatal("Failed to dump packages: %v", err) } @@ -305,7 +401,7 @@ func runDump(ctx context.Context, cmd *cli.Command) error { // Doesn't check if LogRootPath exists before processing --skip-log intentionally, // ensuring that it's clear the dump is skipped whether the directory's initialized // yet or not. - if cmd.IsSet("skip-log") && cmd.Bool("skip-log") { + if ctx.IsSet("skip-log") && ctx.Bool("skip-log") { log.Info("Skip dumping log files") } else { isExist, err := util.IsExist(setting.Log.RootPath) @@ -313,23 +409,80 @@ func runDump(ctx context.Context, cmd *cli.Command) error { log.Error("Unable to check if %s exists. Error: %v", setting.Log.RootPath, err) } if isExist { - if err := dumper.AddRecursiveExclude("log", setting.Log.RootPath, nil); err != nil { + if err := addRecursiveExclude(w, "log", setting.Log.RootPath, []string{absFileName}, verbose); err != nil { fatal("Failed to include log: %v", err) } } } - if outFileName == "-" { - log.Info("Finish dumping to stdout") - } else { - if err = archiverWriter.Close(); err != nil { - _ = os.Remove(outFileName) - fatal("Failed to save %q: %v", outFileName, err) + if fileName != "-" { + if err = w.Close(); err != nil { + _ = util.Remove(fileName) + fatal("Failed to save %s: %v", fileName, err) } - if err = os.Chmod(outFileName, 0o600); err != nil { + + if err := os.Chmod(fileName, 0o600); err != nil { log.Info("Can't change file access permissions mask to 0600: %v", err) } - log.Info("Finish dumping in file %s", outFileName) + } + + if fileName != "-" { + log.Info("Finish dumping in file %s", fileName) + } else { + log.Info("Finish dumping to stdout") + } + + return nil +} + +// addRecursiveExclude zips absPath to specified insidePath inside writer excluding excludeAbsPath +func addRecursiveExclude(w archiver.Writer, insidePath, absPath string, excludeAbsPath []string, verbose bool) error { + absPath, err := filepath.Abs(absPath) + if err != nil { + return err + } + dir, err := os.Open(absPath) + if err != nil { + return err + } + defer dir.Close() + + files, err := dir.Readdir(0) + if err != nil { + return err + } + for _, file := range files { + currentAbsPath := filepath.Join(absPath, file.Name()) + currentInsidePath := path.Join(insidePath, file.Name()) + if file.IsDir() { + if !util.SliceContainsString(excludeAbsPath, currentAbsPath) { + if err := addFile(w, currentInsidePath, currentAbsPath, false); err != nil { + return err + } + if err = addRecursiveExclude(w, currentInsidePath, currentAbsPath, excludeAbsPath, verbose); err != nil { + return err + } + } + } else { + // only copy regular files and symlink regular files, skip non-regular files like socket/pipe/... + shouldAdd := file.Mode().IsRegular() + if !shouldAdd && file.Mode()&os.ModeSymlink == os.ModeSymlink { + target, err := filepath.EvalSymlinks(currentAbsPath) + if err != nil { + return err + } + targetStat, err := os.Stat(target) + if err != nil { + return err + } + shouldAdd = targetStat.Mode().IsRegular() + } + if shouldAdd { + if err = addFile(w, currentInsidePath, currentAbsPath, verbose); err != nil { + return err + } + } + } } return nil } diff --git a/cmd/dump_repo.go b/cmd/dump_repo.go index a75b2d1b94..3a24cf6c5f 100644 --- a/cmd/dump_repo.go +++ b/cmd/dump_repo.go @@ -19,7 +19,7 @@ import ( "code.gitea.io/gitea/services/convert" "code.gitea.io/gitea/services/migrations" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // CmdDumpRepository represents the available dump repository sub-command. @@ -79,13 +79,11 @@ wiki, issues, labels, releases, release_assets, milestones, pull_requests, comme }, } -func runDumpRepository(ctx context.Context, cmd *cli.Command) error { - setupConsoleLogger(log.INFO, log.CanColorStderr, os.Stderr) +func runDumpRepository(ctx *cli.Context) error { + stdCtx, cancel := installSignals() + defer cancel() - setting.DisableLoggerInit() - setting.LoadSettings() // cannot access skip_tls_verify settings otherwise - - if err := initDB(ctx); err != nil { + if err := initDB(stdCtx); err != nil { return err } @@ -102,8 +100,8 @@ func runDumpRepository(ctx context.Context, cmd *cli.Command) error { var ( serviceType structs.GitServiceType - cloneAddr = cmd.String("clone_addr") - serviceStr = cmd.String("git_service") + cloneAddr = ctx.String("clone_addr") + serviceStr = ctx.String("git_service") ) if strings.HasPrefix(strings.ToLower(cloneAddr), "https://github.com/") { @@ -121,13 +119,13 @@ func runDumpRepository(ctx context.Context, cmd *cli.Command) error { opts := base.MigrateOptions{ GitServiceType: serviceType, CloneAddr: cloneAddr, - AuthUsername: cmd.String("auth_username"), - AuthPassword: cmd.String("auth_password"), - AuthToken: cmd.String("auth_token"), - RepoName: cmd.String("repo_name"), + AuthUsername: ctx.String("auth_username"), + AuthPassword: ctx.String("auth_password"), + AuthToken: ctx.String("auth_token"), + RepoName: ctx.String("repo_name"), } - if len(cmd.String("units")) == 0 { + if len(ctx.String("units")) == 0 { opts.Wiki = true opts.Issues = true opts.Milestones = true @@ -137,8 +135,8 @@ func runDumpRepository(ctx context.Context, cmd *cli.Command) error { opts.PullRequests = true opts.ReleaseAssets = true } else { - units := strings.SplitSeq(cmd.String("units"), ",") - for unit := range units { + units := strings.Split(ctx.String("units"), ",") + for _, unit := range units { switch strings.ToLower(strings.TrimSpace(unit)) { case "": continue @@ -166,7 +164,7 @@ func runDumpRepository(ctx context.Context, cmd *cli.Command) error { // the repo_dir will be removed if error occurs in DumpRepository // make sure the directory doesn't exist or is empty, prevent from deleting user files - repoDir := cmd.String("repo_dir") + repoDir := ctx.String("repo_dir") if exists, err := util.IsExist(repoDir); err != nil { return fmt.Errorf("unable to stat repo_dir %q: %w", repoDir, err) } else if exists { @@ -181,7 +179,7 @@ func runDumpRepository(ctx context.Context, cmd *cli.Command) error { if err := migrations.DumpRepository( context.Background(), repoDir, - cmd.String("owner_name"), + ctx.String("owner_name"), opts, ); err != nil { log.Fatal("Failed to dump repository: %v", err) diff --git a/cmd/embedded.go b/cmd/embedded.go index 1908352453..71d483d11c 100644 --- a/cmd/embedded.go +++ b/cmd/embedded.go @@ -4,7 +4,6 @@ package cmd import ( - "context" "errors" "fmt" "os" @@ -20,7 +19,7 @@ import ( "code.gitea.io/gitea/modules/util" "github.com/gobwas/glob" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // CmdEmbedded represents the available extract sub-command. @@ -29,7 +28,7 @@ var ( Name: "embedded", Usage: "Extract embedded resources", Description: "A command for extracting embedded resources, like templates and images", - Commands: []*cli.Command{ + Subcommands: []*cli.Command{ subcmdList, subcmdView, subcmdExtract, @@ -101,7 +100,7 @@ type assetFile struct { path string } -func initEmbeddedExtractor(c *cli.Command) error { +func initEmbeddedExtractor(c *cli.Context) error { setupConsoleLogger(log.ERROR, log.CanColorStderr, os.Stderr) patterns, err := compileCollectPatterns(c.Args().Slice()) @@ -116,31 +115,31 @@ func initEmbeddedExtractor(c *cli.Command) error { return nil } -func runList(_ context.Context, c *cli.Command) error { +func runList(c *cli.Context) error { if err := runListDo(c); err != nil { - _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) + fmt.Fprintf(os.Stderr, "%v\n", err) return err } return nil } -func runView(_ context.Context, c *cli.Command) error { +func runView(c *cli.Context) error { if err := runViewDo(c); err != nil { - _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) + fmt.Fprintf(os.Stderr, "%v\n", err) return err } return nil } -func runExtract(_ context.Context, c *cli.Command) error { +func runExtract(c *cli.Context) error { if err := runExtractDo(c); err != nil { - _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) + fmt.Fprintf(os.Stderr, "%v\n", err) return err } return nil } -func runListDo(c *cli.Command) error { +func runListDo(c *cli.Context) error { if err := initEmbeddedExtractor(c); err != nil { return err } @@ -152,15 +151,15 @@ func runListDo(c *cli.Command) error { return nil } -func runViewDo(c *cli.Command) error { +func runViewDo(c *cli.Context) error { if err := initEmbeddedExtractor(c); err != nil { return err } if len(matchedAssetFiles) == 0 { - return errors.New("no files matched the given pattern") + return fmt.Errorf("no files matched the given pattern") } else if len(matchedAssetFiles) > 1 { - return errors.New("too many files matched the given pattern, try to be more specific") + return fmt.Errorf("too many files matched the given pattern, try to be more specific") } data, err := matchedAssetFiles[0].fs.ReadFile(matchedAssetFiles[0].name) @@ -175,13 +174,13 @@ func runViewDo(c *cli.Command) error { return nil } -func runExtractDo(c *cli.Command) error { +func runExtractDo(c *cli.Context) error { if err := initEmbeddedExtractor(c); err != nil { return err } if c.NArg() == 0 { - return errors.New("a list of pattern of files to extract is mandatory (e.g. '**' for all)") + return fmt.Errorf("a list of pattern of files to extract is mandatory (e.g. '**' for all)") } destdir := "." @@ -217,7 +216,7 @@ func runExtractDo(c *cli.Command) error { for _, a := range matchedAssetFiles { if err := extractAsset(destdir, a, overwrite, rename); err != nil { // Non-fatal error - _, _ = fmt.Fprintf(os.Stderr, "%s: %v\n", a.path, err) + fmt.Fprintf(os.Stderr, "%s: %v", a.path, err) } } @@ -272,7 +271,7 @@ func extractAsset(d string, a assetFile, overwrite, rename bool) error { return nil } -func collectAssetFilesByPattern(c *cli.Command, globs []glob.Glob, path string, layer *assetfs.Layer) { +func collectAssetFilesByPattern(c *cli.Context, globs []glob.Glob, path string, layer *assetfs.Layer) { fs := assetfs.Layered(layer) files, err := fs.ListAllFiles(".", true) if err != nil { @@ -295,14 +294,16 @@ func collectAssetFilesByPattern(c *cli.Command, globs []glob.Glob, path string, } } -func compileCollectPatterns(args []string) (_ []glob.Glob, err error) { +func compileCollectPatterns(args []string) ([]glob.Glob, error) { if len(args) == 0 { args = []string{"**"} } pat := make([]glob.Glob, len(args)) for i := range args { - if pat[i], err = glob.Compile(args[i], '/'); err != nil { - return nil, fmt.Errorf("invalid glob patterh %q: %w", args[i], err) + if g, err := glob.Compile(args[i], '/'); err != nil { + return nil, fmt.Errorf("'%s': Invalid glob pattern: %w", args[i], err) + } else { //nolint:revive + pat[i] = g } } return pat, nil diff --git a/cmd/generate.go b/cmd/generate.go index cf491604ef..34145af24d 100644 --- a/cmd/generate.go +++ b/cmd/generate.go @@ -5,22 +5,21 @@ package cmd import ( - "context" "fmt" "os" "code.gitea.io/gitea/modules/generate" "github.com/mattn/go-isatty" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) var ( // CmdGenerate represents the available generate sub-command. CmdGenerate = &cli.Command{ Name: "generate", - Usage: "Generate Gitea's secrets/keys/tokens", - Commands: []*cli.Command{ + Usage: "Command line interface for running generators", + Subcommands: []*cli.Command{ subcmdSecret, }, } @@ -28,7 +27,7 @@ var ( subcmdSecret = &cli.Command{ Name: "secret", Usage: "Generate a secret token", - Commands: []*cli.Command{ + Subcommands: []*cli.Command{ microcmdGenerateInternalToken, microcmdGenerateLfsJwtSecret, microcmdGenerateSecretKey, @@ -55,7 +54,7 @@ var ( } ) -func runGenerateInternalToken(_ context.Context, c *cli.Command) error { +func runGenerateInternalToken(c *cli.Context) error { internalToken, err := generate.NewInternalToken() if err != nil { return err @@ -70,7 +69,7 @@ func runGenerateInternalToken(_ context.Context, c *cli.Command) error { return nil } -func runGenerateLfsJwtSecret(_ context.Context, c *cli.Command) error { +func runGenerateLfsJwtSecret(c *cli.Context) error { _, jwtSecretBase64, err := generate.NewJwtSecretWithBase64() if err != nil { return err @@ -85,7 +84,7 @@ func runGenerateLfsJwtSecret(_ context.Context, c *cli.Command) error { return nil } -func runGenerateSecretKey(_ context.Context, c *cli.Command) error { +func runGenerateSecretKey(c *cli.Context) error { secretKey, err := generate.NewSecretKey() if err != nil { return err diff --git a/cmd/hook.go b/cmd/hook.go index 2ce272b411..6c5a09b2e7 100644 --- a/cmd/hook.go +++ b/cmd/hook.go @@ -20,21 +20,21 @@ import ( repo_module "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/setting" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) const ( - hookBatchSize = 500 + hookBatchSize = 30 ) var ( // CmdHook represents the available hooks sub-command. CmdHook = &cli.Command{ Name: "hook", - Usage: "(internal) Should only be called by Git", - Description: "Delegate commands to corresponding Git hooks", + Usage: "Delegate commands to corresponding Git hooks", + Description: "This should only be called by Git", Before: PrepareConsoleLoggerLevel(log.FATAL), - Commands: []*cli.Command{ + Subcommands: []*cli.Command{ subcmdHookPreReceive, subcmdHookUpdate, subcmdHookPostReceive, @@ -161,10 +161,12 @@ func (n *nilWriter) WriteString(s string) (int, error) { return len(s), nil } -func runHookPreReceive(ctx context.Context, c *cli.Command) error { +func runHookPreReceive(c *cli.Context) error { if isInternal, _ := strconv.ParseBool(os.Getenv(repo_module.EnvIsInternal)); isInternal { return nil } + ctx, cancel := installSignals() + defer cancel() setup(ctx, c.Bool("debug")) @@ -218,7 +220,10 @@ Gitea or set your environment appropriately.`, "") } } - supportProcReceive := git.DefaultFeatures().SupportProcReceive + supportProcReceive := false + if git.CheckGitVersionAtLeast("2.29") == nil { + supportProcReceive = true + } for scanner.Scan() { // TODO: support news feeds for wiki @@ -288,31 +293,20 @@ Gitea or set your environment appropriately.`, "") return nil } -// runHookUpdate avoid to do heavy operations on update hook because it will be -// invoked for every ref update which does not like pre-receive and post-receive -func runHookUpdate(_ context.Context, c *cli.Command) error { - if isInternal, _ := strconv.ParseBool(os.Getenv(repo_module.EnvIsInternal)); isInternal { - return nil - } - +func runHookUpdate(c *cli.Context) error { // Update is empty and is kept only for backwards compatibility - if len(os.Args) < 3 { - return nil - } - refName := git.RefName(os.Args[len(os.Args)-3]) - if refName.IsPull() { - // ignore update to refs/pull/xxx/head, so we don't need to output any information - os.Exit(1) - } return nil } -func runHookPostReceive(ctx context.Context, c *cli.Command) error { +func runHookPostReceive(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) // First of all run update-server-info no matter what - if _, _, err := git.NewCommand("update-server-info").RunStdString(ctx, nil); err != nil { - return fmt.Errorf("failed to call 'git update-server-info': %w", err) + if _, _, err := git.NewCommand(ctx, "update-server-info").RunStdString(nil); err != nil { + return fmt.Errorf("Failed to call 'git update-server-info': %w", err) } // Now if we're an internal don't do anything else @@ -347,7 +341,6 @@ Gitea or set your environment appropriately.`, "") isWiki, _ := strconv.ParseBool(os.Getenv(repo_module.EnvRepoIsWiki)) repoName := os.Getenv(repo_module.EnvRepoName) pusherID, _ := strconv.ParseInt(os.Getenv(repo_module.EnvPusherID), 10, 64) - prID, _ := strconv.ParseInt(os.Getenv(repo_module.EnvPRID), 10, 64) pusherName := os.Getenv(repo_module.EnvPusherName) hookOptions := private.HookOptions{ @@ -357,8 +350,6 @@ Gitea or set your environment appropriately.`, "") GitObjectDirectory: os.Getenv(private.GitObjectDirectory), GitQuarantinePath: os.Getenv(private.GitQuarantinePath), GitPushOptions: pushOptions(), - PullRequestID: prID, - PushTrigger: repo_module.PushTrigger(os.Getenv(repo_module.EnvPushTrigger)), } oldCommitIDs := make([]string, hookBatchSize) newCommitIDs := make([]string, hookBatchSize) @@ -385,9 +376,7 @@ Gitea or set your environment appropriately.`, "") oldCommitIDs[count] = string(fields[0]) newCommitIDs[count] = string(fields[1]) refFullNames[count] = git.RefName(fields[2]) - - commitID, _ := git.NewIDFromString(newCommitIDs[count]) - if refFullNames[count] == git.BranchPrefix+"master" && !commitID.IsZero() && count == total { + if refFullNames[count] == git.BranchPrefix+"master" && newCommitIDs[count] != git.EmptySHA && count == total { masterPushed = true } count++ @@ -474,13 +463,13 @@ func hookPrintResult(output, isCreate bool, branch, url string) { fmt.Fprintf(os.Stderr, " %s\n", url) } fmt.Fprintln(os.Stderr, "") - _ = os.Stderr.Sync() + os.Stderr.Sync() } func pushOptions() map[string]string { opts := make(map[string]string) if pushCount, err := strconv.Atoi(os.Getenv(private.GitPushOptionCount)); err == nil { - for idx := range pushCount { + for idx := 0; idx < pushCount; idx++ { opt := os.Getenv(fmt.Sprintf("GIT_PUSH_OPTION_%d", idx)) kv := strings.SplitN(opt, "=", 2) if len(kv) == 2 { @@ -491,7 +480,10 @@ func pushOptions() map[string]string { return opts } -func runHookProcReceive(ctx context.Context, c *cli.Command) error { +func runHookProcReceive(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 { @@ -503,7 +495,7 @@ Gitea or set your environment appropriately.`, "") return nil } - if !git.DefaultFeatures().SupportProcReceive { + if git.CheckGitVersionAtLeast("2.29") != nil { return fail(ctx, "No proc-receive support", "current git version doesn't support proc-receive.") } @@ -534,14 +526,14 @@ Gitea or set your environment appropriately.`, "") index := bytes.IndexByte(rs.Data, byte(0)) if index >= len(rs.Data) { - return fail(ctx, "Protocol: format error", "pkt-line: format error %s", rs.Data) + return fail(ctx, "Protocol: format error", "pkt-line: format error "+fmt.Sprint(rs.Data)) } if index < 0 { if len(rs.Data) == 10 && rs.Data[9] == '\n' { index = 9 } else { - return fail(ctx, "Protocol: format error", "pkt-line: format error %s", rs.Data) + return fail(ctx, "Protocol: format error", "pkt-line: format error "+fmt.Sprint(rs.Data)) } } @@ -583,9 +575,8 @@ Gitea or set your environment appropriately.`, "") // S: ... ... // S: flush-pkt hookOptions := private.HookOptions{ - UserName: pusherName, - UserID: pusherID, - GitPushOptions: make(map[string]string), + UserName: pusherName, + UserID: pusherID, } hookOptions.OldCommitIDs = make([]string, 0, hookBatchSize) hookOptions.NewCommitIDs = make([]string, 0, hookBatchSize) @@ -610,6 +601,8 @@ Gitea or set your environment appropriately.`, "") hookOptions.RefFullNames = append(hookOptions.RefFullNames, git.RefName(t[2])) } + hookOptions.GitPushOptions = make(map[string]string) + if hasPushOptions { for { rs, err = readPktLine(ctx, reader, pktLineTypeUnknow) @@ -620,7 +613,11 @@ Gitea or set your environment appropriately.`, "") if rs.Type == pktLineTypeFlush { break } - hookOptions.GitPushOptions.AddFromKeyValue(string(rs.Data)) + + kv := strings.SplitN(string(rs.Data), "=", 2) + if len(kv) == 2 { + hookOptions.GitPushOptions[kv[0]] = kv[1] + } } } @@ -675,8 +672,7 @@ Gitea or set your environment appropriately.`, "") if err != nil { return err } - commitID, _ := git.NewIDFromString(rs.OldOID) - if !commitID.IsZero() { + if rs.OldOID != git.EmptySHA { err = writeDataPktLine(ctx, os.Stdout, []byte("option old-oid "+rs.OldOID)) if err != nil { return err @@ -732,7 +728,7 @@ func readPktLine(ctx context.Context, in *bufio.Reader, requestType pktLineType) // read prefix lengthBytes := make([]byte, 4) - for i := range 4 { + for i := 0; i < 4; i++ { lengthBytes[i], err = in.ReadByte() if err != nil { return nil, fail(ctx, "Protocol: stdin error", "Pkt-Line: read stdin failed : %v", err) diff --git a/cmd/hook_test.go b/cmd/hook_test.go index 86cd4834f2..91f24ff2b4 100644 --- a/cmd/hook_test.go +++ b/cmd/hook_test.go @@ -6,6 +6,7 @@ package cmd import ( "bufio" "bytes" + "context" "strings" "testing" @@ -14,7 +15,7 @@ import ( func TestPktLine(t *testing.T) { // test read - ctx := t.Context() + ctx := context.Background() s := strings.NewReader("0000") r := bufio.NewReader(s) result, err := readPktLine(ctx, r, pktLineTypeFlush) diff --git a/cmd/keys.go b/cmd/keys.go index 8710756a81..b846782529 100644 --- a/cmd/keys.go +++ b/cmd/keys.go @@ -4,7 +4,6 @@ package cmd import ( - "context" "errors" "fmt" "strings" @@ -12,16 +11,15 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/private" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // CmdKeys represents the available keys sub-command var CmdKeys = &cli.Command{ - Name: "keys", - Usage: "(internal) Should only be called by SSH server", - Description: "Queries the Gitea database to get the authorized command for a given ssh key fingerprint", - Before: PrepareConsoleLoggerLevel(log.FATAL), - Action: runKeys, + Name: "keys", + Usage: "This command queries the Gitea database to get the authorized command for a given ssh key fingerprint", + Before: PrepareConsoleLoggerLevel(log.FATAL), + Action: runKeys, Flags: []cli.Flag{ &cli.StringFlag{ Name: "expected", @@ -50,7 +48,7 @@ var CmdKeys = &cli.Command{ }, } -func runKeys(ctx context.Context, c *cli.Command) error { +func runKeys(c *cli.Context) error { if !c.IsSet("username") { return errors.New("No username provided") } @@ -69,13 +67,16 @@ func runKeys(ctx context.Context, c *cli.Command) error { return errors.New("No key type and content provided") } - setup(ctx, c.Bool("debug")) + ctx, cancel := installSignals() + defer cancel() + + setup(ctx, false) authorizedString, extra := private.AuthorizedPublicKeyByContent(ctx, content) // do not use handleCliResponseExtra or cli.NewExitError, if it exists immediately, it breaks some tests like Test_CmdKeys if extra.Error != nil { return extra.Error } - _, _ = fmt.Fprintln(c.Root().Writer, strings.TrimSpace(authorizedString.Text)) + _, _ = fmt.Fprintln(c.App.Writer, strings.TrimSpace(authorizedString)) return nil } diff --git a/cmd/mailer.go b/cmd/mailer.go index 72bd8e5601..646330e85a 100644 --- a/cmd/mailer.go +++ b/cmd/mailer.go @@ -4,18 +4,24 @@ package cmd import ( - "context" "fmt" "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/setting" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) -func runSendMail(ctx context.Context, c *cli.Command) error { +func runSendMail(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setting.MustInstalled() + if err := argsSet(c, "title"); err != nil { + return err + } + subject := c.String("title") confirmSkiped := c.Bool("force") body := c.String("content") @@ -39,6 +45,6 @@ func runSendMail(ctx context.Context, c *cli.Command) error { if extra.HasError() { return handleCliResponseExtra(extra) } - _, _ = fmt.Printf("Sent %s email(s) to all users\n", respText.Text) + _, _ = fmt.Printf("Sent %s email(s) to all users\n", respText) return nil } diff --git a/cmd/main.go b/cmd/main.go index 3b8a8a9311..feda41e68b 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -4,37 +4,36 @@ package cmd import ( - "context" "fmt" "os" "strings" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // cmdHelp is our own help subcommand with more information -// Keep in mind that the "./gitea help"(subcommand) is different from "./gitea --help"(flag), the flag doesn't parse the config or output "DEFAULT CONFIGURATION:" information func cmdHelp() *cli.Command { c := &cli.Command{ Name: "help", Aliases: []string{"h"}, Usage: "Shows a list of commands or help for one command", ArgsUsage: "[command]", - Action: func(ctx context.Context, c *cli.Command) (err error) { - lineage := c.Lineage() // The order is from child to parent: help, doctor, Gitea + Action: func(c *cli.Context) (err error) { + lineage := c.Lineage() // The order is from child to parent: help, doctor, Gitea, {Command:nil} targetCmdIdx := 0 - if c.Name == "help" { + if c.Command.Name == "help" { targetCmdIdx = 1 } - if lineage[targetCmdIdx] != lineage[targetCmdIdx].Root() { - err = cli.ShowCommandHelp(ctx, lineage[targetCmdIdx+1] /* parent cmd */, lineage[targetCmdIdx].Name /* sub cmd */) + if lineage[targetCmdIdx+1].Command != nil { + err = cli.ShowCommandHelp(lineage[targetCmdIdx+1], lineage[targetCmdIdx].Command.Name) } else { err = cli.ShowAppHelp(c) } - _, _ = fmt.Fprintf(c.Root().Writer, ` + _, _ = fmt.Fprintf(c.App.Writer, ` DEFAULT CONFIGURATION: AppPath: %s WorkPath: %s @@ -48,10 +47,16 @@ DEFAULT CONFIGURATION: return c } +var helpFlag = cli.HelpFlag + +func init() { + // cli.HelpFlag = nil TODO: after https://github.com/urfave/cli/issues/1794 we can use this +} + func appGlobalFlags() []cli.Flag { return []cli.Flag{ // make the builtin flags at the top - cli.HelpFlag, + helpFlag, // shared configuration flags, they are for global and for each sub-command at the same time // eg: such command is valid: "./gitea --config /tmp/app.ini web --config /tmp/app.ini", while it's discouraged indeed @@ -75,25 +80,25 @@ func appGlobalFlags() []cli.Flag { } } -func prepareSubcommandWithGlobalFlags(command *cli.Command) { - command.Flags = append(append([]cli.Flag{}, appGlobalFlags()...), command.Flags...) +func prepareSubcommandWithConfig(command *cli.Command, globalFlags []cli.Flag) { + command.Flags = append(append([]cli.Flag{}, globalFlags...), command.Flags...) command.Action = prepareWorkPathAndCustomConf(command.Action) command.HideHelp = true if command.Name != "help" { - command.Commands = append(command.Commands, cmdHelp()) + command.Subcommands = append(command.Subcommands, cmdHelp()) } - for i := range command.Commands { - prepareSubcommandWithGlobalFlags(command.Commands[i]) + for i := range command.Subcommands { + prepareSubcommandWithConfig(command.Subcommands[i], globalFlags) } } // prepareWorkPathAndCustomConf wraps the Action to prepare the work path and custom config // It can't use "Before", because each level's sub-command's Before will be called one by one, so the "init" would be done multiple times -func prepareWorkPathAndCustomConf(action cli.ActionFunc) func(context.Context, *cli.Command) error { - return func(ctx context.Context, cmd *cli.Command) error { +func prepareWorkPathAndCustomConf(action cli.ActionFunc) func(ctx *cli.Context) error { + return func(ctx *cli.Context) error { var args setting.ArgWorkPathAndCustomConf // from children to parent, check the global flags - for _, curCtx := range cmd.Lineage() { + for _, curCtx := range ctx.Lineage() { if curCtx.IsSet("work-path") && args.WorkPath == "" { args.WorkPath = curCtx.String("work-path") } @@ -105,37 +110,31 @@ func prepareWorkPathAndCustomConf(action cli.ActionFunc) func(context.Context, * } } setting.InitWorkPathAndCommonConfig(os.Getenv, args) - if cmd.Bool("help") || action == nil { + if ctx.Bool("help") || action == nil { // the default behavior of "urfave/cli": "nil action" means "show help" - return cmdHelp().Action(ctx, cmd) + return cmdHelp().Action(ctx) } - return action(ctx, cmd) + return action(ctx) } } -type AppVersion struct { - Version string - Extra string -} - -func NewMainApp(appVer AppVersion) *cli.Command { - app := &cli.Command{} - app.Name = "gitea" // must be lower-cased because it appears in the "USAGE" section like "gitea doctor [command [command options]]" +func NewMainApp(version, versionExtra string) *cli.App { + app := cli.NewApp() + app.Name = "Gitea" app.Usage = "A painless self-hosted Git service" - app.Description = `Gitea program contains "web" and other subcommands. If no subcommand is given, it starts the web server by default. Use "web" subcommand for more web server arguments, use other subcommands for other purposes.` - app.Version = appVer.Version + appVer.Extra - app.EnableShellCompletion = true + app.Description = `By default, Gitea will start serving using the web-server with no argument, which can alternatively be run by running the subcommand "web".` + app.Version = version + versionExtra + app.EnableBashCompletion = true // these sub-commands need to use config file subCmdWithConfig := []*cli.Command{ - cmdHelp(), // the "help" sub-command was used to show the more information for "work path" and "custom config" CmdWeb, CmdServ, CmdHook, - CmdKeys, CmdDump, CmdAdmin, CmdMigrate, + CmdKeys, CmdDoctor, CmdManager, CmdEmbedded, @@ -143,37 +142,38 @@ func NewMainApp(appVer AppVersion) *cli.Command { CmdDumpRepository, CmdRestoreRepository, CmdActions, + cmdHelp(), // the "help" sub-command was used to show the more information for "work path" and "custom config" } + cmdConvert := util.ToPointer(*cmdDoctorConvert) + cmdConvert.Hidden = true // still support the legacy "./gitea doctor" by the hidden sub-command, remove it in next release + subCmdWithConfig = append(subCmdWithConfig, cmdConvert) + // these sub-commands do not need the config file, and they do not depend on any path or environment variable. subCmdStandalone := []*cli.Command{ - cmdCert(), + CmdCert, CmdGenerate, CmdDocs, } - // TODO: we should eventually drop the default command, - // but not sure whether it would break Windows users who used to double-click the EXE to run. app.DefaultCommand = CmdWeb.Name + globalFlags := appGlobalFlags() app.Flags = append(app.Flags, cli.VersionFlag) - app.Flags = append(app.Flags, appGlobalFlags()...) + app.Flags = append(app.Flags, globalFlags...) app.HideHelp = true // use our own help action to show helps (with more information like default config) app.Before = PrepareConsoleLoggerLevel(log.INFO) for i := range subCmdWithConfig { - prepareSubcommandWithGlobalFlags(subCmdWithConfig[i]) + prepareSubcommandWithConfig(subCmdWithConfig[i], globalFlags) } app.Commands = append(app.Commands, subCmdWithConfig...) app.Commands = append(app.Commands, subCmdStandalone...) - setting.InitGiteaEnvVars() return app } -func RunMainApp(app *cli.Command, args ...string) error { - ctx, cancel := installSignals() - defer cancel() - err := app.Run(ctx, args) +func RunMainApp(app *cli.App, args ...string) error { + err := app.Run(args) if err == nil { return nil } diff --git a/cmd/main_test.go b/cmd/main_test.go index 7dfa87a0ef..0e32dce564 100644 --- a/cmd/main_test.go +++ b/cmd/main_test.go @@ -4,10 +4,9 @@ package cmd import ( - "context" - "errors" "fmt" "io" + "os" "path/filepath" "strings" "testing" @@ -17,21 +16,23 @@ import ( "code.gitea.io/gitea/modules/test" "github.com/stretchr/testify/assert" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) func TestMain(m *testing.M) { - unittest.MainTest(m) + unittest.MainTest(m, &unittest.TestOptions{ + GiteaRootPath: "..", + }) } func makePathOutput(workPath, customPath, customConf string) string { return fmt.Sprintf("WorkPath=%s\nCustomPath=%s\nCustomConf=%s", workPath, customPath, customConf) } -func newTestApp(testCmdAction cli.ActionFunc) *cli.Command { - app := NewMainApp(AppVersion{}) +func newTestApp(testCmdAction func(ctx *cli.Context) error) *cli.App { + app := NewMainApp("version", "version-extra") testCmd := &cli.Command{Name: "test-cmd", Action: testCmdAction} - prepareSubcommandWithGlobalFlags(testCmd) + prepareSubcommandWithConfig(testCmd, appGlobalFlags()) app.Commands = append(app.Commands, testCmd) app.DefaultCommand = testCmd.Name return app @@ -43,7 +44,7 @@ type runResult struct { ExitCode int } -func runTestApp(app *cli.Command, args ...string) (runResult, error) { +func runTestApp(app *cli.App, args ...string) (runResult, error) { outBuf := new(strings.Builder) errBuf := new(strings.Builder) app.Writer = outBuf @@ -66,7 +67,7 @@ func TestCliCmd(t *testing.T) { defaultCustomConf := filepath.Join(defaultCustomPath, "conf/app.ini") cli.CommandHelpTemplate = "(command help template)" - cli.RootCommandHelpTemplate = "(app help template)" + cli.AppHelpTemplate = "(app help template)" cli.SubcommandHelpTemplate = "(subcommand help template)" cases := []struct { @@ -110,50 +111,70 @@ func TestCliCmd(t *testing.T) { }, } - for _, c := range cases { - t.Run(c.cmd, func(t *testing.T) { - app := newTestApp(func(ctx context.Context, cmd *cli.Command) error { - _, _ = fmt.Fprint(cmd.Root().Writer, makePathOutput(setting.AppWorkPath, setting.CustomPath, setting.CustomConf)) - return nil - }) - for k, v := range c.env { - t.Setenv(k, v) + app := newTestApp(func(ctx *cli.Context) error { + _, _ = fmt.Fprint(ctx.App.Writer, makePathOutput(setting.AppWorkPath, setting.CustomPath, setting.CustomConf)) + return nil + }) + var envBackup []string + for _, s := range os.Environ() { + if strings.HasPrefix(s, "GITEA_") && strings.Contains(s, "=") { + envBackup = append(envBackup, s) + } + } + clearGiteaEnv := func() { + for _, s := range os.Environ() { + if strings.HasPrefix(s, "GITEA_") { + _ = os.Unsetenv(s) } - args := strings.Split(c.cmd, " ") // for test only, "split" is good enough - r, err := runTestApp(app, args...) - assert.NoError(t, err, c.cmd) - assert.NotEmpty(t, c.exp, c.cmd) - assert.Contains(t, r.Stdout, c.exp, c.cmd) - }) + } + } + defer func() { + clearGiteaEnv() + for _, s := range envBackup { + k, v, _ := strings.Cut(s, "=") + _ = os.Setenv(k, v) + } + }() + + for _, c := range cases { + clearGiteaEnv() + for k, v := range c.env { + _ = os.Setenv(k, v) + } + args := strings.Split(c.cmd, " ") // for test only, "split" is good enough + r, err := runTestApp(app, args...) + assert.NoError(t, err, c.cmd) + assert.NotEmpty(t, c.exp, c.cmd) + assert.Contains(t, r.Stdout, c.exp, c.cmd) } } func TestCliCmdError(t *testing.T) { - app := newTestApp(func(ctx context.Context, cmd *cli.Command) error { return errors.New("normal error") }) + app := newTestApp(func(ctx *cli.Context) error { return fmt.Errorf("normal error") }) r, err := runTestApp(app, "./gitea", "test-cmd") assert.Error(t, err) assert.Equal(t, 1, r.ExitCode) - assert.Empty(t, r.Stdout) + assert.Equal(t, "", r.Stdout) assert.Equal(t, "Command error: normal error\n", r.Stderr) - app = newTestApp(func(ctx context.Context, cmd *cli.Command) error { return cli.Exit("exit error", 2) }) + app = newTestApp(func(ctx *cli.Context) error { return cli.Exit("exit error", 2) }) r, err = runTestApp(app, "./gitea", "test-cmd") assert.Error(t, err) assert.Equal(t, 2, r.ExitCode) - assert.Empty(t, r.Stdout) + assert.Equal(t, "", r.Stdout) assert.Equal(t, "exit error\n", r.Stderr) - app = newTestApp(func(ctx context.Context, cmd *cli.Command) error { return nil }) + app = newTestApp(func(ctx *cli.Context) error { return nil }) r, err = runTestApp(app, "./gitea", "test-cmd", "--no-such") assert.Error(t, err) assert.Equal(t, 1, r.ExitCode) - assert.Empty(t, r.Stdout) - assert.Equal(t, "Incorrect Usage: flag provided but not defined: -no-such\n\n", r.Stderr) + assert.Equal(t, "Incorrect Usage: flag provided but not defined: -no-such\n\n", r.Stdout) + assert.Equal(t, "", r.Stderr) // the cli package's strange behavior, the error message is not in stderr .... - app = newTestApp(func(ctx context.Context, cmd *cli.Command) error { return nil }) + app = newTestApp(func(ctx *cli.Context) error { return nil }) r, err = runTestApp(app, "./gitea", "test-cmd") assert.NoError(t, err) assert.Equal(t, -1, r.ExitCode) // the cli.OsExiter is not called - assert.Empty(t, r.Stdout) - assert.Empty(t, r.Stderr) + assert.Equal(t, "", r.Stdout) + assert.Equal(t, "", r.Stderr) } diff --git a/cmd/manager.go b/cmd/manager.go index f0935ea065..bd2da8edc7 100644 --- a/cmd/manager.go +++ b/cmd/manager.go @@ -4,13 +4,12 @@ package cmd import ( - "context" "os" "time" "code.gitea.io/gitea/modules/private" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) var ( @@ -19,7 +18,7 @@ var ( Name: "manager", Usage: "Manage the running gitea process", Description: "This is a command for managing the running gitea process", - Commands: []*cli.Command{ + Subcommands: []*cli.Command{ subcmdShutdown, subcmdRestart, subcmdReloadTemplates, @@ -109,31 +108,46 @@ var ( } ) -func runShutdown(ctx context.Context, c *cli.Command) error { +func runShutdown(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) extra := private.Shutdown(ctx) return handleCliResponseExtra(extra) } -func runRestart(ctx context.Context, c *cli.Command) error { +func runRestart(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) extra := private.Restart(ctx) return handleCliResponseExtra(extra) } -func runReloadTemplates(ctx context.Context, c *cli.Command) error { +func runReloadTemplates(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) extra := private.ReloadTemplates(ctx) return handleCliResponseExtra(extra) } -func runFlushQueues(ctx context.Context, c *cli.Command) error { +func runFlushQueues(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) extra := private.FlushQueues(ctx, c.Duration("timeout"), c.Bool("non-blocking")) return handleCliResponseExtra(extra) } -func runProcesses(ctx context.Context, c *cli.Command) error { +func runProcesses(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) extra := private.Processes(ctx, os.Stdout, c.Bool("flat"), c.Bool("no-system"), c.Bool("stacktraces"), c.Bool("json"), c.String("cancel")) return handleCliResponseExtra(extra) diff --git a/cmd/manager_logging.go b/cmd/manager_logging.go index ac29e7d3e5..7d34fc9ac2 100644 --- a/cmd/manager_logging.go +++ b/cmd/manager_logging.go @@ -4,15 +4,13 @@ package cmd import ( - "context" - "errors" "fmt" "os" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/private" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) var ( @@ -61,7 +59,7 @@ var ( subcmdLogging = &cli.Command{ Name: "logging", Usage: "Adjust logging commands", - Commands: []*cli.Command{ + Subcommands: []*cli.Command{ { Name: "pause", Usage: "Pause logging (Gitea will buffer logs up to a certain point and will drop them after that point)", @@ -105,7 +103,7 @@ var ( }, { Name: "add", Usage: "Add a logger", - Commands: []*cli.Command{ + Subcommands: []*cli.Command{ { Name: "file", Usage: "Add a file logger", @@ -119,6 +117,7 @@ var ( Name: "rotate", Aliases: []string{"r"}, Usage: "Rotate logs", + Value: true, }, &cli.Int64Flag{ Name: "max-size", @@ -129,6 +128,7 @@ var ( Name: "daily", Aliases: []string{"d"}, Usage: "Rotate logs daily", + Value: true, }, &cli.IntFlag{ Name: "max-days", @@ -139,6 +139,7 @@ var ( Name: "compress", Aliases: []string{"z"}, Usage: "Compress rotated logs", + Value: true, }, &cli.IntFlag{ Name: "compression-level", @@ -193,7 +194,10 @@ var ( } ) -func runRemoveLogger(ctx context.Context, c *cli.Command) error { +func runRemoveLogger(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) logger := c.String("logger") if len(logger) == 0 { @@ -205,7 +209,10 @@ func runRemoveLogger(ctx context.Context, c *cli.Command) error { return handleCliResponseExtra(extra) } -func runAddConnLogger(ctx context.Context, c *cli.Command) error { +func runAddConnLogger(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) vals := map[string]any{} mode := "conn" @@ -229,17 +236,20 @@ func runAddConnLogger(ctx context.Context, c *cli.Command) error { if c.IsSet("reconnect-on-message") { vals["reconnectOnMsg"] = c.Bool("reconnect-on-message") } - return commonAddLogger(ctx, c, mode, vals) + return commonAddLogger(c, mode, vals) } -func runAddFileLogger(ctx context.Context, c *cli.Command) error { +func runAddFileLogger(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) vals := map[string]any{} mode := "file" if c.IsSet("filename") { vals["filename"] = c.String("filename") } else { - return errors.New("filename must be set when creating a file logger") + return fmt.Errorf("filename must be set when creating a file logger") } if c.IsSet("rotate") { vals["rotate"] = c.Bool("rotate") @@ -259,10 +269,10 @@ func runAddFileLogger(ctx context.Context, c *cli.Command) error { if c.IsSet("compression-level") { vals["compressionLevel"] = c.Int("compression-level") } - return commonAddLogger(ctx, c, mode, vals) + return commonAddLogger(c, mode, vals) } -func commonAddLogger(ctx context.Context, c *cli.Command, mode string, vals map[string]any) error { +func commonAddLogger(c *cli.Context, mode string, vals map[string]any) error { if len(c.String("level")) > 0 { vals["level"] = log.LevelFromString(c.String("level")).String() } @@ -289,33 +299,46 @@ func commonAddLogger(ctx context.Context, c *cli.Command, mode string, vals map[ if c.IsSet("writer") { writer = c.String("writer") } + ctx, cancel := installSignals() + defer cancel() extra := private.AddLogger(ctx, logger, writer, mode, vals) return handleCliResponseExtra(extra) } -func runPauseLogging(ctx context.Context, c *cli.Command) error { +func runPauseLogging(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) userMsg := private.PauseLogging(ctx) _, _ = fmt.Fprintln(os.Stdout, userMsg) return nil } -func runResumeLogging(ctx context.Context, c *cli.Command) error { +func runResumeLogging(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) userMsg := private.ResumeLogging(ctx) _, _ = fmt.Fprintln(os.Stdout, userMsg) return nil } -func runReleaseReopenLogging(ctx context.Context, c *cli.Command) error { +func runReleaseReopenLogging(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setup(ctx, c.Bool("debug")) userMsg := private.ReleaseReopenLogging(ctx) _, _ = fmt.Fprintln(os.Stdout, userMsg) return nil } -func runSetLogSQL(ctx context.Context, c *cli.Command) error { +func runSetLogSQL(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() setup(ctx, c.Bool("debug")) extra := private.SetLogSQL(ctx, !c.Bool("off")) diff --git a/cmd/migrate.go b/cmd/migrate.go index e24dc9e572..4e4dd45af3 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -7,23 +7,26 @@ import ( "context" "code.gitea.io/gitea/models/db" + "code.gitea.io/gitea/models/migrations" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/services/versioned_migration" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // CmdMigrate represents the available migrate sub-command. var CmdMigrate = &cli.Command{ Name: "migrate", Usage: "Migrate the database", - Description: `This is a command for migrating the database, so that you can run "gitea admin create user" before starting the server.`, + Description: "This is a command for migrating the database, so that you can run gitea admin create-user before starting the server.", Action: runMigrate, } -func runMigrate(ctx context.Context, c *cli.Command) error { - if err := initDB(ctx); err != nil { +func runMigrate(ctx *cli.Context) error { + stdCtx, cancel := installSignals() + defer cancel() + + if err := initDB(stdCtx); err != nil { return err } @@ -33,7 +36,7 @@ func runMigrate(ctx context.Context, c *cli.Command) error { log.Info("Log path: %s", setting.Log.RootPath) log.Info("Configuration file: %s", setting.CustomConf) - if err := db.InitEngineWithMigration(context.Background(), versioned_migration.Migrate); err != nil { + if err := db.InitEngineWithMigration(context.Background(), migrations.Migrate); err != nil { log.Fatal("Failed to initialize ORM engine: %v", err) return err } diff --git a/cmd/migrate_storage.go b/cmd/migrate_storage.go index 2c63e15f50..aa49445a89 100644 --- a/cmd/migrate_storage.go +++ b/cmd/migrate_storage.go @@ -5,14 +5,13 @@ package cmd import ( "context" - "errors" "fmt" - "io/fs" "strings" actions_model "code.gitea.io/gitea/models/actions" "code.gitea.io/gitea/models/db" git_model "code.gitea.io/gitea/models/git" + "code.gitea.io/gitea/models/migrations" packages_model "code.gitea.io/gitea/models/packages" repo_model "code.gitea.io/gitea/models/repo" user_model "code.gitea.io/gitea/models/user" @@ -20,9 +19,8 @@ import ( packages_module "code.gitea.io/gitea/modules/packages" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/storage" - "code.gitea.io/gitea/services/versioned_migration" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // CmdMigrateStorage represents the available migrate storage sub-command. @@ -36,13 +34,13 @@ var CmdMigrateStorage = &cli.Command{ Name: "type", Aliases: []string{"t"}, Value: "", - Usage: "Type of stored files to copy. Allowed types: 'attachments', 'lfs', 'avatars', 'repo-avatars', 'repo-archivers', 'packages', 'actions-log', 'actions-artifacts", + Usage: "Type of stored files to copy. Allowed types: 'attachments', 'lfs', 'avatars', 'repo-avatars', 'repo-archivers', 'packages', 'actions-log'", }, &cli.StringFlag{ Name: "storage", Aliases: []string{"s"}, Value: "", - Usage: "New storage type: local (default), minio or azureblob", + Usage: "New storage type: local (default) or minio", }, &cli.StringFlag{ Name: "path", @@ -50,7 +48,6 @@ var CmdMigrateStorage = &cli.Command{ Value: "", Usage: "New storage placement if store is local (leave blank for default)", }, - // Minio Storage special configurations &cli.StringFlag{ Name: "minio-endpoint", Value: "", @@ -94,37 +91,6 @@ var CmdMigrateStorage = &cli.Command{ Value: "", Usage: "Minio checksum algorithm (default/md5)", }, - &cli.StringFlag{ - Name: "minio-bucket-lookup-type", - Value: "", - Usage: "Minio bucket lookup type", - }, - // Azure Blob Storage special configurations - &cli.StringFlag{ - Name: "azureblob-endpoint", - Value: "", - Usage: "Azure Blob storage endpoint", - }, - &cli.StringFlag{ - Name: "azureblob-account-name", - Value: "", - Usage: "Azure Blob storage account name", - }, - &cli.StringFlag{ - Name: "azureblob-account-key", - Value: "", - Usage: "Azure Blob storage account key", - }, - &cli.StringFlag{ - Name: "azureblob-container", - Value: "", - Usage: "Azure Blob storage container", - }, - &cli.StringFlag{ - Name: "azureblob-base-path", - Value: "", - Usage: "Azure Blob storage base path", - }, }, } @@ -194,27 +160,11 @@ func migrateActionsLog(ctx context.Context, dstStorage storage.ObjectStorage) er }) } -func migrateActionsArtifacts(ctx context.Context, dstStorage storage.ObjectStorage) error { - return db.Iterate(ctx, nil, func(ctx context.Context, artifact *actions_model.ActionArtifact) error { - if artifact.Status == actions_model.ArtifactStatusExpired { - return nil - } +func runMigrateStorage(ctx *cli.Context) error { + stdCtx, cancel := installSignals() + defer cancel() - _, err := storage.Copy(dstStorage, artifact.StoragePath, storage.ActionsArtifacts, artifact.StoragePath) - if err != nil { - // ignore files that do not exist - if errors.Is(err, fs.ErrNotExist) { - return nil - } - return err - } - - return nil - }) -} - -func runMigrateStorage(ctx context.Context, cmd *cli.Command) error { - if err := initDB(ctx); err != nil { + if err := initDB(stdCtx); err != nil { return err } @@ -224,7 +174,7 @@ func runMigrateStorage(ctx context.Context, cmd *cli.Command) error { log.Info("Log path: %s", setting.Log.RootPath) log.Info("Configuration file: %s", setting.CustomConf) - if err := db.InitEngineWithMigration(context.Background(), versioned_migration.Migrate); err != nil { + if err := db.InitEngineWithMigration(context.Background(), migrations.Migrate); err != nil { log.Fatal("Failed to initialize ORM engine: %v", err) return err } @@ -235,75 +185,61 @@ func runMigrateStorage(ctx context.Context, cmd *cli.Command) error { var dstStorage storage.ObjectStorage var err error - switch strings.ToLower(cmd.String("storage")) { + switch strings.ToLower(ctx.String("storage")) { case "": fallthrough case string(setting.LocalStorageType): - p := cmd.String("path") + p := ctx.String("path") if p == "" { log.Fatal("Path must be given when storage is local") return nil } dstStorage, err = storage.NewLocalStorage( - ctx, + stdCtx, &setting.Storage{ Path: p, }) case string(setting.MinioStorageType): dstStorage, err = storage.NewMinioStorage( - ctx, + stdCtx, &setting.Storage{ MinioConfig: setting.MinioStorageConfig{ - Endpoint: cmd.String("minio-endpoint"), - AccessKeyID: cmd.String("minio-access-key-id"), - SecretAccessKey: cmd.String("minio-secret-access-key"), - Bucket: cmd.String("minio-bucket"), - Location: cmd.String("minio-location"), - BasePath: cmd.String("minio-base-path"), - UseSSL: cmd.Bool("minio-use-ssl"), - InsecureSkipVerify: cmd.Bool("minio-insecure-skip-verify"), - ChecksumAlgorithm: cmd.String("minio-checksum-algorithm"), - BucketLookUpType: cmd.String("minio-bucket-lookup-type"), - }, - }) - case string(setting.AzureBlobStorageType): - dstStorage, err = storage.NewAzureBlobStorage( - ctx, - &setting.Storage{ - AzureBlobConfig: setting.AzureBlobStorageConfig{ - Endpoint: cmd.String("azureblob-endpoint"), - AccountName: cmd.String("azureblob-account-name"), - AccountKey: cmd.String("azureblob-account-key"), - Container: cmd.String("azureblob-container"), - BasePath: cmd.String("azureblob-base-path"), + Endpoint: ctx.String("minio-endpoint"), + AccessKeyID: ctx.String("minio-access-key-id"), + SecretAccessKey: ctx.String("minio-secret-access-key"), + Bucket: ctx.String("minio-bucket"), + Location: ctx.String("minio-location"), + BasePath: ctx.String("minio-base-path"), + UseSSL: ctx.Bool("minio-use-ssl"), + InsecureSkipVerify: ctx.Bool("minio-insecure-skip-verify"), + ChecksumAlgorithm: ctx.String("minio-checksum-algorithm"), }, }) default: - return fmt.Errorf("unsupported storage type: %s", cmd.String("storage")) + return fmt.Errorf("unsupported storage type: %s", ctx.String("storage")) } if err != nil { return err } migratedMethods := map[string]func(context.Context, storage.ObjectStorage) error{ - "attachments": migrateAttachments, - "lfs": migrateLFS, - "avatars": migrateAvatars, - "repo-avatars": migrateRepoAvatars, - "repo-archivers": migrateRepoArchivers, - "packages": migratePackages, - "actions-log": migrateActionsLog, - "actions-artifacts": migrateActionsArtifacts, + "attachments": migrateAttachments, + "lfs": migrateLFS, + "avatars": migrateAvatars, + "repo-avatars": migrateRepoAvatars, + "repo-archivers": migrateRepoArchivers, + "packages": migratePackages, + "actions-log": migrateActionsLog, } - tp := strings.ToLower(cmd.String("type")) + tp := strings.ToLower(ctx.String("type")) if m, ok := migratedMethods[tp]; ok { - if err := m(ctx, dstStorage); err != nil { + if err := m(stdCtx, dstStorage); err != nil { return err } log.Info("%s files have successfully been copied to the new storage.", tp) return nil } - return fmt.Errorf("unsupported storage: %s", cmd.String("type")) + return fmt.Errorf("unsupported storage: %s", ctx.String("type")) } diff --git a/cmd/migrate_storage_test.go b/cmd/migrate_storage_test.go index 6817867e28..5d8c867993 100644 --- a/cmd/migrate_storage_test.go +++ b/cmd/migrate_storage_test.go @@ -4,6 +4,7 @@ package cmd import ( + "context" "os" "strings" "testing" @@ -52,7 +53,7 @@ func TestMigratePackages(t *testing.T) { assert.NotNil(t, v) assert.NotNil(t, f) - ctx := t.Context() + ctx := context.Background() p := t.TempDir() @@ -69,6 +70,6 @@ func TestMigratePackages(t *testing.T) { entries, err := os.ReadDir(p) assert.NoError(t, err) assert.Len(t, entries, 2) - assert.Equal(t, "01", entries[0].Name()) - assert.Equal(t, "tmp", entries[1].Name()) + assert.EqualValues(t, "01", entries[0].Name()) + assert.EqualValues(t, "tmp", entries[1].Name()) } diff --git a/cmd/restore_repo.go b/cmd/restore_repo.go index c61f5a582e..37b32aa304 100644 --- a/cmd/restore_repo.go +++ b/cmd/restore_repo.go @@ -4,13 +4,12 @@ package cmd import ( - "context" "strings" "code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/setting" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // CmdRestoreRepository represents the available restore a repository sub-command. @@ -49,7 +48,10 @@ wiki, issues, labels, releases, release_assets, milestones, pull_requests, comme }, } -func runRestoreRepository(ctx context.Context, c *cli.Command) error { +func runRestoreRepository(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + setting.MustInstalled() var units []string if s := c.String("units"); s != "" { diff --git a/cmd/serv.go b/cmd/serv.go index 8c6001e727..76421c200f 100644 --- a/cmd/serv.go +++ b/cmd/serv.go @@ -11,6 +11,7 @@ import ( "os" "os/exec" "path/filepath" + "regexp" "strconv" "strings" "time" @@ -19,10 +20,8 @@ import ( asymkey_model "code.gitea.io/gitea/models/asymkey" git_model "code.gitea.io/gitea/models/git" "code.gitea.io/gitea/models/perm" - "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/json" - "code.gitea.io/gitea/modules/lfstransfer" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/pprof" "code.gitea.io/gitea/modules/private" @@ -33,13 +32,17 @@ import ( "github.com/golang-jwt/jwt/v5" "github.com/kballard/go-shellquote" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" +) + +const ( + lfsAuthenticateVerb = "git-lfs-authenticate" ) // CmdServ represents the available serv sub-command. var CmdServ = &cli.Command{ Name: "serv", - Usage: "(internal) Should only be called by SSH shell", + Usage: "This command should only be called by SSH shell", Description: "Serv provides access auth for repositories", Before: PrepareConsoleLoggerLevel(log.FATAL), Action: runServ, @@ -60,15 +63,36 @@ func setup(ctx context.Context, debug bool) { setupConsoleLogger(log.FATAL, false, os.Stderr) } setting.MustInstalled() + if debug { + setting.RunMode = "dev" + } + + // Check if setting.RepoRootPath exists. It could be the case that it doesn't exist, this can happen when + // `[repository]` `ROOT` is a relative path and $GITEA_WORK_DIR isn't passed to the SSH connection. if _, err := os.Stat(setting.RepoRootPath); err != nil { - _ = fail(ctx, "Unable to access repository path", "Unable to access repository path %q, err: %v", setting.RepoRootPath, err) + if os.IsNotExist(err) { + _ = fail(ctx, "Incorrect configuration, no repository directory.", "Directory `[repository].ROOT` %q was not found, please check if $GITEA_WORK_DIR is passed to the SSH connection or make `[repository].ROOT` an absolute value.", setting.RepoRootPath) + } else { + _ = fail(ctx, "Incorrect configuration, repository directory is inaccessible", "Directory `[repository].ROOT` %q is inaccessible. err: %v", setting.RepoRootPath, err) + } return } + if err := git.InitSimple(context.Background()); err != nil { _ = fail(ctx, "Failed to init git", "Failed to init git, err: %v", err) } } +var ( + allowedCommands = map[string]perm.AccessMode{ + "git-upload-pack": perm.AccessModeRead, + "git-upload-archive": perm.AccessModeRead, + "git-receive-pack": perm.AccessModeWrite, + lfsAuthenticateVerb: perm.AccessModeNone, + } + alphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`) +) + // fail prints message to stdout, it's mainly used for git serv and git hook commands. // The output will be passed to git client and shown to user. func fail(ctx context.Context, userMessage, logMsgFmt string, args ...any) error { @@ -79,20 +103,19 @@ func fail(ctx context.Context, userMessage, logMsgFmt string, args ...any) error // There appears to be a chance to cause a zombie process and failure to read the Exit status // if nothing is outputted on stdout. _, _ = fmt.Fprintln(os.Stdout, "") - // add extra empty lines to separate our message from other git errors to get more attention - _, _ = fmt.Fprintln(os.Stderr, "error:") - _, _ = fmt.Fprintln(os.Stderr, "error:", userMessage) - _, _ = fmt.Fprintln(os.Stderr, "error:") + _, _ = fmt.Fprintln(os.Stderr, "Gitea:", userMessage) if logMsgFmt != "" { logMsg := fmt.Sprintf(logMsgFmt, args...) if !setting.IsProd { _, _ = fmt.Fprintln(os.Stderr, "Gitea:", logMsg) } - if unicode.IsPunct(rune(userMessage[len(userMessage)-1])) { - logMsg = userMessage + " " + logMsg - } else { - logMsg = userMessage + ". " + logMsg + if userMessage != "" { + if unicode.IsPunct(rune(userMessage[len(userMessage)-1])) { + logMsg = userMessage + " " + logMsg + } else { + logMsg = userMessage + ". " + logMsg + } } _ = private.SSHLog(ctx, true, logMsg) } @@ -112,47 +135,10 @@ func handleCliResponseExtra(extra private.ResponseExtra) error { return nil } -func getAccessMode(verb, lfsVerb string) perm.AccessMode { - switch verb { - case git.CmdVerbUploadPack, git.CmdVerbUploadArchive: - return perm.AccessModeRead - case git.CmdVerbReceivePack: - return perm.AccessModeWrite - case git.CmdVerbLfsAuthenticate, git.CmdVerbLfsTransfer: - switch lfsVerb { - case git.CmdSubVerbLfsUpload: - return perm.AccessModeWrite - case git.CmdSubVerbLfsDownload: - return perm.AccessModeRead - } - } - // should be unreachable - setting.PanicInDevOrTesting("unknown verb: %s %s", verb, lfsVerb) - return perm.AccessModeNone -} +func runServ(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() -func getLFSAuthToken(ctx context.Context, lfsVerb string, results *private.ServCommandResults) (string, error) { - now := time.Now() - claims := lfs.Claims{ - RegisteredClaims: jwt.RegisteredClaims{ - ExpiresAt: jwt.NewNumericDate(now.Add(setting.LFS.HTTPAuthExpiry)), - NotBefore: jwt.NewNumericDate(now), - }, - RepoID: results.RepoID, - Op: lfsVerb, - UserID: results.UserID, - } - token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) - - // Sign and get the complete encoded token as a string using the secret - tokenString, err := token.SignedString(setting.LFS.JWTSecretBytes) - if err != nil { - return "", fail(ctx, "Failed to sign JWT Token", "Failed to sign JWT token: %v", err) - } - return "Bearer " + tokenString, nil -} - -func runServ(ctx context.Context, c *cli.Command) error { // FIXME: This needs to internationalised setup(ctx, c.Bool("debug")) @@ -168,12 +154,6 @@ func runServ(ctx context.Context, c *cli.Command) error { return nil } - defer func() { - if err := recover(); err != nil { - _ = fail(ctx, "Internal Server Error", "Panic: %v\n%s", err, log.Stack(2)) - } - }() - keys := strings.Split(c.Args().First(), "-") if len(keys) != 2 || keys[0] != "key" { return fail(ctx, "Key ID format error", "Invalid key argument: %s", c.Args().First()) @@ -203,37 +183,53 @@ func runServ(ctx context.Context, c *cli.Command) error { log.Debug("SSH_ORIGINAL_COMMAND: %s", os.Getenv("SSH_ORIGINAL_COMMAND")) } - sshCmdArgs, err := shellquote.Split(cmd) + words, err := shellquote.Split(cmd) if err != nil { return fail(ctx, "Error parsing arguments", "Failed to parse arguments: %v", err) } - if len(sshCmdArgs) < 2 { - if git.DefaultFeatures().SupportProcReceive { + if len(words) < 2 { + if git.CheckGitVersionAtLeast("2.29") == nil { // for AGit Flow if cmd == "ssh_info" { - fmt.Print(`{"type":"agit","version":1}`) + fmt.Print(`{"type":"gitea","version":1}`) return nil } } return fail(ctx, "Too few arguments", "Too few arguments in cmd: %s", cmd) } - repoPath := strings.TrimPrefix(sshCmdArgs[1], "/") - repoPathFields := strings.SplitN(repoPath, "/", 2) - if len(repoPathFields) != 2 { + verb := words[0] + repoPath := words[1] + if repoPath[0] == '/' { + repoPath = repoPath[1:] + } + + var lfsVerb string + if verb == lfsAuthenticateVerb { + if !setting.LFS.StartServer { + return fail(ctx, "Unknown git command", "LFS authentication request over SSH denied, LFS support is disabled") + } + + if len(words) > 2 { + lfsVerb = words[2] + } + } + + rr := strings.SplitN(repoPath, "/", 2) + if len(rr) != 2 { return fail(ctx, "Invalid repository path", "Invalid repository path: %v", repoPath) } - username := repoPathFields[0] - reponame := strings.TrimSuffix(repoPathFields[1], ".git") // “the-repo-name" or "the-repo-name.wiki" + username := rr[0] + reponame := strings.TrimSuffix(rr[1], ".git") // LowerCase and trim the repoPath as that's how they are stored. // This should be done after splitting the repoPath into username and reponame // so that username and reponame are not affected. repoPath = strings.ToLower(strings.TrimSpace(repoPath)) - if !repo.IsValidSSHAccessRepoName(reponame) { + if alphaDashDotPattern.MatchString(reponame) { return fail(ctx, "Invalid repo name", "Invalid repo name: %s", reponame) } @@ -255,53 +251,53 @@ func runServ(ctx context.Context, c *cli.Command) error { }() } - verb, lfsVerb := sshCmdArgs[0], "" - if !git.IsAllowedVerbForServe(verb) { + requestedMode, has := allowedCommands[verb] + if !has { return fail(ctx, "Unknown git command", "Unknown git command %s", verb) } - if git.IsAllowedVerbForServeLfs(verb) { - if !setting.LFS.StartServer { - return fail(ctx, "LFS Server is not enabled", "") - } - if verb == git.CmdVerbLfsTransfer && !setting.LFS.AllowPureSSH { - return fail(ctx, "LFS SSH transfer is not enabled", "") - } - if len(sshCmdArgs) > 2 { - lfsVerb = sshCmdArgs[2] + if verb == lfsAuthenticateVerb { + if lfsVerb == "upload" { + requestedMode = perm.AccessModeWrite + } else if lfsVerb == "download" { + requestedMode = perm.AccessModeRead + } else { + return fail(ctx, "Unknown LFS verb", "Unknown lfs verb %s", lfsVerb) } } - requestedMode := getAccessMode(verb, lfsVerb) - results, extra := private.ServCommand(ctx, keyID, username, reponame, requestedMode, verb, lfsVerb) if extra.HasError() { return fail(ctx, extra.UserMsg, "ServCommand failed: %s", extra.Error) } - // LFS SSH protocol - if verb == git.CmdVerbLfsTransfer { - token, err := getLFSAuthToken(ctx, lfsVerb, results) - if err != nil { - return err - } - return lfstransfer.Main(ctx, repoPath, lfsVerb, token) - } - // LFS token authentication - if verb == git.CmdVerbLfsAuthenticate { + if verb == lfsAuthenticateVerb { url := fmt.Sprintf("%s%s/%s.git/info/lfs", setting.AppURL, url.PathEscape(results.OwnerName), url.PathEscape(results.RepoName)) - token, err := getLFSAuthToken(ctx, lfsVerb, results) + now := time.Now() + claims := lfs.Claims{ + RegisteredClaims: jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(now.Add(setting.LFS.HTTPAuthExpiry)), + NotBefore: jwt.NewNumericDate(now), + }, + RepoID: results.RepoID, + Op: lfsVerb, + UserID: results.UserID, + } + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + + // Sign and get the complete encoded token as a string using the secret + tokenString, err := token.SignedString(setting.LFS.JWTSecretBytes) if err != nil { - return err + return fail(ctx, "Failed to sign JWT Token", "Failed to sign JWT token: %v", err) } tokenAuthentication := &git_model.LFSTokenResponse{ Header: make(map[string]string), Href: url, } - tokenAuthentication.Header["Authorization"] = token + tokenAuthentication.Header["Authorization"] = fmt.Sprintf("Bearer %s", tokenString) enc := json.NewEncoder(os.Stdout) err = enc.Encode(tokenAuthentication) @@ -342,9 +338,9 @@ func runServ(ctx context.Context, c *cli.Command) error { repo_module.EnvPusherEmail+"="+results.UserEmail, repo_module.EnvPusherID+"="+strconv.FormatInt(results.UserID, 10), repo_module.EnvRepoID+"="+strconv.FormatInt(results.RepoID, 10), - repo_module.EnvPRID+"="+strconv.Itoa(0), - repo_module.EnvDeployKeyID+"="+strconv.FormatInt(results.DeployKeyID, 10), - repo_module.EnvKeyID+"="+strconv.FormatInt(results.KeyID, 10), + repo_module.EnvPRID+"="+fmt.Sprintf("%d", 0), + repo_module.EnvDeployKeyID+"="+fmt.Sprintf("%d", results.DeployKeyID), + repo_module.EnvKeyID+"="+fmt.Sprintf("%d", results.KeyID), repo_module.EnvAppURL+"="+setting.AppURL, ) // to avoid breaking, here only use the minimal environment variables for the "gitea serv" command. diff --git a/cmd/web.go b/cmd/web.go index 61ee3cbc20..01386251be 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -12,23 +12,20 @@ import ( "path/filepath" "strconv" "strings" - "time" _ "net/http/pprof" // Used for debugging if enabled and a web server is running "code.gitea.io/gitea/modules/container" "code.gitea.io/gitea/modules/graceful" - "code.gitea.io/gitea/modules/gtprof" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/public" "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/routers" "code.gitea.io/gitea/routers/install" "github.com/felixge/fgprof" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) // PIDFile could be set from build tag @@ -117,32 +114,22 @@ func showWebStartupMessage(msg string) { log.Info("* WorkPath: %s", setting.AppWorkPath) log.Info("* CustomPath: %s", setting.CustomPath) log.Info("* ConfigFile: %s", setting.CustomConf) - log.Info("%s", msg) // show startup message - - if setting.CORSConfig.Enabled { - log.Info("CORS Service Enabled") - } - if setting.DefaultUILocation != time.Local { - log.Info("Default UI Location is %v", setting.DefaultUILocation.String()) - } - if setting.MailService != nil { - log.Info("Mail Service Enabled: RegisterEmailConfirm=%v, Service.EnableNotifyMail=%v", setting.Service.RegisterEmailConfirm, setting.Service.EnableNotifyMail) - } + log.Info("%s", msg) } -func serveInstall(cmd *cli.Command) error { +func serveInstall(ctx *cli.Context) error { showWebStartupMessage("Prepare to run install page") routers.InitWebInstallPage(graceful.GetManager().HammerContext()) // Flag for port number in case first time run conflict - if cmd.IsSet("port") { - if err := setPort(cmd.String("port")); err != nil { + if ctx.IsSet("port") { + if err := setPort(ctx.String("port")); err != nil { return err } } - if cmd.IsSet("install-port") { - if err := setPort(cmd.String("install-port")); err != nil { + if ctx.IsSet("install-port") { + if err := setPort(ctx.String("install-port")); err != nil { return err } } @@ -163,7 +150,7 @@ func serveInstall(cmd *cli.Command) error { return nil } -func serveInstalled(c *cli.Command) error { +func serveInstalled(ctx *cli.Context) error { setting.InitCfgProvider(setting.CustomConf) setting.LoadCommonSettings() setting.MustInstalled() @@ -213,19 +200,13 @@ func serveInstalled(c *cli.Command) error { log.Fatal("Can not find APP_DATA_PATH %q", setting.AppDataPath) } - // the AppDataTempDir is fully managed by us with a safe sub-path - // so it's safe to automatically remove the outdated files - setting.AppDataTempDir("").RemoveOutdated(3 * 24 * time.Hour) - // Override the provided port number within the configuration - if c.IsSet("port") { - if err := setPort(c.String("port")); err != nil { + if ctx.IsSet("port") { + if err := setPort(ctx.String("port")); err != nil { return err } } - gtprof.EnableBuiltinTracer(util.Iif(setting.IsProd, 2000*time.Millisecond, 100*time.Millisecond)) - // Set up Chi routes webRoutes := routers.NormalRoutes() err := listen(webRoutes, true) @@ -244,17 +225,13 @@ func servePprof() { finished() } -func runWeb(_ context.Context, cmd *cli.Command) error { +func runWeb(ctx *cli.Context) error { defer func() { if panicked := recover(); panicked != nil { log.Fatal("PANIC: %v\n%s", panicked, log.Stack(2)) } }() - if subCmdName, valid := isValidDefaultSubCommand(cmd); !valid { - return fmt.Errorf("unknown command: %s", subCmdName) - } - managerCtx, cancel := context.WithCancel(context.Background()) graceful.InitManager(managerCtx) defer cancel() @@ -266,12 +243,12 @@ func runWeb(_ context.Context, cmd *cli.Command) error { } // Set pid file setting - if cmd.IsSet("pid") { - createPIDFile(cmd.String("pid")) + if ctx.IsSet("pid") { + createPIDFile(ctx.String("pid")) } if !setting.InstallLock { - if err := serveInstall(cmd); err != nil { + if err := serveInstall(ctx); err != nil { return err } } else { @@ -282,7 +259,7 @@ func runWeb(_ context.Context, cmd *cli.Command) error { go servePprof() } - return serveInstalled(cmd) + return serveInstalled(ctx) } func setPort(port string) error { diff --git a/cmd/web_acme.go b/cmd/web_acme.go index 5f7a308334..90e4a02764 100644 --- a/cmd/web_acme.go +++ b/cmd/web_acme.go @@ -16,7 +16,6 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/modules/util" "github.com/caddyserver/certmagic" ) @@ -55,6 +54,8 @@ func runACME(listenAddr string, m http.Handler) error { altTLSALPNPort = p } + magic := certmagic.NewDefault() + magic.Storage = &certmagic.FileStorage{Path: setting.AcmeLiveDirectory} // Try to use private CA root if provided, otherwise defaults to system's trust var certPool *x509.CertPool if setting.AcmeCARoot != "" { @@ -64,20 +65,8 @@ func runACME(listenAddr string, m http.Handler) error { log.Warn("Failed to parse CA Root certificate, using default CA trust: %v", err) } } - // FIXME: this path is not right, it uses "AppWorkPath" incorrectly, and writes the data into "AppWorkPath/https" - // Ideally it should migrate to AppDataPath write to "AppDataPath/https" - // And one more thing, no idea why we should set the global default variables here - // But it seems that the current ACME code needs these global variables to make renew work. - // Otherwise, "renew" will use incorrect storage path - oldDefaultACME := certmagic.DefaultACME - certmagic.Default.Storage = &certmagic.FileStorage{Path: setting.AcmeLiveDirectory} - certmagic.DefaultACME = certmagic.ACMEIssuer{ - // try to use the default values provided by DefaultACME - CA: util.IfZero(setting.AcmeURL, oldDefaultACME.CA), - TestCA: oldDefaultACME.TestCA, - Logger: oldDefaultACME.Logger, - HTTPProxy: oldDefaultACME.HTTPProxy, - + myACME := certmagic.NewACMEIssuer(magic, certmagic.ACMEIssuer{ + CA: setting.AcmeURL, TrustedRoots: certPool, Email: setting.AcmeEmail, Agreed: setting.AcmeTOS, @@ -86,10 +75,8 @@ func runACME(listenAddr string, m http.Handler) error { ListenHost: setting.HTTPAddr, AltTLSALPNPort: altTLSALPNPort, AltHTTPPort: altHTTPPort, - } + }) - magic := certmagic.NewDefault() - myACME := certmagic.NewACMEIssuer(magic, certmagic.DefaultACME) magic.Issuers = []certmagic.Issuer{myACME} // this obtains certificates or renews them if necessary @@ -136,7 +123,7 @@ func runACME(listenAddr string, m http.Handler) error { } func runLetsEncryptFallbackHandler(w http.ResponseWriter, r *http.Request) { - if r.Method != http.MethodGet && r.Method != http.MethodHead { + if r.Method != "GET" && r.Method != "HEAD" { http.Error(w, "Use HTTPS", http.StatusBadRequest) return } diff --git a/cmd/web_graceful.go b/cmd/web_graceful.go index 5e06d2c216..996537be3b 100644 --- a/cmd/web_graceful.go +++ b/cmd/web_graceful.go @@ -23,6 +23,12 @@ func NoHTTPRedirector() { graceful.GetManager().InformCleanup() } +// NoMainListener tells our cleanup routine that we will not be using a possibly provided listener +// for our main HTTP/HTTPS service +func NoMainListener() { + graceful.GetManager().InformCleanup() +} + // NoInstallListener tells our cleanup routine that we will not be using a possibly provided listener // for our install HTTP/HTTPS service func NoInstallListener() { diff --git a/contrib/backport/backport.go b/contrib/backport/backport.go index 2052295fb1..5cd0fe0f6e 100644 --- a/contrib/backport/backport.go +++ b/contrib/backport/backport.go @@ -1,30 +1,31 @@ // Copyright 2023 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT -//nolint:forbidigo // use of print functions is allowed in cli +//nolint:forbidigo package main import ( "context" - "errors" "fmt" "log" "net/http" "os" "os/exec" + "os/signal" "path" "strconv" "strings" + "syscall" - "github.com/google/go-github/v71/github" - "github.com/urfave/cli/v3" + "github.com/google/go-github/v53/github" + "github.com/urfave/cli/v2" "gopkg.in/yaml.v3" ) const defaultVersion = "v1.18" // to backport to func main() { - app := &cli.Command{} + app := cli.NewApp() app.Name = "backport" app.Usage = "Backport provided PR-number on to the current or previous released version" app.Description = `Backport will look-up the PR in Gitea's git log and attempt to cherry-pick it on the current version` @@ -63,11 +64,6 @@ func main() { Value: "", Usage: "Forked user name on Github", }, - &cli.StringFlag{ - Name: "gh-access-token", - Value: "", - Usage: "Access token for GitHub api request", - }, &cli.BoolFlag{ Name: "no-fetch", Usage: "Set this flag to prevent fetch of remote branches", @@ -89,7 +85,7 @@ func main() { Usage: "Set this flag to continue from a git cherry-pick that has broken", }, } - cli.RootCommandHelpTemplate = `NAME: + cli.AppHelpTemplate = `NAME: {{.Name}} - {{.Usage}} USAGE: {{.HelpName}} {{if .VisibleFlags}}[options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}} @@ -103,12 +99,16 @@ OPTIONS: ` app.Action = runBackport - if err := app.Run(context.Background(), os.Args); err != nil { + + if err := app.Run(os.Args); err != nil { fmt.Fprintf(os.Stderr, "Unable to backport: %v\n", err) } } -func runBackport(ctx context.Context, c *cli.Command) error { +func runBackport(c *cli.Context) error { + ctx, cancel := installSignals() + defer cancel() + continuing := c.Bool("continue") var pr string @@ -153,7 +153,7 @@ func runBackport(ctx context.Context, c *cli.Command) error { args := c.Args().Slice() if len(args) == 0 && pr == "" { - return errors.New("no PR number provided\nProvide a PR number to backport") + return fmt.Errorf("no PR number provided\nProvide a PR number to backport") } else if len(args) != 1 && pr == "" { return fmt.Errorf("multiple PRs provided %v\nOnly a single PR can be backported at a time", args) } @@ -169,10 +169,9 @@ func runBackport(ctx context.Context, c *cli.Command) error { fmt.Printf("* Backporting %s to %s as %s\n", pr, localReleaseBranch, backportBranch) sha := c.String("cherry-pick") - accessToken := c.String("gh-access-token") if sha == "" { var err error - sha, err = determineSHAforPR(ctx, pr, accessToken) + sha, err = determineSHAforPR(ctx, pr) if err != nil { return err } @@ -337,8 +336,8 @@ func determineRemote(ctx context.Context, forkUser string) (string, string, erro fmt.Fprintf(os.Stderr, "Unable to list git remotes:\n%s\n", string(out)) return "", "", fmt.Errorf("unable to determine forked remote: %w", err) } - lines := strings.SplitSeq(string(out), "\n") - for line := range lines { + lines := strings.Split(string(out), "\n") + for _, line := range lines { fields := strings.Split(line, "\t") name, remote := fields[0], fields[1] // only look at pushers @@ -356,12 +355,12 @@ func determineRemote(ctx context.Context, forkUser string) (string, string, erro if !strings.Contains(remote, forkUser) { continue } - if after, ok := strings.CutPrefix(remote, "git@github.com:"); ok { - forkUser = after - } else if after, ok := strings.CutPrefix(remote, "https://github.com/"); ok { - forkUser = after - } else if after, ok := strings.CutPrefix(remote, "https://www.github.com/"); ok { - forkUser = after + if strings.HasPrefix(remote, "git@github.com:") { + forkUser = strings.TrimPrefix(remote, "git@github.com:") + } else if strings.HasPrefix(remote, "https://github.com/") { + forkUser = strings.TrimPrefix(remote, "https://github.com/") + } else if strings.HasPrefix(remote, "https://www.github.com/") { + forkUser = strings.TrimPrefix(remote, "https://www.github.com/") } else if forkUser == "" { return "", "", fmt.Errorf("unable to extract forkUser from remote %s: %s", name, remote) } @@ -428,16 +427,13 @@ func readVersion() string { return strings.Join(split[:2], ".") } -func determineSHAforPR(ctx context.Context, prStr, accessToken string) (string, error) { +func determineSHAforPR(ctx context.Context, prStr string) (string, error) { prNum, err := strconv.Atoi(prStr) if err != nil { return "", err } client := github.NewClient(http.DefaultClient) - if accessToken != "" { - client = client.WithAuthToken(accessToken) - } pr, _, err := client.PullRequests.Get(ctx, "go-gitea", "gitea", prNum) if err != nil { @@ -454,3 +450,25 @@ func determineSHAforPR(ctx context.Context, prStr, accessToken string) (string, return "", nil } + +func installSignals() (context.Context, context.CancelFunc) { + ctx, cancel := context.WithCancel(context.Background()) + go func() { + // install notify + signalChannel := make(chan os.Signal, 1) + + signal.Notify( + signalChannel, + syscall.SIGINT, + syscall.SIGTERM, + ) + select { + case <-signalChannel: + case <-ctx.Done(): + } + cancel() + signal.Reset() + }() + + return ctx, cancel +} diff --git a/contrib/environment-to-ini/environment-to-ini.go b/contrib/environment-to-ini/environment-to-ini.go index 5eb576c6fe..a7d7a6d293 100644 --- a/contrib/environment-to-ini/environment-to-ini.go +++ b/contrib/environment-to-ini/environment-to-ini.go @@ -4,17 +4,16 @@ package main import ( - "context" "os" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" - "github.com/urfave/cli/v3" + "github.com/urfave/cli/v2" ) func main() { - app := cli.Command{} + app := cli.NewApp() app.Name = "environment-to-ini" app.Usage = "Use provided environment to update configuration ini" app.Description = `As a helper to allow docker users to update the gitea configuration @@ -73,13 +72,13 @@ func main() { }, } app.Action = runEnvironmentToIni - err := app.Run(context.Background(), os.Args) + err := app.Run(os.Args) if err != nil { log.Fatal("Failed to run app with %s: %v", os.Args, err) } } -func runEnvironmentToIni(_ context.Context, c *cli.Command) error { +func runEnvironmentToIni(c *cli.Context) error { // the config system may change the environment variables, so get a copy first, to be used later env := append([]string{}, os.Environ()...) setting.InitWorkPathAndCfgProvider(os.Getenv, setting.ArgWorkPathAndCustomConf{ diff --git a/contrib/fixtures/fixture_generation.go b/contrib/fixtures/fixture_generation.go new file mode 100644 index 0000000000..06c0354efa --- /dev/null +++ b/contrib/fixtures/fixture_generation.go @@ -0,0 +1,78 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +//nolint:forbidigo +package main + +import ( + "fmt" + "os" + "path/filepath" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/models/unittest" +) + +// To generate derivative fixtures, execute the following from Gitea's repository base dir: +// go run -tags 'sqlite sqlite_unlock_notify' contrib/fixtures/fixture_generation.go [fixture...] + +var ( + generators = []struct { + gen func() (string, error) + name string + }{ + { + models.GetYamlFixturesAccess, "access", + }, + } + fixturesDir string +) + +func main() { + pathToGiteaRoot := "." + fixturesDir = filepath.Join(pathToGiteaRoot, "models", "fixtures") + if err := unittest.CreateTestEngine(unittest.FixturesOptions{ + Dir: fixturesDir, + }); err != nil { + fmt.Printf("CreateTestEngine: %+v", err) + os.Exit(1) + } + if err := unittest.PrepareTestDatabase(); err != nil { + fmt.Printf("PrepareTestDatabase: %+v\n", err) + os.Exit(1) + } + if len(os.Args) == 0 { + for _, r := range os.Args { + if err := generate(r); err != nil { + fmt.Printf("generate '%s': %+v\n", r, err) + os.Exit(1) + } + } + } else { + for _, g := range generators { + if err := generate(g.name); err != nil { + fmt.Printf("generate '%s': %+v\n", g.name, err) + os.Exit(1) + } + } + } +} + +func generate(name string) error { + for _, g := range generators { + if g.name == name { + data, err := g.gen() + if err != nil { + return err + } + path := filepath.Join(fixturesDir, name+".yml") + if err := os.WriteFile(path, []byte(data), 0o644); err != nil { + return fmt.Errorf("%s: %+v", path, err) + } + fmt.Printf("%s created.\n", path) + return nil + } + } + + return fmt.Errorf("generator not found") +} diff --git a/crowdin.yml b/crowdin.yml deleted file mode 100644 index 35a38d768c..0000000000 --- a/crowdin.yml +++ /dev/null @@ -1,12 +0,0 @@ -project_id_env: CROWDIN_PROJECT_ID -api_token_env: CROWDIN_KEY -base_path: "." -base_url: "https://api.crowdin.com" -preserve_hierarchy: true -files: - - source: "/options/locale/locale_en-US.ini" - translation: "/options/locale/locale_%locale%.ini" - type: "ini" - skip_untranslated_strings: true - export_only_approved: true - update_option: "update_as_unapproved" diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index aa2fcee765..6122b36be3 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -59,49 +59,37 @@ RUN_USER = ; git ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -;; The protocol the server listens on. One of "http", "https", "http+unix", "fcgi" or "fcgi+unix". +;; The protocol the server listens on. One of 'http', 'https', 'http+unix', 'fcgi' or 'fcgi+unix'. Defaults to 'http' ;PROTOCOL = http ;; -;; Set the domain for the server. -;DOMAIN = localhost -;; -;; The AppURL is used to generate public URL links, defaults to "{PROTOCOL}://{DOMAIN}:{HTTP_PORT}/". -;; Most users should set it to the real website URL of their Gitea instance when there is a reverse proxy. -;ROOT_URL = -;; -;; Controls how to detect the public URL. -;; Although it defaults to "legacy" (to avoid breaking existing users), most instances should use the "auto" behavior, -;; especially when the Gitea instance needs to be accessed in a container network. -;; * legacy: detect the public URL from "Host" header if "X-Forwarded-Proto" header exists, otherwise use "ROOT_URL". -;; * auto: always use "Host" header, and also use "X-Forwarded-Proto" header if it exists. If no "Host" header, use "ROOT_URL". -;PUBLIC_URL_DETECTION = legacy -;; -;; For development purpose only. It makes Gitea handle sub-path ("/sub-path/owner/repo/...") directly when debugging without a reverse proxy. -;; DO NOT USE IT IN PRODUCTION!!! -;USE_SUB_URL_PATH = false -;; -;; when STATIC_URL_PREFIX is empty it will follow ROOT_URL -;STATIC_URL_PREFIX = -;; -;; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. -;; If PROTOCOL is set to "http+unix" or "fcgi+unix", this should be the name of the Unix socket file to use. -;; Relative paths will be made absolute against the _`AppWorkPath`_. -;HTTP_ADDR = 0.0.0.0 -;; -;; The port to listen on for "http" or "https" protocol. Leave empty when using a unix socket. -;HTTP_PORT = 3000 -;; ;; Expect PROXY protocol headers on connections ;USE_PROXY_PROTOCOL = false ;; ;; Use PROXY protocol in TLS Bridging mode ;PROXY_PROTOCOL_TLS_BRIDGING = false ;; -;; Timeout to wait for PROXY protocol header (set to 0 to have no timeout) -;PROXY_PROTOCOL_HEADER_TIMEOUT = 5s +; Timeout to wait for PROXY protocol header (set to 0 to have no timeout) +;PROXY_PROTOCOL_HEADER_TIMEOUT=5s ;; -;; Accept PROXY protocol headers with UNKNOWN type -;PROXY_PROTOCOL_ACCEPT_UNKNOWN = false +; Accept PROXY protocol headers with UNKNOWN type +;PROXY_PROTOCOL_ACCEPT_UNKNOWN=false +;; +;; Set the domain for the server +;DOMAIN = localhost +;; +;; Overwrite the automatically generated public URL. Necessary for proxies and docker. +;ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/ +;; +;; when STATIC_URL_PREFIX is empty it will follow ROOT_URL +;STATIC_URL_PREFIX = +;; +;; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. +;; If PROTOCOL is set to `http+unix` or `fcgi+unix`, this should be the name of the Unix socket file to use. +;; Relative paths will be made absolute against the _`AppWorkPath`_. +;HTTP_ADDR = 0.0.0.0 +;; +;; The port to listen on. Leave empty when using a unix socket. +;HTTP_PORT = 3000 ;; ;; If REDIRECT_OTHER_PORT is true, and PROTOCOL is set to https an http server ;; will be started on PORT_TO_REDIRECT and it will redirect plain, non-secure http requests to the main @@ -110,8 +98,8 @@ RUN_USER = ; git ;REDIRECT_OTHER_PORT = false ;PORT_TO_REDIRECT = 80 ;; -;; expect PROXY protocol header on connections to https redirector, defaults to USE_PROXY_PROTOCOL -;REDIRECTOR_USE_PROXY_PROTOCOL = +;; expect PROXY protocol header on connections to https redirector. +;REDIRECTOR_USE_PROXY_PROTOCOL = %(USE_PROXY_PROTOCOL)s ;; Minimum and maximum supported TLS versions ;SSL_MIN_VERSION=TLSv1.2 ;SSL_MAX_VERSION= @@ -135,14 +123,13 @@ RUN_USER = ; git ;; most cases you do not need to change the default value. Alter it only if ;; your SSH server node is not the same as HTTP node. For different protocol, the default ;; values are different. If `PROTOCOL` is `http+unix`, the default value is `http://unix/`. -;; If `PROTOCOL` is `fcgi` or `fcgi+unix`, the default value is `{PROTOCOL}://{HTTP_ADDR}:{HTTP_PORT}/`. -;; If listen on `0.0.0.0`, the default value is `{PROTOCOL}://localhost:{HTTP_PORT}/`. -;; Otherwise the default value is `{PROTOCOL}://{HTTP_ADDR}:{HTTP_PORT}/`. -;; Most users don't need (and shouldn't) set this value. -;LOCAL_ROOT_URL = +;; If `PROTOCOL` is `fcgi` or `fcgi+unix`, the default value is `%(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/`. +;; If listen on `0.0.0.0`, the default value is `%(PROTOCOL)s://localhost:%(HTTP_PORT)s/`, Otherwise the default +;; value is `%(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/`. +;LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/ ;; -;; When making local connections pass the PROXY protocol header, defaults to USE_PROXY_PROTOCOL -;LOCAL_USE_PROXY_PROTOCOL = +;; When making local connections pass the PROXY protocol header. +;LOCAL_USE_PROXY_PROTOCOL = %(USE_PROXY_PROTOCOL)s ;; ;; Disable SSH feature when not available ;DISABLE_SSH = false @@ -154,17 +141,13 @@ RUN_USER = ; git ;SSH_SERVER_USE_PROXY_PROTOCOL = false ;; ;; Username to use for the builtin SSH server. If blank, then it is the value of RUN_USER. -;BUILTIN_SSH_SERVER_USER = +;BUILTIN_SSH_SERVER_USER = %(RUN_USER)s ;; -;; Domain name to be exposed in clone URL, defaults to DOMAIN or the domain part of ROOT_URL -;SSH_DOMAIN = +;; Domain name to be exposed in clone URL +;SSH_DOMAIN = %(DOMAIN)s ;; -;; SSH username displayed in clone URLs. It defaults to BUILTIN_SSH_SERVER_USER or RUN_USER. -;; If it is set to "(DOER_USERNAME)", it will use current signed-in user's username. -;; This option is only for some advanced users who have configured their SSH reverse-proxy -;; and need to use different usernames for git SSH clone. -;; Most users should just leave it blank. -;SSH_USER = +;; SSH username displayed in clone URLs. +;SSH_USER = %(BUILTIN_SSH_SERVER_USER)s ;; ;; The network interface the builtin SSH server should listen on ;SSH_LISTEN_HOST = @@ -172,8 +155,8 @@ RUN_USER = ; git ;; Port number to be exposed in clone URL ;SSH_PORT = 22 ;; -;; The port number the builtin SSH server should listen on, defaults to SSH_PORT -;SSH_LISTEN_PORT = +;; The port number the builtin SSH server should listen on +;SSH_LISTEN_PORT = %(SSH_PORT)s ;; ;; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'. ;SSH_ROOT_PATH = @@ -186,19 +169,30 @@ RUN_USER = ; git ;; If you intend to use the AuthorizedPrincipalsCommand functionality then you should turn this off. ;SSH_CREATE_AUTHORIZED_PRINCIPALS_FILE = true ;; -;; For the builtin SSH server, choose the supported ciphers/key-exchange-algorithms/MACs for SSH connections. -;; The supported names are listed in https://github.com/golang/crypto/blob/master/ssh/common.go. -;; Leave them empty to use the Golang crypto's recommended default values. -;; For system SSH (non-builtin SSH server), this setting has no effect. -;SSH_SERVER_CIPHERS = -;SSH_SERVER_KEY_EXCHANGES = -;SSH_SERVER_MACS = +;; For the built-in SSH server, choose the ciphers to support for SSH connections, +;; for system SSH this setting has no effect +;SSH_SERVER_CIPHERS = chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com +;; +;; For the built-in SSH server, choose the key exchange algorithms to support for SSH connections, +;; for system SSH this setting has no effect +;SSH_SERVER_KEY_EXCHANGES = curve25519-sha256, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1 +;; +;; For the built-in SSH server, choose the MACs to support for SSH connections, +;; for system SSH this setting has no effect +;SSH_SERVER_MACS = hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1 ;; ;; For the built-in SSH server, choose the keypair to offer as the host key ;; The private key should be at SSH_SERVER_HOST_KEY and the public SSH_SERVER_HOST_KEY.pub -;; relative paths are made absolute relative to the APP_DATA_PATH +;; relative paths are made absolute relative to the %(APP_DATA_PATH)s ;SSH_SERVER_HOST_KEYS=ssh/gitea.rsa, ssh/gogs.rsa ;; +;; Directory to create temporary files in when testing public keys using ssh-keygen, +;; default is the system temporary directory. +;SSH_KEY_TEST_PATH = +;; +;; Use `ssh-keygen` to parse public SSH keys. The value is passed to the shell. By default, Gitea does the parsing itself. +;SSH_KEYGEN_PATH = +;; ;; Enable SSH Authorized Key Backup when rewriting all keys, default is false ;SSH_AUTHORIZED_KEYS_BACKUP = false ;; @@ -239,7 +233,7 @@ RUN_USER = ; git ;MINIMUM_KEY_SIZE_CHECK = false ;; ;; Disable CDN even in "prod" mode -;OFFLINE_MODE = true +;OFFLINE_MODE = false ;; ;; TLS Settings: Either ACME or manual ;; (Other common TLS configuration are found before) @@ -289,9 +283,6 @@ RUN_USER = ; git ;; Default path for App data ;APP_DATA_PATH = data ; relative paths will be made absolute with _`AppWorkPath`_ ;; -;; Base path for App's temp files, leave empty to use the managed tmp directory in APP_DATA_PATH -;APP_TEMP_PATH = -;; ;; Enable gzip compression for runtime-generated content, static resources excluded ;ENABLE_GZIP = false ;; @@ -310,8 +301,6 @@ RUN_USER = ; git ;; Enables git-lfs support. true or false, default is false. ;LFS_START_SERVER = false ;; -;; Enables git-lfs SSH protocol support. true or false, default is false. -;LFS_ALLOW_PURE_SSH = false ;; ;; LFS authentication secret, change this yourself ;LFS_JWT_SECRET = @@ -328,10 +317,6 @@ RUN_USER = ; git ;; Maximum number of locks returned per page ;LFS_LOCKS_PAGING_NUM = 50 ;; -;; When clients make lfs batch requests, reject them if there are more pointers than this number -;; zero means 'unlimited' -;LFS_MAX_BATCH_SIZE = 0 -;; ;; Allow graceful restarts using SIGHUP to fork ;ALLOW_GRACEFUL_RESTARTS = true ;; @@ -365,7 +350,6 @@ NAME = gitea USER = root ;PASSWD = ;Use PASSWD = `your password` for quoting if you use special characters in the password. ;SSL_MODE = false ; either "false" (default), "true", or "skip-verify" -;CHARSET_COLLATION = ; Empty as default, Gitea will try to find a case-sensitive collation. Don't change it unless you clearly know what you need. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; @@ -397,7 +381,6 @@ USER = root ;NAME = gitea ;USER = SA ;PASSWD = MwantsaSecurePassword1 -;CHARSET_COLLATION = ; Empty as default, Gitea will try to find a case-sensitive collation. Don't change it unless you clearly know what you need. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; @@ -426,10 +409,6 @@ USER = root ;; ;; Whether execute database models migrations automatically ;AUTO_MIGRATION = true -;; -;; Threshold value (in seconds) beyond which query execution time is logged as a warning in the xorm logger -;; -;SLOW_QUERY_THRESHOLD = 5s ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -449,13 +428,13 @@ SECRET_KEY = ;SECRET_KEY_URI = file:/etc/gitea/secret_key ;; ;; Secret used to validate communication within Gitea binary. -INTERNAL_TOKEN = +INTERNAL_TOKEN= ;; ;; Alternative location to specify internal token, instead of this file; you cannot specify both this and INTERNAL_TOKEN, and must pick one ;INTERNAL_TOKEN_URI = file:/etc/gitea/internal_token ;; ;; How long to remember that a user is logged in before requiring relogin (in days) -;LOGIN_REMEMBER_DAYS = 31 +;LOGIN_REMEMBER_DAYS = 7 ;; ;; Name of the cookie used to store the current username. ;COOKIE_USERNAME = gitea_awesome @@ -517,13 +496,6 @@ INTERNAL_TOKEN = ;; stemming from cached/logged plain-text API tokens. ;; In future releases, this will become the default behavior ;DISABLE_QUERY_AUTH_TOKEN = false -;; -;; On user registration, record the IP address and user agent of the user to help identify potential abuse. -;; RECORD_USER_SIGNUP_METADATA = false -;; -;; Set the two-factor auth behavior. -;; Set to "enforced", to force users to enroll into Two-Factor Authentication, users without 2FA have no access to repositories via API or web. -;TWO_FACTOR_AUTH = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -540,8 +512,7 @@ INTERNAL_TOKEN = ;; HMAC to encode urls with, it **is required** if camo is enabled. ;HMAC_KEY = ;; Set to true to use camo for https too lese only non https urls are proxyed -;; ALLWAYS is deprecated and will be removed in the future -;ALWAYS = false +;ALLWAYS = false ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -550,7 +521,7 @@ INTERNAL_TOKEN = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Enables OAuth2 provider -ENABLED = true +ENABLE = true ;; ;; Algorithm used to sign OAuth2 tokens. Valid values: HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, EdDSA ;JWT_SIGNING_ALGORITHM = RS256 @@ -582,15 +553,14 @@ ENABLED = true ;; Pre-register OAuth2 applications for some universally useful services ;; * https://github.com/hickford/git-credential-oauth ;; * https://github.com/git-ecosystem/git-credential-manager -;; * https://gitea.com/gitea/tea -;DEFAULT_APPLICATIONS = git-credential-oauth, git-credential-manager, tea +;DEFAULT_APPLICATIONS = git-credential-oauth, git-credential-manager ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [log] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Root path for the log files - defaults to "{AppWorkPath}/log" +;; Root path for the log files - defaults to %(GITEA_WORK_DIR)/log ;ROOT_PATH = ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -690,8 +660,8 @@ LEVEL = Info ;; The path of git executable. If empty, Gitea searches through the PATH environment. ;PATH = ;; -;; The HOME directory for Git, defaults to "{APP_DATA_PATH}/home" -;HOME_PATH = +;; The HOME directory for Git +;HOME_PATH = %(APP_DATA_PATH)s/home ;; ;; Disables highlight of added and removed changes ;DISABLE_DIFF_HIGHLIGHT = false @@ -782,9 +752,6 @@ LEVEL = Info ;ALLOW_ONLY_EXTERNAL_REGISTRATION = false ;; ;; User must sign in to view anything. -;; It could be set to "expensive" to block anonymous users accessing some pages which consume a lot of resources, -;; for example: block anonymous AI crawlers from accessing repo code pages. -;; The "expensive" mode is experimental and subject to change. ;REQUIRE_SIGNIN_VIEW = false ;; ;; Mail notification @@ -795,13 +762,6 @@ LEVEL = Info ;; Please note that setting this to false will not disable OAuth Basic or Basic authentication using a token ;ENABLE_BASIC_AUTHENTICATION = true ;; -;; Show the password sign-in form (for password-based login), otherwise, only show OAuth2 or passkey login methods if they are enabled. -;; If you set it to false, maybe it also needs to set ENABLE_BASIC_AUTHENTICATION to false to completely disable password-based authentication. -;ENABLE_PASSWORD_SIGNIN_FORM = true -;; -;; Allow users to sign-in with a passkey -;ENABLE_PASSKEY_AUTHENTICATION = true -;; ;; More detail: https://github.com/gogits/gogs/issues/165 ;ENABLE_REVERSE_PROXY_AUTHENTICATION = false ; Enable this to allow reverse proxy authentication for API requests, the reverse proxy is responsible for ensuring that no CSRF is possible. @@ -929,46 +889,6 @@ LEVEL = Info ;; Valid site url schemes for user profiles ;VALID_SITE_URL_SCHEMES=http,https -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;[service.explore] -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; Only allow signed in users to view the explore pages. -;REQUIRE_SIGNIN_VIEW = false -;; -;; Disable the users explore page. -;DISABLE_USERS_PAGE = false -;; -;; Disable the organizations explore page. -;DISABLE_ORGANIZATIONS_PAGE = false -;; -;; Disable the code explore page. -;DISABLE_CODE_PAGE = false - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;[qos] -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; Enable request quality of service and overload protection. -; ENABLED = false -;; -;; The maximum number of concurrent requests that the server will -;; process before enqueueing new requests. Default is "CpuNum * 4". -; MAX_INFLIGHT = -;; -;; The maximum number of requests that can be enqueued before new -;; requests will be dropped. -; MAX_WAITING = 100 -;; -;; Target maximum wait time a request may be enqueued for. Requests -;; that are enqueued for less than this amount of time will not be -;; dropped. When wait times exceed this amount, a portion of requests -;; will be dropped until wait times have decreased below this amount. -; TARGET_WAIT_TIME = 250ms ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -982,8 +902,8 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;[repository] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Root path for storing all repository data. By default, it is set to "{APP_DATA_PATH}/gitea-repositories". -;; A relative path is interpreted as "{AppWorkPath}/{ROOT}" (use AppWorkPath as base path). +;; Root path for storing all repository data. By default, it is set to %(APP_DATA_PATH)s/gitea-repositories. +;; A relative path is interpreted as _`AppWorkPath`_/%(ROOT)s ;ROOT = ;; ;; The script type this server supports. Usually this is `bash`, but some users report that only `sh` is available. @@ -1028,12 +948,6 @@ LEVEL = Info ;GO_GET_CLONE_URL_PROTOCOL = https ;; ;; Close issues as long as a commit on any branch marks it as fixed -;DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH = false -;; -;; Allow users to push local repositories to Gitea and have them automatically created for a user or an org -;ENABLE_PUSH_CREATE_USER = false -;ENABLE_PUSH_CREATE_ORG = false -;; ;; Comma separated list of globally disabled repo units. Allowed values: repo.issues, repo.ext_issues, repo.pulls, repo.wiki, repo.ext_wiki, repo.projects, repo.packages, repo.actions. ;DISABLED_REPO_UNITS = ;; @@ -1041,20 +955,12 @@ LEVEL = Info ;; Note: Code and Releases can currently not be deactivated. If you specify default repo units you should still list them for future compatibility. ;; External wiki and issue tracker can't be enabled by default as it requires additional settings. ;; Disabled repo units will not be added to new repositories regardless if it is in the default list. -;DEFAULT_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages,repo.actions +;DEFAULT_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages ;; ;; Comma separated list of default forked repo units. ;; The set of allowed values and rules are the same as DEFAULT_REPO_UNITS. ;DEFAULT_FORK_REPO_UNITS = repo.code,repo.pulls ;; -;; Comma separated list of default mirror repo units. -;; The set of allowed values and rules are the same as DEFAULT_REPO_UNITS. -;DEFAULT_MIRROR_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.wiki,repo.projects,repo.packages -;; -;; Comma separated list of default template repo units. -;; The set of allowed values and rules are the same as DEFAULT_REPO_UNITS. -;DEFAULT_TEMPLATE_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages -;; ;; Prefix archive files by placing them in a directory named after the repository ;PREFIX_ARCHIVE_FILES = true ;; @@ -1076,13 +982,9 @@ LEVEL = Info ;; Don't allow download source archive files from UI ;DISABLE_DOWNLOAD_SOURCE_ARCHIVES = false -;; Allow to fork repositories without maximum number limit +;; Allow fork repositories without maximum number limit ;ALLOW_FORK_WITHOUT_MAXIMUM_LIMIT = true -;; Allow to fork repositories into the same owner (user or organization) -;; This feature is experimental, not fully tested, and may be changed in the future -;ALLOW_FORK_INTO_SAME_OWNER = false - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;[repository.editor] @@ -1093,6 +995,15 @@ LEVEL = Info ;; Separate extensions with a comma. To line wrap files without an extension, just put a comma ;LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd,.livemd, +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;[repository.local] +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Path for local repository copy. Defaults to `tmp/local-repo` (content gets deleted on gitea restart) +;LOCAL_COPY_PATH = tmp/local-repo + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;[repository.upload] @@ -1102,11 +1013,14 @@ LEVEL = Info ;; Whether repository file uploads are enabled. Defaults to `true` ;ENABLED = true ;; +;; Path for uploads. Defaults to `data/tmp/uploads` (content gets deleted on gitea restart) +;TEMP_PATH = data/tmp/uploads +;; ;; Comma-separated list of allowed file extensions (`.zip`), mime types (`text/plain`) or wildcard type (`image/*`, `audio/*`, `video/*`). Empty value or `*/*` allows all types. ;ALLOWED_TYPES = ;; ;; Max size of each file in megabytes. Defaults to 50MB -;FILE_MAX_SIZE = 50 +;FILE_MAX_SIZE = 50 ;; ;; Max number of files per upload. Defaults to 5 ;MAX_FILES = 5 @@ -1126,7 +1040,7 @@ LEVEL = Info ;; List of keywords used in Pull Request comments to automatically reopen a related issue ;REOPEN_KEYWORDS = reopen,reopens,reopened ;; -;; Set default merge style for repository creating, valid options: merge, rebase, rebase-merge, squash, fast-forward-only +;; Set default merge style for repository creating, valid options: merge, rebase, rebase-merge, squash ;DEFAULT_MERGE_STYLE = merge ;; ;; In the default merge message for squash commits include at most this many commits @@ -1144,21 +1058,11 @@ LEVEL = Info ;; In default merge messages only include approvers who are official ;DEFAULT_MERGE_MESSAGE_OFFICIAL_APPROVERS_ONLY = true ;; -;; In default squash-merge messages include the commit message of all commits comprising the pull request. -;POPULATE_SQUASH_COMMENT_WITH_COMMIT_MESSAGES = false -;; ;; Add co-authored-by and co-committed-by trailers if committer does not match author ;ADD_CO_COMMITTER_TRAILERS = true ;; ;; In addition to testing patches using the three-way merge method, re-test conflicting patches with git apply ;TEST_CONFLICTING_PATCHES_WITH_GIT_APPLY = false -;; -;; Retarget child pull requests to the parent pull request branch target on merge of parent pull request. It only works on merged PRs where the head and base branch target the same repo. -;RETARGET_CHILDREN_ON_MERGE = true -;; -;; Delay mergeable check until page view or API access, for pull requests that have not been updated in the specified days when their base branches get updated. -;; Use "-1" to always check all pull requests (old behavior). Use "0" to always delay the checks. -;DELAY_CHECK_FOR_INACTIVE_DAYS = 7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1186,24 +1090,17 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -;; GPG or SSH key to use to sign commits, Defaults to the default - that is the value of git config --get user.signingkey -;; Depending on the value of SIGNING_FORMAT this is either: -;; - openpgp: the GPG key ID -;; - ssh: the path to the ssh public key "/path/to/key.pub": where "/path/to/key" is the private key, use ssh-keygen -t ed25519 to generate a new key pair without password +;; GPG key to use to sign commits, Defaults to the default - that is the value of git config --get user.signingkey ;; run in the context of the RUN_USER ;; Switch to none to stop signing completely ;SIGNING_KEY = default ;; -;; If a SIGNING_KEY ID is provided and is not set to default, use the provided Name and Email address as the signer and the signing format. +;; If a SIGNING_KEY ID is provided and is not set to default, use the provided Name and Email address as the signer. ;; These should match a publicized name and email address for the key. (When SIGNING_KEY is default these are set to -;; the results of git config --get user.name, git config --get user.email and git config --default openpgp --get gpg.format respectively and can only be overridden +;; the results of git config --get user.name and git config --get user.email respectively and can only be overridden ;; by setting the SIGNING_KEY ID to the correct ID.) ;SIGNING_NAME = ;SIGNING_EMAIL = -;; SIGNING_FORMAT can be one of: -;; - openpgp (default): use GPG to sign commits -;; - ssh: use SSH to sign commits -;SIGNING_FORMAT = openpgp ;; ;; Sets the default trust model for repositories. Options are: collaborator, committer, collaboratorcommitter ;DEFAULT_TRUST_MODEL = collaborator @@ -1230,13 +1127,6 @@ LEVEL = Info ;; - commitssigned: require that all the commits in the head branch are signed. ;; - approved: only sign when merging an approved pr to a protected branch ;MERGES = pubkey, twofa, basesigned, commitssigned -;; -;; Determines which additional ssh keys are trusted for all signed commits regardless of the user -;; This is useful for ssh signing key rotation. -;; Exposes the provided SIGNING_NAME and SIGNING_EMAIL as the signer, regardless of the SIGNING_FORMAT value. -;; Multiple keys should be comma separated. -;; E.g."ssh- ". or "ssh- , ssh- ". -;TRUSTED_SSH_KEYS = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1321,14 +1211,10 @@ LEVEL = Info ;SHOW_USER_EMAIL = true ;; ;; Set the default theme for the Gitea install -;DEFAULT_THEME = gitea-auto +;DEFAULT_THEME = auto ;; ;; All available themes. Allow users select personalized themes regardless of the value of `DEFAULT_THEME`. -;; Leave it empty to allow users to select any theme from "{CustomPath}/public/assets/css/theme-*.css" -;THEMES = -;; -;; The icons for file list (basic/material), this is a temporary option which will be replaced by a user setting in the future. -;FILE_ICON_THEME = material +;THEMES = auto,gitea,arc-green ;; ;; All available reactions users can choose on issues/prs and comments. ;; Values can be emoji alias (:smile:) or a unicode emoji. @@ -1352,14 +1238,6 @@ LEVEL = Info ;; Whether to only show relevant repos on the explore page when no keyword is specified and default sorting is used. ;; A repo is considered irrelevant if it's a fork or if it has no metadata (no description, no icon, no topic). ;ONLY_SHOW_RELEVANT_REPOS = false -;; -;; Change the sort type of the explore pages. -;; Default is "recentupdate", but you also have "alphabetically", "reverselastlogin", "newest", "oldest". -;EXPLORE_PAGING_DEFAULT_SORT = recentupdate -;; -;; The tense all timestamps should be rendered in. Possible values are `absolute` time (i.e. 1970-01-01, 11:59) and `mixed`. -;; `mixed` means most timestamps are rendered in relative time (i.e. 2 days ago). -;PREFERRED_TIMESTAMP_TENSE = mixed ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1387,9 +1265,6 @@ LEVEL = Info ;; Number of repos that are displayed on one page ;REPO_PAGING_NUM = 15 -;; Number of orgs that are displayed on profile page -;ORG_PAGING_NUM = 15 - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;[ui.meta] @@ -1433,9 +1308,6 @@ LEVEL = Info ;; ;; Maximum allowed file size in bytes to render CSV files as table. (Set to 0 for no limit). ;MAX_FILE_SIZE = 524288 -;; -;; Maximum allowed rows to render CSV files. (Set to 0 for no limit) -;MAX_ROWS = 2500 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1443,14 +1315,14 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -;; Customize render options for different contexts. Set to "none" to disable the defaults, or use comma separated list: -;; * short-issue-pattern: recognized "#123" issue reference and render it as a link to the issue -;; * new-line-hard-break: render soft line breaks as hard line breaks, which means a single newline character between -;; paragraphs will cause a line break and adding trailing whitespace to paragraphs is not -;; necessary to force a line break. -;RENDER_OPTIONS_COMMENT = short-issue-pattern, new-line-hard-break -;RENDER_OPTIONS_WIKI = short-issue-pattern -;RENDER_OPTIONS_REPO_FILE = +;; Render soft line breaks as hard line breaks, which means a single newline character between +;; paragraphs will cause a line break and adding trailing whitespace to paragraphs is not +;; necessary to force a line break. +;; Render soft line breaks as hard line breaks for comments +;ENABLE_HARD_LINE_BREAK_IN_COMMENTS = true +;; +;; Render soft line breaks as hard line breaks for markdown documents +;ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS = false ;; ;; Comma separated list of custom URL-Schemes that are allowed as links when rendering Markdown ;; for example git,magnet,ftp (more at https://en.wikipedia.org/wiki/List_of_URI_schemes) @@ -1464,11 +1336,6 @@ LEVEL = Info ;; ;; Enables math inline and block detection ;ENABLE_MATH = true -;; -;; Enable delimiters for math code block detection. Set to "none" to disable all, -;; or use comma separated list: inline-dollar, inline-parentheses, block-dollar, block-square-brackets -;; Defaults to "inline-dollar,block-dollar" to follow GitHub's behavior. -;MATH_CODE_BLOCK_DETECTION = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1538,10 +1405,6 @@ LEVEL = Info ;REPO_INDEXER_EXCLUDE = ;; ;MAX_FILE_SIZE = 1048576 -;; -;; Bleve engine has performance problems with fuzzy search, so we limit the fuzziness to 0 by default to disable it. -;; If you'd like to enable it, you can set it to a value between 0 and 2. -;TYPE_BLEVE_MAX_FUZZINESS = 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1559,8 +1422,7 @@ LEVEL = Info ;TYPE = persistable-channel ;; ;; data-dir for storing persistable queues and level queues, individual queues will default to `queues/common` meaning the queue is shared. -;; Relative paths will be made absolute against "APP_DATA_PATH" -;DATADIR = queues/ +;DATADIR = queues/ ; Relative paths will be made absolute against `%(APP_DATA_PATH)s`. ;; ;; Default queue length before a channel queue will block ;LENGTH = 100000 @@ -1568,7 +1430,7 @@ LEVEL = Info ;; Batch size to send for batched queues ;BATCH_LENGTH = 20 ;; -;; Connection string for redis queues this will store the redis (or Redis cluster) connection string. +;; Connection string for redis queues this will store the redis or redis-cluster connection string. ;; When `TYPE` is `persistable-channel`, this provides a directory for the underlying leveldb ;; or additional options of the form `leveldb://path/to/db?option=value&....`, and will override `DATADIR`. ;CONN_STR = "redis://127.0.0.1:6379/0" @@ -1593,22 +1455,6 @@ LEVEL = Info ;; ;; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled ;DEFAULT_EMAIL_NOTIFICATIONS = enabled -;; Disabled features for users could be "deletion", "manage_ssh_keys", "manage_gpg_keys", "manage_mfa", "manage_credentials" more features can be disabled in future -;; - deletion: a user cannot delete their own account -;; - manage_ssh_keys: a user cannot configure ssh keys -;; - manage_gpg_keys: a user cannot configure gpg keys -;; - manage_mfa: a user cannot configure mfa devices -;; - manage_credentials: a user cannot configure emails, passwords, or openid -;USER_DISABLED_FEATURES = -;; Comma separated list of disabled features ONLY if the user has an external login type (eg. LDAP, Oauth, etc.), could be "deletion", "manage_ssh_keys", "manage_gpg_keys", "manage_mfa", "manage_credentials". This setting is independent from `USER_DISABLED_FEATURES` and supplements its behavior. -;; - deletion: a user cannot delete their own account -;; - manage_ssh_keys: a user cannot configure ssh keys -;; - manage_gpg_keys: a user cannot configure gpg keys -;; - manage_mfa: a user cannot configure mfa devices -;; - manage_credentials: a user cannot configure emails, passwords, or openid -;; - change_username: a user cannot change their username -;; - change_full_name: a user cannot change their full name -;;EXTERNAL_USER_DISABLE_FEATURES = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1672,12 +1518,7 @@ LEVEL = Info ;; The source of the username for new oauth2 accounts: ;; userid = use the userid / sub attribute ;; nickname = use the nickname attribute -;; preferred_username = use the preferred_username attribute ;; email = use the username part of the email attribute -;; Note: `nickname`, `preferred_username` and `email` options will normalize input strings using the following criteria: -;; - diacritics are removed -;; - the characters in the set ['´`] are removed -;; - the characters in the set [\s~+] are replaced with "-" ;USERNAME = nickname ;; ;; Update avatar if available from oauth2 provider. @@ -1783,10 +1624,6 @@ LEVEL = Info ;; Sometimes it is helpful to use a different address on the envelope. Set this to use ENVELOPE_FROM as the from on the envelope. Set to `<>` to send an empty address. ;ENVELOPE_FROM = ;; -;; If gitea sends mails on behave of users, it will just use the name also displayed in the WebUI. If you want e.g. `Mister X (by CodeIt) `, -;; set it to `{{ .DisplayName }} (by {{ .AppName }})`. Available Variables: `.DisplayName`, `.AppName` and `.Domain`. -;FROM_DISPLAY_NAME_FORMAT = {{ .DisplayName }} -;; ;; Mailer user name and password, if required by provider. ;USER = ;; @@ -1808,19 +1645,6 @@ LEVEL = Info ;; ;; convert \r\n to \n for Sendmail ;SENDMAIL_CONVERT_CRLF = true -;; -;; convert links of attached images to inline images. Only for images hosted in this gitea instance. -;EMBED_ATTACHMENT_IMAGES = false - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;[mailer.override_header] -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; This is empty by default, use it only if you know what you need it for. -;Reply-To = test@example.com, test2@example.com -;Content-Type = text/html; charset=utf-8 -;In-Reply-To = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1869,14 +1693,18 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; +;; if the cache enabled +;ENABLED = true +;; ;; Either "memory", "redis", "memcache", or "twoqueue". default is "memory" ;ADAPTER = memory ;; ;; For "memory" only, GC interval in seconds, default is 60 ;INTERVAL = 60 ;; -;; For "redis" and "memcache", connection host address -;; redis: `redis://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` (or `redis+cluster://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` for a Redis cluster) +;; For "redis", "redis-cluster" and "memcache", connection host address +;; redis: `redis://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` +;; redis-cluster: `redis+cluster://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` ;; memcache: `127.0.0.1:11211` ;; twoqueue: `{"size":50000,"recent_ratio":0.25,"ghost_ratio":0.5}` or `50000` ;HOST = @@ -1892,6 +1720,8 @@ LEVEL = Info ;[cache.last_commit] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; if the cache enabled +;ENABLED = true ;; ;; Time to keep items in cache if not used, default is 8760 hours. ;; Setting it to -1 disables caching @@ -1906,14 +1736,15 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -;; Either "memory", "file", "redis", "db", "mysql", "couchbase", "memcache" or "postgres" +;; Either "memory", "file", "redis", "redis-cluster", "db", "mysql", "couchbase", "memcache" or "postgres" ;; Default is "memory". "db" will reuse the configuration in [database] ;PROVIDER = memory ;; ;; Provider config options ;; memory: doesn't have any config yet ;; file: session file path, e.g. `data/sessions` -;; redis: `redis://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` (or `redis+cluster://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` for a Redis cluster) +;; redis: `redis://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` +;; redis-cluster: `redis+cluster://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` ;; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table` ;PROVIDER_CONFIG = data/sessions ; Relative paths will be made absolute against _`AppWorkPath`_. ;; @@ -1984,7 +1815,7 @@ LEVEL = Info ;ENABLED = true ;; ;; Comma-separated list of allowed file extensions (`.zip`), mime types (`text/plain`) or wildcard type (`image/*`, `audio/*`, `video/*`). Empty value or `*/*` allows all types. -;ALLOWED_TYPES = .avif,.cpuprofile,.csv,.dmp,.docx,.fodg,.fodp,.fods,.fodt,.gif,.gz,.jpeg,.jpg,.json,.jsonc,.log,.md,.mov,.mp4,.odf,.odg,.odp,.ods,.odt,.patch,.pdf,.png,.pptx,.svg,.tgz,.txt,.webm,.webp,.xls,.xlsx,.zip +;ALLOWED_TYPES = .csv,.docx,.fodg,.fodp,.fods,.fodt,.gif,.gz,.jpeg,.jpg,.log,.md,.mov,.mp4,.odf,.odg,.odp,.ods,.odt,.patch,.pdf,.png,.pptx,.svg,.tgz,.txt,.webm,.xls,.xlsx,.zip ;; ;; Max size of each file. Defaults to 2048MB ;MAX_SIZE = 2048 @@ -1997,7 +1828,7 @@ LEVEL = Info ;STORAGE_TYPE = local ;; ;; Allows the storage driver to redirect to authenticated URLs to serve files directly -;; Currently, only `minio` and `azureblob` is supported. +;; Currently, only `minio` is supported. ;SERVE_DIRECT = false ;; ;; Path for attachments. Defaults to `attachments`. Only available when STORAGE_TYPE is `local` @@ -2007,22 +1838,12 @@ LEVEL = Info ;; Minio endpoint to connect only available when STORAGE_TYPE is `minio` ;MINIO_ENDPOINT = localhost:9000 ;; -;; Minio accessKeyID to connect only available when STORAGE_TYPE is `minio`. -;; If not provided and STORAGE_TYPE is `minio`, will search for credentials in known -;; environment variables (MINIO_ACCESS_KEY_ID, AWS_ACCESS_KEY_ID), credentials files -;; (~/.mc/config.json, ~/.aws/credentials), and EC2 instance metadata. +;; Minio accessKeyID to connect only available when STORAGE_TYPE is `minio` ;MINIO_ACCESS_KEY_ID = ;; ;; Minio secretAccessKey to connect only available when STORAGE_TYPE is `minio` ;MINIO_SECRET_ACCESS_KEY = ;; -;; Preferred IAM Endpoint to override Minio's default IAM Endpoint resolution only available when STORAGE_TYPE is `minio`. -;; If not provided and STORAGE_TYPE is `minio`, will search for and derive endpoint from known environment variables -;; (AWS_CONTAINER_AUTHORIZATION_TOKEN, AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE, AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, -;; AWS_CONTAINER_CREDENTIALS_FULL_URI, AWS_WEB_IDENTITY_TOKEN_FILE, AWS_ROLE_ARN, AWS_ROLE_SESSION_NAME, AWS_REGION), -;; or the DefaultIAMRoleEndpoint if not provided otherwise. -;MINIO_IAM_ENDPOINT = -;; ;; Minio bucket to store the attachments only available when STORAGE_TYPE is `minio` ;MINIO_BUCKET = gitea ;; @@ -2040,24 +1861,6 @@ LEVEL = Info ;; ;; Minio checksum algorithm: default (for MinIO or AWS S3) or md5 (for Cloudflare or Backblaze) ;MINIO_CHECKSUM_ALGORITHM = default -;; -;; Minio bucket lookup method defaults to auto mode; set it to `dns` for virtual host style or `path` for path style, only available when STORAGE_TYPE is `minio` -;MINIO_BUCKET_LOOKUP_TYPE = auto -;; Azure Blob endpoint to connect only available when STORAGE_TYPE is `azureblob`, -;; e.g. https://accountname.blob.core.windows.net or http://127.0.0.1:10000/devstoreaccount1 -;AZURE_BLOB_ENDPOINT = -;; -;; Azure Blob account name to connect only available when STORAGE_TYPE is `azureblob` -;AZURE_BLOB_ACCOUNT_NAME = -;; -;; Azure Blob account key to connect only available when STORAGE_TYPE is `azureblob` -;AZURE_BLOB_ACCOUNT_KEY = -;; -;; Azure Blob container to store the attachments only available when STORAGE_TYPE is `azureblob` -;AZURE_BLOB_CONTAINER = gitea -;; -;; override the azure blob base path if storage type is azureblob -;AZURE_BLOB_BASE_PATH = attachments/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2196,17 +1999,6 @@ LEVEL = Info ;; or only create new users if UPDATE_EXISTING is set to false ;UPDATE_EXISTING = true -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Cleanup expired actions assets -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;[cron.cleanup_actions] -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;ENABLED = true -;RUN_AT_START = true -;SCHEDULE = @midnight - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Clean-up deleted branches @@ -2462,8 +2254,6 @@ LEVEL = Info ;DEFAULT_GIT_TREES_PER_PAGE = 1000 ;; Default max size of a blob returned by the blobs API (default is 10MiB) ;DEFAULT_MAX_BLOB_SIZE = 10485760 -;; Default max combined size of all blobs returned by the files API (default is 100MiB) -;DEFAULT_MAX_RESPONSE_SIZE = 104857600 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2491,8 +2281,6 @@ LEVEL = Info ;SHOW_FOOTER_VERSION = true ;; Show template execution time in the footer ;SHOW_FOOTER_TEMPLATE_LOAD_TIME = true -;; Show the "powered by" text in the footer -;SHOW_FOOTER_POWERED_BY = true ;; Generate sitemap. Defaults to `true`. ;ENABLE_SITEMAP = true ;; Enable/Disable RSS/Atom feed @@ -2504,7 +2292,7 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Set the maximum number of characters in a mermaid source. (Set to -1 to disable limits) -;MERMAID_MAX_SOURCE_CHARACTERS = 50000 +;MERMAID_MAX_SOURCE_CHARACTERS = 5000 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2552,6 +2340,22 @@ LEVEL = Info ;; Enable issue by repository metrics; default is false ;ENABLED_ISSUE_BY_REPOSITORY = false +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;[task] +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Task queue type, could be `channel` or `redis`. +;QUEUE_TYPE = channel +;; +;; Task queue length, available only when `QUEUE_TYPE` is `channel`. +;QUEUE_LENGTH = 1000 +;; +;; Task queue connection string, available only when `QUEUE_TYPE` is `redis`. +;; If there is a password of redis, use `redis://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` or `redis+cluster://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` for `redis-clsuter`. +;QUEUE_CONN_STR = "redis://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s" + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;[migrations] @@ -2619,11 +2423,9 @@ LEVEL = Info ;STORAGE_TYPE = local ;; override the minio base path if storage type is minio ;MINIO_BASE_PATH = packages/ -;; override the azure blob base path if storage type is azureblob -;AZURE_BLOB_BASE_PATH = packages/ -;; Allows the storage driver to redirect to authenticated URLs to serve files directly -;; Currently, only `minio` and `azureblob` is supported. -;SERVE_DIRECT = false +;; +;; Path for chunked uploads. Defaults to APP_DATA_PATH + `tmp/package-upload` +;CHUNKED_UPLOAD_PATH = tmp/package-upload ;; ;; Maximum count of package versions a single owner can have (`-1` means no limits) ;LIMIT_TOTAL_OWNER_COUNT = -1 @@ -2671,8 +2473,7 @@ LEVEL = Info ;LIMIT_SIZE_SWIFT = -1 ;; Maximum size of a Vagrant upload (`-1` means no limits, format `1000`, `1 MB`, `1 GiB`) ;LIMIT_SIZE_VAGRANT = -1 -;; Enable RPM re-signing by default. (It will overwrite the old signature ,using v4 format, not compatible with CentOS 6 or older) -;DEFAULT_RPM_SIGN_ENABLED = false + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; default storage for attachments, lfs and avatars @@ -2695,8 +2496,6 @@ LEVEL = Info ;; ;; override the minio base path if storage type is minio ;MINIO_BASE_PATH = repo-archive/ -;; override the azure blob base path if storage type is azureblob -;AZURE_BLOB_BASE_PATH = repo-archive/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2718,25 +2517,8 @@ LEVEL = Info ;; Where your lfs files reside, default is data/lfs. ;PATH = data/lfs ;; -;; Allows the storage driver to redirect to authenticated URLs to serve files directly -;; Currently, only `minio` and `azureblob` is supported. -;SERVE_DIRECT = false -;; ;; override the minio base path if storage type is minio ;MINIO_BASE_PATH = lfs/ -;; -;; override the azure blob base path if storage type is azureblob -;AZURE_BLOB_BASE_PATH = lfs/ - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; settings for Gitea's LFS client (eg: mirroring an upstream lfs endpoint) -;; -;[lfs_client] -;; Limit the number of pointers in each batch request to this number -;BATCH_SIZE = 20 -;; Limit the number of concurrent upload/download operations within a batch -;BATCH_OPERATION_CONCURRENCY = 8 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2751,28 +2533,18 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; customize storage -;[storage.minio] +;[storage.my_minio] ;STORAGE_TYPE = minio ;; ;; Minio endpoint to connect only available when STORAGE_TYPE is `minio` ;MINIO_ENDPOINT = localhost:9000 ;; -;; Minio accessKeyID to connect only available when STORAGE_TYPE is `minio`. -;; If not provided and STORAGE_TYPE is `minio`, will search for credentials in known -;; environment variables (MINIO_ACCESS_KEY_ID, AWS_ACCESS_KEY_ID), credentials files -;; (~/.mc/config.json, ~/.aws/credentials), and EC2 instance metadata. +;; Minio accessKeyID to connect only available when STORAGE_TYPE is `minio` ;MINIO_ACCESS_KEY_ID = ;; ;; Minio secretAccessKey to connect only available when STORAGE_TYPE is `minio` ;MINIO_SECRET_ACCESS_KEY = ;; -;; Preferred IAM Endpoint to override Minio's default IAM Endpoint resolution only available when STORAGE_TYPE is `minio`. -;; If not provided and STORAGE_TYPE is `minio`, will search for and derive endpoint from known environment variables -;; (AWS_CONTAINER_AUTHORIZATION_TOKEN, AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE, AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, -;; AWS_CONTAINER_CREDENTIALS_FULL_URI, AWS_WEB_IDENTITY_TOKEN_FILE, AWS_ROLE_ARN, AWS_ROLE_SESSION_NAME, AWS_REGION), -;; or the DefaultIAMRoleEndpoint if not provided otherwise. -;MINIO_IAM_ENDPOINT = -;; ;; Minio bucket to store the attachments only available when STORAGE_TYPE is `minio` ;MINIO_BUCKET = gitea ;; @@ -2784,25 +2556,6 @@ LEVEL = Info ;; ;; Minio skip SSL verification available when STORAGE_TYPE is `minio` ;MINIO_INSECURE_SKIP_VERIFY = false -;; -;; Minio bucket lookup method defaults to auto mode; set it to `dns` for virtual host style or `path` for path style, only available when STORAGE_TYPE is `minio` -;MINIO_BUCKET_LOOKUP_TYPE = auto - -;[storage.azureblob] -;STORAGE_TYPE = azureblob -;; -;; Azure Blob endpoint to connect only available when STORAGE_TYPE is `azureblob`, -;; e.g. https://accountname.blob.core.windows.net or http://127.0.0.1:10000/devstoreaccount1 -;AZURE_BLOB_ENDPOINT = -;; -;; Azure Blob account name to connect only available when STORAGE_TYPE is `azureblob` -;AZURE_BLOB_ACCOUNT_NAME = -;; -;; Azure Blob account key to connect only available when STORAGE_TYPE is `azureblob` -;AZURE_BLOB_ACCOUNT_KEY = -;; -;; Azure Blob container to store the attachments only available when STORAGE_TYPE is `azureblob` -;AZURE_BLOB_CONTAINER = gitea ;[proxy] ;; Enable the proxy, all requests to external via HTTP will be affected @@ -2818,14 +2571,6 @@ LEVEL = Info ;; ;; Default platform to get action plugins, `github` for `https://github.com`, `self` for the current Gitea instance. ;DEFAULT_ACTIONS_URL = github -;; Logs retention time in days. Old logs will be deleted after this period. -;LOG_RETENTION_DAYS = 365 -;; Log compression type, `none` for no compression, `zstd` for zstd compression. -;; Other compression types like `gzip` are NOT supported, since seekable stream is required for log view. -;; It's always recommended to use compression when using local disk as log storage if CPU or memory is not a bottleneck. -;; And for object storage services like S3, which is billed for requests, it would cause extra 2 times of get requests for each log view. -;; But it will save storage space and network bandwidth, so it's still recommended to use compression. -;LOG_COMPRESSION = zstd ;; Default artifact retention time in days. Artifacts could have their own retention periods by setting the `retention-days` option in `actions/upload-artifact` step. ;ARTIFACT_RETENTION_DAYS = 90 ;; Timeout to stop the task which have running status, but haven't been updated for a long time @@ -2834,8 +2579,6 @@ LEVEL = Info ;ENDLESS_TASK_TIMEOUT = 3h ;; Timeout to cancel the jobs which have waiting status, but haven't been picked by a runner for a long time ;ABANDONED_JOB_TIMEOUT = 24h -;; Strings committers can place inside a commit message or PR title to skip executing the corresponding actions workflow -;SKIP_WORKFLOW_STRINGS = [skip ci],[ci skip],[no ci],[skip actions],[actions skip] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2846,9 +2589,3 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; storage type ;STORAGE_TYPE = local - -;[global_lock] -;; Lock service type, could be memory or redis -;SERVICE_TYPE = memory -;; Ignored for the "memory" type. For "redis" use something like `redis://127.0.0.1:6379/0` -;SERVICE_CONN_STR = diff --git a/docker/README.md b/docker/README.md index b014f42367..a6d7c9a843 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,7 +1,7 @@ # Gitea - Docker -Dockerfile is found in the root of the repository. +Dockerfile is found in root of repository. -Docker image can be found on [docker hub](https://hub.docker.com/r/gitea/gitea). +Docker image can be found on [docker hub](https://hub.docker.com/r/gitea/gitea) -Documentation on using docker image can be found on [Gitea Docs site](https://docs.gitea.com/installation/install-with-docker-rootless). +Documentation on using docker image can be found on [Gitea Docs site](https://docs.gitea.com/installation/install-with-docker-rootless) diff --git a/docker/manifest.rootless.tmpl b/docker/manifest.rootless.tmpl index 3fa94ab0ec..1ebf5b73c8 100644 --- a/docker/manifest.rootless.tmpl +++ b/docker/manifest.rootless.tmpl @@ -22,8 +22,3 @@ manifests: architecture: arm64 os: linux variant: v8 - - - image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}{{#if (hasPrefix "refs/heads/release/v" build.ref)}}{{trimPrefix "refs/heads/release/v" build.ref}}-{{/if}}nightly{{/if}}-linux-riscv64-rootless - platform: - architecture: riscv64 - os: linux diff --git a/docker/manifest.tmpl b/docker/manifest.tmpl index c68ca46dd8..08ccf61b57 100644 --- a/docker/manifest.tmpl +++ b/docker/manifest.tmpl @@ -22,8 +22,3 @@ manifests: architecture: arm64 os: linux variant: v8 - - - image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}{{#if (hasPrefix "refs/heads/release/v" build.ref)}}{{trimPrefix "refs/heads/release/v" build.ref}}-{{/if}}nightly{{/if}}-linux-riscv64 - platform: - architecture: riscv64 - os: linux diff --git a/docker/root/etc/s6/openssh/setup b/docker/root/etc/s6/openssh/setup index 48e7d4b211..dbb3bafd35 100755 --- a/docker/root/etc/s6/openssh/setup +++ b/docker/root/etc/s6/openssh/setup @@ -31,21 +31,6 @@ if [ -e /data/ssh/ssh_host_ecdsa_cert ]; then SSH_ECDSA_CERT=${SSH_ECDSA_CERT:-"/data/ssh/ssh_host_ecdsa_cert"} fi -# In case someone wants to sign the `{keyname}.pub` key by `ssh-keygen -s ca -I identity ...` to -# make use of the ssh-key certificate authority feature (see ssh-keygen CERTIFICATES section), -# the generated key file name is `{keyname}-cert.pub` -if [ -e /data/ssh/ssh_host_ed25519_key-cert.pub ]; then - SSH_ED25519_CERT=${SSH_ED25519_CERT:-"/data/ssh/ssh_host_ed25519_key-cert.pub"} -fi - -if [ -e /data/ssh/ssh_host_rsa_key-cert.pub ]; then - SSH_RSA_CERT=${SSH_RSA_CERT:-"/data/ssh/ssh_host_rsa_key-cert.pub"} -fi - -if [ -e /data/ssh/ssh_host_ecdsa_key-cert.pub ]; then - SSH_ECDSA_CERT=${SSH_ECDSA_CERT:-"/data/ssh/ssh_host_ecdsa_key-cert.pub"} -fi - if [ -d /etc/ssh ]; then SSH_PORT=${SSH_PORT:-"22"} \ SSH_LISTEN_PORT=${SSH_LISTEN_PORT:-"${SSH_PORT}"} \ diff --git a/docker/root/usr/bin/entrypoint b/docker/root/usr/bin/entrypoint index 08587fc4f4..d9dbb3ebe0 100755 --- a/docker/root/usr/bin/entrypoint +++ b/docker/root/usr/bin/entrypoint @@ -37,5 +37,5 @@ done if [ $# -gt 0 ]; then exec "$@" else - exec /usr/bin/s6-svscan /etc/s6 + exec /bin/s6-svscan /etc/s6 fi diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000000..271adbb1da --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,7 @@ +public/ +templates/swagger/v1_json.tmpl +themes/ +resources/ + +# Temporary lock file while building +/.hugo_build.lock diff --git a/docs/LICENSE b/docs/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/docs/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..d9aa3b80b8 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,22 @@ +# Gitea: Docs + +[![Join the chat at https://img.shields.io/discord/322538954119184384.svg](https://img.shields.io/discord/322538954119184384.svg)](https://discord.gg/Gitea) +[![](https://images.microbadger.com/badges/image/gitea/docs.svg)](http://microbadger.com/images/gitea/docs "Get your own image badge on microbadger.com") + +These docs are ingested by our [docs repo](https://gitea.com/gitea/gitea-docusaurus). + +## Authors + +* [Maintainers](https://github.com/orgs/go-gitea/people) +* [Contributors](https://github.com/go-gitea/docs/graphs/contributors) + +## License + +This project is under the Apache-2.0 License. See the [LICENSE](LICENSE) file +for the full license text. + +## Copyright + +``` +Copyright (c) 2016 The Gitea Authors +``` diff --git a/docs/README_ZH.md b/docs/README_ZH.md new file mode 100644 index 0000000000..7d9003a8ab --- /dev/null +++ b/docs/README_ZH.md @@ -0,0 +1,22 @@ +# Gitea: 文档 + +[![Build Status](http://drone.gitea.io/api/badges/go-gitea/docs/status.svg)](http://drone.gitea.io/go-gitea/docs) +[![Join the chat at https://img.shields.io/discord/322538954119184384.svg](https://img.shields.io/discord/322538954119184384.svg)](https://discord.gg/Gitea) +[![](https://images.microbadger.com/badges/image/gitea/docs.svg)](http://microbadger.com/images/gitea/docs "Get your own image badge on microbadger.com") + +https://gitea.com/gitea/gitea-docusaurus + +## 关于我们 + +* [维护者信息](https://github.com/orgs/go-gitea/people) +* [代码贡献者信息](https://github.com/go-gitea/docs/graphs/contributors) + +## 许可证 + +此项目采用 Apache-2.0 许可协议,请参见 [协议文件](LICENSE) 获取更多信息。 + +## 版权声明 + +``` +Copyright (c) 2016 The Gitea Authors +``` diff --git a/docs/content/actions.en-us.md b/docs/content/actions.en-us.md new file mode 100644 index 0000000000..d8e33d3784 --- /dev/null +++ b/docs/content/actions.en-us.md @@ -0,0 +1,13 @@ +--- +date: "2023-04-27T14:00:00+08:00" +title: "Actions" +slug: "actions" +sidebar_position: 36 +toc: false +draft: false +menu: + sidebar: + name: "Usage - Actions" + sidebar_position: 31 + identifier: "actions" +--- diff --git a/docs/content/administration.en-us.md b/docs/content/administration.en-us.md new file mode 100644 index 0000000000..416b9e631e --- /dev/null +++ b/docs/content/administration.en-us.md @@ -0,0 +1,14 @@ +--- +date: "2016-12-01T16:00:00+02:00" +title: "Administration" +slug: "administration" +sidebar_position: 30 +toc: false +draft: false +menu: + sidebar: + name: "Administration" + sidebar_position: 20 + collapse: true + identifier: "administration" +--- diff --git a/docs/content/administration.zh-cn.md b/docs/content/administration.zh-cn.md new file mode 100644 index 0000000000..262e5f068f --- /dev/null +++ b/docs/content/administration.zh-cn.md @@ -0,0 +1,13 @@ +--- +date: "2016-12-01T16:00:00+02:00" +title: "运维" +slug: "administration" +sidebar_position: 30 +toc: false +draft: false +menu: + sidebar: + name: "运维" + sidebar_position: 20 + identifier: "administration" +--- diff --git a/tests/gitea-repositories-meta/org41/repo61.git/objects/.keep b/docs/content/administration/_index.en-us.md similarity index 100% rename from tests/gitea-repositories-meta/org41/repo61.git/objects/.keep rename to docs/content/administration/_index.en-us.md diff --git a/tests/gitea-repositories-meta/org41/repo61.git/refs/.keep b/docs/content/administration/_index.zh-cn.md similarity index 100% rename from tests/gitea-repositories-meta/org41/repo61.git/refs/.keep rename to docs/content/administration/_index.zh-cn.md diff --git a/docs/content/administration/adding-legal-pages.en-us.md b/docs/content/administration/adding-legal-pages.en-us.md new file mode 100644 index 0000000000..1ff0c0132d --- /dev/null +++ b/docs/content/administration/adding-legal-pages.en-us.md @@ -0,0 +1,40 @@ +--- +date: "2019-12-28" +title: "Adding Legal Pages" +slug: adding-legal-pages +sidebar_position: 110 +toc: false +draft: false +aliases: + - /en-us/adding-legal-pages +menu: + sidebar: + parent: "administration" + name: "Adding Legal Pages" + identifier: "adding-legal-pages" + sidebar_position: 110 +--- + +Some jurisdictions (such as EU), requires certain legal pages (e.g. Privacy Policy) to be added to website. Follow these steps to add them to your Gitea instance. + +## Getting Pages + +Gitea source code ships with sample pages, available in `contrib/legal` directory. Copy them to `custom/public/assets/`. For example, to add Privacy Policy: + +``` +wget -O /path/to/custom/public/assets/privacy.html https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/legal/privacy.html.sample +``` + +Now you need to edit the page to meet your requirements. In particular you must change the email addresses, web addresses and references to "Your Gitea Instance" to match your situation. + +You absolutely must not place a general ToS or privacy statement that implies that the Gitea project is responsible for your server. + +## Make it Visible + +Create or append to `/path/to/custom/templates/custom/extra_links_footer.tmpl`: + +```go +Privacy Policy +``` + +Restart Gitea to see the changes. diff --git a/docs/content/administration/adding-legal-pages.zh-cn.md b/docs/content/administration/adding-legal-pages.zh-cn.md new file mode 100644 index 0000000000..3e18c6e6b0 --- /dev/null +++ b/docs/content/administration/adding-legal-pages.zh-cn.md @@ -0,0 +1,40 @@ +--- +date: "2023-05-23T09:00:00+08:00" +title: "添加法律页面" +slug: adding-legal-pages +sidebar_position: 110 +toc: false +draft: false +aliases: + - /zh-cn/adding-legal-pages +menu: + sidebar: + parent: "administration" + name: "添加法律页面" + identifier: "adding-legal-pages" + sidebar_position: 110 +--- + +一些法域(例如欧盟)要求在网站上添加特定的法律页面(例如隐私政策)。按照以下步骤将它们添加到你的 Gitea 实例中。 + +## 获取页面 + +Gitea 源代码附带了示例页面,位于 `contrib/legal` 目录中。将它们复制到 `custom/public/assets/` 目录下。例如,如果要添加隐私政策: + +``` +wget -O /path/to/custom/public/assets/privacy.html https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/legal/privacy.html.sample +``` + +现在,你需要编辑该页面以满足你的需求。特别是,你必须更改电子邮件地址、网址以及与 "Your Gitea Instance" 相关的引用,以匹配你的情况。 + +请务必不要放置会暗示 Gitea 项目对你的服务器负责的一般服务条款或隐私声明。 + +## 使其可见 + +创建或追加到 `/path/to/custom/templates/custom/extra_links_footer.tmpl` 文件中: + +```go +隐私政策 +``` + +重启 Gitea 以查看更改。 diff --git a/docs/content/administration/backup-and-restore.en-us.md b/docs/content/administration/backup-and-restore.en-us.md new file mode 100644 index 0000000000..d46efecf99 --- /dev/null +++ b/docs/content/administration/backup-and-restore.en-us.md @@ -0,0 +1,158 @@ +--- +date: "2017-01-01T16:00:00+02:00" +title: "Backup and Restore" +slug: "backup-and-restore" +sidebar_position: 11 +toc: false +draft: false +aliases: + - /en-us/backup-and-restore +menu: + sidebar: + parent: "administration" + name: "Backup and Restore" + sidebar_position: 11 + identifier: "backup-and-restore" +--- + +# Backup and Restore + +Gitea currently has a `dump` command that will save the installation to a ZIP file. This +file can be unpacked and used to restore an instance. + +## Backup Consistency + +To ensure the consistency of the Gitea instance, it must be shutdown during backup. + +Gitea consists of a database, files and git repositories, all of which change when it is used. For instance, when a migration is in progress, a transaction is created in the database while the git repository is being copied over. If the backup happens in the middle of the migration, the git repository may be incomplete although the database claims otherwise because it was dumped afterwards. The only way to avoid such race conditions is by stopping the Gitea instance during the backups. + +## Backup Command (`dump`) + +Switch to the user running Gitea: `su git`. Run `./gitea dump -c /path/to/app.ini` in the Gitea installation +directory. There should be some output similar to the following: + +```none +2016/12/27 22:32:09 Creating tmp work dir: /tmp/gitea-dump-417443001 +2016/12/27 22:32:09 Dumping local repositories.../home/git/gitea-repositories +2016/12/27 22:32:22 Dumping database... +2016/12/27 22:32:22 Packing dump files... +2016/12/27 22:32:34 Removing tmp work dir: /tmp/gitea-dump-417443001 +2016/12/27 22:32:34 Finish dumping in file gitea-dump-1482906742.zip +``` + +Inside the `gitea-dump-1482906742.zip` file, will be the following: + +- `app.ini` - Optional copy of configuration file if originally stored outside the default `custom/` directory +- `custom/` - All config or customization files in `custom/`. +- `data/` - Data directory (APP_DATA_PATH), except sessions if you are using file session. This directory includes `attachments`, `avatars`, `lfs`, `indexers`, SQLite file if you are using SQLite. +- `repos/` - Complete copy of the repository directory. +- `gitea-db.sql` - SQL dump of database +- `log/` - Various logs. They are not needed for a recovery or migration. + +Intermediate backup files are created in a temporary directory specified either with the +`--tempdir` command-line parameter or the `TMPDIR` environment variable. + +## Backup the database + +The SQL dump created by `gitea dump` uses XORM and Gitea admins may prefer to use the native the MySQL and PostgreSQL dump tools instead. There are still open issues when using XORM for dumping the database that may cause problems when attempting to restore it. + +```sh +# mysql +mysqldump -u$USER -p$PASS --database $DATABASE > gitea-db.sql +# postgres +pg_dump -U $USER $DATABASE > gitea-db.sql +``` + +### Using Docker (`dump`) + +There are a few caveats for using the `dump` command with Docker. + +The command has to be executed with the `RUN_USER = ` specified in `gitea/conf/app.ini`; and, for the zipping of the backup folder to occur without permission error the command `docker exec` must be executed inside of the `--tempdir`. + +Example: + +```none +docker exec -u -it -w <--tempdir> $(docker ps -qf 'name=^$') bash -c '/usr/local/bin/gitea dump -c ' +``` + +\*Note: `--tempdir` refers to the temporary directory of the docker environment used by Gitea; if you have not specified a custom `--tempdir`, then Gitea uses `/tmp` or the `TMPDIR` environment variable of the docker container. For `--tempdir` adjust your `docker exec` command options accordingly. + +The result should be a file, stored in the `--tempdir` specified, along the lines of: `gitea-dump-1482906742.zip` + +## Restore Command (`restore`) + +There is currently no support for a recovery command. It is a manual process that mostly +involves moving files to their correct locations and restoring a database dump. + +Example: + +```sh +unzip gitea-dump-1610949662.zip +cd gitea-dump-1610949662 +mv app.ini /etc/gitea/conf/app.ini +mv data/* /var/lib/gitea/data/ +mv log/* /var/lib/gitea/log/ +mv repos/* /var/lib/gitea/gitea-repositories/ +chown -R gitea:gitea /etc/gitea/conf/app.ini /var/lib/gitea + +# mysql +mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE Docker), or if Gitea is installed to a different directory than the previous installation. + +With Gitea running, and from the directory Gitea's binary is located, execute: `./gitea admin regenerate hooks` + +This ensures that application and configuration file paths in repository Git Hooks are consistent and applicable to the current installation. If these paths are not updated, repository `push` actions will fail. + +### Using Docker (`restore`) + +There is also no support for a recovery command in a Docker-based gitea instance. The restore process contains the same steps as described in the previous section but with different paths. + +Example: + +```sh +# open bash session in container +docker exec --user git -it 2a83b293548e bash +# unzip your backup file within the container +unzip gitea-dump-1610949662.zip +cd gitea-dump-1610949662 +# restore the gitea data +mv data/* /data/gitea +# restore the repositories itself +mv repos/* /data/git/gitea-repositories/ +# adjust file permissions +chown -R git:git /data +# Regenerate Git Hooks +/usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks +``` + +The default user in the gitea container is `git` (1000:1000). Please replace `2a83b293548e` with your gitea container id or name. + +### Using Docker-rootless (`restore`) + +The restore workflow in Docker-rootless containers differs only in the directories to be used: + +```sh +# open bash session in container +docker exec --user git -it 2a83b293548e bash +# unzip your backup file within the container +unzip gitea-dump-1610949662.zip +cd gitea-dump-1610949662 +# restore the app.ini +mv data/conf/app.ini /etc/gitea/app.ini +# restore the gitea data +mv data/* /var/lib/gitea +# restore the repositories itself +mv repos/* /var/lib/gitea/git/gitea-repositories +# adjust file permissions +chown -R git:git /etc/gitea/app.ini /var/lib/gitea +# Regenerate Git Hooks +/usr/local/bin/gitea -c '/etc/gitea/app.ini' admin regenerate hooks +``` diff --git a/docs/content/administration/backup-and-restore.zh-cn.md b/docs/content/administration/backup-and-restore.zh-cn.md new file mode 100644 index 0000000000..98d378d5dc --- /dev/null +++ b/docs/content/administration/backup-and-restore.zh-cn.md @@ -0,0 +1,68 @@ +--- +date: "2018-06-06T09:33:00+08:00" +title: "备份与恢复" +slug: "backup-and-restore" +sidebar_position: 11 +toc: false +draft: false +aliases: + - /zh-cn/backup-and-restore +menu: + sidebar: + parent: "administration" + name: "备份与恢复" + sidebar_position: 11 + identifier: "backup-and-restore" +--- + +# 备份与恢复 + +Gitea 已经实现了 `dump` 命令可以用来备份所有需要的文件到一个zip压缩文件。该压缩文件可以被用来进行数据恢复。 + +## 备份命令 (`dump`) + +先转到git用户的权限: `su git`. 再Gitea目录运行 `./gitea dump`。一般会显示类似如下的输出: + +``` +2016/12/27 22:32:09 Creating tmp work dir: /tmp/gitea-dump-417443001 +2016/12/27 22:32:09 Dumping local repositories.../home/git/gitea-repositories +2016/12/27 22:32:22 Dumping database... +2016/12/27 22:32:22 Packing dump files... +2016/12/27 22:32:34 Removing tmp work dir: /tmp/gitea-dump-417443001 +2016/12/27 22:32:34 Finish dumping in file gitea-dump-1482906742.zip +``` + +最后生成的 `gitea-dump-1482906742.zip` 文件将会包含如下内容: + +* `custom` - 所有保存在 `custom/` 目录下的配置和自定义的文件。 +* `data` - 数据目录下的所有内容不包含使用文件session的文件。该目录包含 `attachments`, `avatars`, `lfs`, `indexers`, 如果使用sqlite 还会包含 sqlite 数据库文件。 +* `gitea-db.sql` - 数据库dump出来的 SQL。 +* `gitea-repo.zip` - Git仓库压缩文件。 +* `log/` - Logs文件,如果用作迁移不是必须的。 + +中间备份文件将会在临时目录进行创建,如果您要重新指定临时目录,可以用 `--tempdir` 参数,或者用 `TMPDIR` 环境变量。 + +## Restore Command (`restore`) + +当前还没有恢复命令,恢复需要人工进行。主要是把文件和数据库进行恢复。 + +例如: + +```sh +unzip gitea-dump-1610949662.zip +cd gitea-dump-1610949662 +mv data/conf/app.ini /etc/gitea/conf/app.ini +mv data/* /var/lib/gitea/data/ +mv log/* /var/lib/gitea/log/ +mv repos/* /var/lib/gitea/repositories/ +chown -R gitea:gitea /etc/gitea/conf/app.ini /var/lib/gitea + +# mysql +mysql --default-character-set=utf8mb4 -u$USER -p$PASS $DATABASE ` or `all` where `` is one of the available visual groups you can see when opening the API page showing the available routes (for example `repo`). + - Examples: + - `gitea admin user generate-access-token --username myname --token-name mytoken` + - `gitea admin user generate-access-token --help` + - `regenerate` + - Options: + - `hooks`: Regenerate Git Hooks for all repositories + - `keys`: Regenerate authorized_keys file + - Examples: + - `gitea admin regenerate hooks` + - `gitea admin regenerate keys` + - `auth`: + - `list`: + - Description: lists all external authentication sources that exist + - Examples: + - `gitea admin auth list` + - `delete`: + - Options: + - `--id`: ID of source to be deleted. Required. + - Examples: + - `gitea admin auth delete --id 1` + - `add-oauth`: + - Options: + - `--name`: Application Name. + - `--provider`: OAuth2 Provider. + - `--key`: Client ID (Key). + - `--secret`: Client Secret. + - `--auto-discover-url`: OpenID Connect Auto Discovery URL (only required when using OpenID Connect as provider). + - `--use-custom-urls`: Use custom URLs for GitLab/GitHub OAuth endpoints. + - `--custom-tenant-id`: Use custom Tenant ID for OAuth endpoints. + - `--custom-auth-url`: Use a custom Authorization URL (option for GitLab/GitHub). + - `--custom-token-url`: Use a custom Token URL (option for GitLab/GitHub). + - `--custom-profile-url`: Use a custom Profile URL (option for GitLab/GitHub). + - `--custom-email-url`: Use a custom Email URL (option for GitHub). + - `--icon-url`: Custom icon URL for OAuth2 login source. + - `--skip-local-2fa`: Allow source to override local 2FA. (Optional) + - `--scopes`: Additional scopes to request for this OAuth2 source. (Optional) + - `--required-claim-name`: Claim name that has to be set to allow users to login with this source. (Optional) + - `--required-claim-value`: Claim value that has to be set to allow users to login with this source. (Optional) + - `--group-claim-name`: Claim name providing group names for this source. (Optional) + - `--admin-group`: Group Claim value for administrator users. (Optional) + - `--restricted-group`: Group Claim value for restricted users. (Optional) + - `--group-team-map`: JSON mapping between groups and org teams. (Optional) + - `--group-team-map-removal`: Activate automatic team membership removal depending on groups. (Optional) + - Examples: + - `gitea admin auth add-oauth --name external-github --provider github --key OBTAIN_FROM_SOURCE --secret OBTAIN_FROM_SOURCE` + - `update-oauth`: + - Options: + - `--id`: ID of source to be updated. Required. + - `--name`: Application Name. + - `--provider`: OAuth2 Provider. + - `--key`: Client ID (Key). + - `--secret`: Client Secret. + - `--auto-discover-url`: OpenID Connect Auto Discovery URL (only required when using OpenID Connect as provider). + - `--use-custom-urls`: Use custom URLs for GitLab/GitHub OAuth endpoints. + - `--custom-tenant-id`: Use custom Tenant ID for OAuth endpoints. + - `--custom-auth-url`: Use a custom Authorization URL (option for GitLab/GitHub). + - `--custom-token-url`: Use a custom Token URL (option for GitLab/GitHub). + - `--custom-profile-url`: Use a custom Profile URL (option for GitLab/GitHub). + - `--custom-email-url`: Use a custom Email URL (option for GitHub). + - `--icon-url`: Custom icon URL for OAuth2 login source. + - `--skip-local-2fa`: Allow source to override local 2FA. (Optional) + - `--scopes`: Additional scopes to request for this OAuth2 source. + - `--required-claim-name`: Claim name that has to be set to allow users to login with this source. (Optional) + - `--required-claim-value`: Claim value that has to be set to allow users to login with this source. (Optional) + - `--group-claim-name`: Claim name providing group names for this source. (Optional) + - `--admin-group`: Group Claim value for administrator users. (Optional) + - `--restricted-group`: Group Claim value for restricted users. (Optional) + - Examples: + - `gitea admin auth update-oauth --id 1 --name external-github-updated` + - `add-smtp`: + - Options: + - `--name`: Application Name. Required. + - `--auth-type`: SMTP Authentication Type (PLAIN/LOGIN/CRAM-MD5). Default to PLAIN. + - `--host`: SMTP host. Required. + - `--port`: SMTP port. Required. + - `--force-smtps`: SMTPS is always used on port 465. Set this to force SMTPS on other ports. + - `--skip-verify`: Skip TLS verify. + - `--helo-hostname`: Hostname sent with HELO. Leave blank to send current hostname. + - `--disable-helo`: Disable SMTP helo. + - `--allowed-domains`: Leave empty to allow all domains. Separate multiple domains with a comma (','). + - `--skip-local-2fa`: Skip 2FA to log on. + - `--active`: This Authentication Source is Activated. + Remarks: + `--force-smtps`, `--skip-verify`, `--disable-helo`, `--skip-loca-2fs` and `--active` options can be used in form: + - `--option`, `--option=true` to enable + - `--option=false` to disable + If those options are not specified value would not be changed in `update-smtp` or would use default `false` value in `add-smtp` + - Examples: + - `gitea admin auth add-smtp --name ldap --host smtp.mydomain.org --port 587 --skip-verify --active` + - `update-smtp`: + - Options: + - `--id`: ID of source to be updated. Required. + - other options are shared with `add-smtp` + - Examples: + - `gitea admin auth update-smtp --id 1 --host smtp.mydomain.org --port 587 --skip-verify=false` + - `gitea admin auth update-smtp --id 1 --active=false` + - `add-ldap`: Add new LDAP (via Bind DN) authentication source + - Options: + - `--name value`: Authentication name. Required. + - `--not-active`: Deactivate the authentication source. + - `--security-protocol value`: Security protocol name. Required. + - `--skip-tls-verify`: Disable TLS verification. + - `--host value`: The address where the LDAP server can be reached. Required. + - `--port value`: The port to use when connecting to the LDAP server. Required. + - `--user-search-base value`: The LDAP base at which user accounts will be searched for. Required. + - `--user-filter value`: An LDAP filter declaring how to find the user record that is attempting to authenticate. Required. + - `--admin-filter value`: An LDAP filter specifying if a user should be given administrator privileges. + - `--restricted-filter value`: An LDAP filter specifying if a user should be given restricted status. + - `--username-attribute value`: The attribute of the user’s LDAP record containing the user name. + - `--firstname-attribute value`: The attribute of the user’s LDAP record containing the user’s first name. + - `--surname-attribute value`: The attribute of the user’s LDAP record containing the user’s surname. + - `--email-attribute value`: The attribute of the user’s LDAP record containing the user’s email address. Required. + - `--public-ssh-key-attribute value`: The attribute of the user’s LDAP record containing the user’s public ssh key. + - `--avatar-attribute value`: The attribute of the user’s LDAP record containing the user’s avatar. + - `--bind-dn value`: The DN to bind to the LDAP server with when searching for the user. + - `--bind-password value`: The password for the Bind DN, if any. + - `--attributes-in-bind`: Fetch attributes in bind DN context. + - `--synchronize-users`: Enable user synchronization. + - `--page-size value`: Search page size. + - Examples: + - `gitea admin auth add-ldap --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-search-base "ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))" --email-attribute mail` + - `update-ldap`: Update existing LDAP (via Bind DN) authentication source + - Options: + - `--id value`: ID of authentication source. Required. + - `--name value`: Authentication name. + - `--not-active`: Deactivate the authentication source. + - `--security-protocol value`: Security protocol name. + - `--skip-tls-verify`: Disable TLS verification. + - `--host value`: The address where the LDAP server can be reached. + - `--port value`: The port to use when connecting to the LDAP server. + - `--user-search-base value`: The LDAP base at which user accounts will be searched for. + - `--user-filter value`: An LDAP filter declaring how to find the user record that is attempting to authenticate. + - `--admin-filter value`: An LDAP filter specifying if a user should be given administrator privileges. + - `--restricted-filter value`: An LDAP filter specifying if a user should be given restricted status. + - `--username-attribute value`: The attribute of the user’s LDAP record containing the user name. + - `--firstname-attribute value`: The attribute of the user’s LDAP record containing the user’s first name. + - `--surname-attribute value`: The attribute of the user’s LDAP record containing the user’s surname. + - `--email-attribute value`: The attribute of the user’s LDAP record containing the user’s email address. + - `--public-ssh-key-attribute value`: The attribute of the user’s LDAP record containing the user’s public ssh key. + - `--avatar-attribute value`: The attribute of the user’s LDAP record containing the user’s avatar. + - `--bind-dn value`: The DN to bind to the LDAP server with when searching for the user. + - `--bind-password value`: The password for the Bind DN, if any. + - `--attributes-in-bind`: Fetch attributes in bind DN context. + - `--synchronize-users`: Enable user synchronization. + - `--page-size value`: Search page size. + - Examples: + - `gitea admin auth update-ldap --id 1 --name "my ldap auth source"` + - `gitea admin auth update-ldap --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn` + - `add-ldap-simple`: Add new LDAP (simple auth) authentication source + - Options: + - `--name value`: Authentication name. Required. + - `--not-active`: Deactivate the authentication source. + - `--security-protocol value`: Security protocol name. Required. + - `--skip-tls-verify`: Disable TLS verification. + - `--host value`: The address where the LDAP server can be reached. Required. + - `--port value`: The port to use when connecting to the LDAP server. Required. + - `--user-search-base value`: The LDAP base at which user accounts will be searched for. + - `--user-filter value`: An LDAP filter declaring how to find the user record that is attempting to authenticate. Required. + - `--admin-filter value`: An LDAP filter specifying if a user should be given administrator privileges. + - `--restricted-filter value`: An LDAP filter specifying if a user should be given restricted status. + - `--username-attribute value`: The attribute of the user’s LDAP record containing the user name. + - `--firstname-attribute value`: The attribute of the user’s LDAP record containing the user’s first name. + - `--surname-attribute value`: The attribute of the user’s LDAP record containing the user’s surname. + - `--email-attribute value`: The attribute of the user’s LDAP record containing the user’s email address. Required. + - `--public-ssh-key-attribute value`: The attribute of the user’s LDAP record containing the user’s public ssh key. + - `--avatar-attribute value`: The attribute of the user’s LDAP record containing the user’s avatar. + - `--user-dn value`: The user’s DN. Required. + - Examples: + - `gitea admin auth add-ldap-simple --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-dn "cn=%s,ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(cn=%s))" --email-attribute mail` + - `update-ldap-simple`: Update existing LDAP (simple auth) authentication source + - Options: + - `--id value`: ID of authentication source. Required. + - `--name value`: Authentication name. + - `--not-active`: Deactivate the authentication source. + - `--security-protocol value`: Security protocol name. + - `--skip-tls-verify`: Disable TLS verification. + - `--host value`: The address where the LDAP server can be reached. + - `--port value`: The port to use when connecting to the LDAP server. + - `--user-search-base value`: The LDAP base at which user accounts will be searched for. + - `--user-filter value`: An LDAP filter declaring how to find the user record that is attempting to authenticate. + - `--admin-filter value`: An LDAP filter specifying if a user should be given administrator privileges. + - `--restricted-filter value`: An LDAP filter specifying if a user should be given restricted status. + - `--username-attribute value`: The attribute of the user’s LDAP record containing the user name. + - `--firstname-attribute value`: The attribute of the user’s LDAP record containing the user’s first name. + - `--surname-attribute value`: The attribute of the user’s LDAP record containing the user’s surname. + - `--email-attribute value`: The attribute of the user’s LDAP record containing the user’s email address. + - `--public-ssh-key-attribute value`: The attribute of the user’s LDAP record containing the user’s public ssh key. + - `--avatar-attribute value`: The attribute of the user’s LDAP record containing the user’s avatar. + - `--user-dn value`: The user’s DN. + - Examples: + - `gitea admin auth update-ldap-simple --id 1 --name "my ldap auth source"` + - `gitea admin auth update-ldap-simple --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn` + +### cert + +Generates a self-signed SSL certificate. Outputs to `cert.pem` and `key.pem` in the current +directory and will overwrite any existing files. + +- Options: + - `--host value`: Comma separated hostnames and ips which this certificate is valid for. + Wildcards are supported. Required. + - `--ecdsa-curve value`: ECDSA curve to use to generate a key. Optional. Valid options + are P224, P256, P384, P521. + - `--rsa-bits value`: Size of RSA key to generate. Optional. Ignored if --ecdsa-curve is + set. (default: 3072). + - `--start-date value`: Creation date. Optional. (format: `Jan 1 15:04:05 2011`). + - `--duration value`: Duration which the certificate is valid for. Optional. (default: 8760h0m0s) + - `--ca`: If provided, this cert generates it's own certificate authority. Optional. +- Examples: + - `gitea cert --host git.example.com,example.com,www.example.com --ca` + +### dump + +Dumps all files and databases into a zip file. Outputs into a file like `gitea-dump-1482906742.zip` +in the current directory. + +- Options: + - `--file name`, `-f name`: Name of the dump file with will be created. Optional. (default: gitea-dump-[timestamp].zip). + - `--tempdir path`, `-t path`: Path to the temporary directory used. Optional. (default: /tmp). + - `--skip-repository`, `-R`: Skip the repository dumping. Optional. + - `--skip-custom-dir`: Skip dumping of the custom dir. Optional. + - `--skip-lfs-data`: Skip dumping of LFS data. Optional. + - `--skip-attachment-data`: Skip dumping of attachment data. Optional. + - `--skip-package-data`: Skip dumping of package data. Optional. + - `--skip-log`: Skip dumping of log data. Optional. + - `--database`, `-d`: Specify the database SQL syntax. Optional (supported arguments: sqlite3, mysql, mssql, postgres). + - `--verbose`, `-V`: If provided, shows additional details. Optional. + - `--type`: Set the dump output format. Optional. (formats: zip, tar, tar.sz, tar.gz, tar.xz, tar.bz2, tar.br, tar.lz4, tar.zst default: zip). +- Examples: + - `gitea dump` + - `gitea dump --verbose` + +### generate + +Generates random values and tokens for usage in configuration file. Useful for generating values +for automatic deployments. + +- Commands: + - `secret`: + - Options: + - `INTERNAL_TOKEN`: Token used for an internal API call authentication. + - `JWT_SECRET`: LFS & OAUTH2 JWT authentication secret (LFS_JWT_SECRET is aliased to this option for backwards compatibility). + - `SECRET_KEY`: Global secret key. + - Examples: + - `gitea generate secret INTERNAL_TOKEN` + - `gitea generate secret JWT_SECRET` + - `gitea generate secret SECRET_KEY` + +### keys + +Provides an SSHD AuthorizedKeysCommand. Needs to be configured in the sshd config file: + +```ini +... +# The value of -e and the AuthorizedKeysCommandUser should match the +# username running Gitea +AuthorizedKeysCommandUser git +AuthorizedKeysCommand /path/to/gitea keys -e git -u %u -t %t -k %k +``` + +The command will return the appropriate authorized_keys line for the +provided key. You should also set the value +`SSH_CREATE_AUTHORIZED_KEYS_FILE=false` in the `[server]` section of +`app.ini`. + +NB: opensshd requires the Gitea program to be owned by root and not +writable by group or others. The program must be specified by an absolute +path. +NB: Gitea must be running for this command to succeed. + +### migrate + +Migrates the database. This command can be used to run other commands before starting the server for the first time. +This command is idempotent. + +### doctor check + +Diagnose and potentially fix problems with the current Gitea instance. +Several checks are run by default, but additional ones can be run: + +- `gitea doctor check --list` - will list all the available checks +- `gitea doctor check --all` - will run all available checks +- `gitea doctor check --default` - will run the default checks +- `gitea doctor check --run [check(s),]...` - will run the named checks + +Some problems can be automatically fixed by passing the `--fix` option. +Extra logging can be set with `--log-file=...`. + +#### doctor recreate-table + +Sometimes when there are migrations the old columns and default values may be left +unchanged in the database schema. This may lead to warning such as: + +``` +2020/08/02 11:32:29 ...rm/session_schema.go:360:Sync() [W] Table user Column keep_activity_private db default is , struct default is 0 +``` + +You can cause Gitea to recreate these tables and copy the old data into the new table +with the defaults set appropriately by using: + +``` +gitea doctor recreate-table user +``` + +You can ask Gitea to recreate multiple tables using: + +``` +gitea doctor recreate-table table1 table2 ... +``` + +And if you would like Gitea to recreate all tables simply call: + +``` +gitea doctor recreate-table +``` + +It is highly recommended to back-up your database before running these commands. + +### doctor convert + +Converts a MySQL database from utf8 to utf8mb4 or a MSSQL database from varchar to nvarchar. + +### manager + +Manage running server operations: + +- Commands: + - `shutdown`: Gracefully shutdown the running process + - `restart`: Gracefully restart the running process - (not implemented for windows servers) + - `flush-queues`: Flush queues in the running process + - Options: + - `--timeout value`: Timeout for the flushing process (default: 1m0s) + - `--non-blocking`: Set to true to not wait for flush to complete before returning + - `logging`: Adjust logging commands + - Commands: + - `pause`: Pause logging + - Notes: + - The logging level will be raised to INFO temporarily if it is below this level. + - Gitea will buffer logs up to a certain point and will drop them after that point. + - `resume`: Resume logging + - `release-and-reopen`: Cause Gitea to release and re-open files and connections used for logging (Equivalent to sending SIGUSR1 to Gitea.) + - `remove name`: Remove the named logger + - Options: + - `--group group`, `-g group`: Set the group to remove the sublogger from. (defaults to `default`) + - `add`: Add a logger + - Commands: + - `console`: Add a console logger + - Options: + - `--group value`, `-g value`: Group to add logger to - will default to "default" + - `--name value`, `-n value`: Name of the new logger - will default to mode + - `--level value`, `-l value`: Logging level for the new logger + - `--stacktrace-level value`, `-L value`: Stacktrace logging level + - `--flags value`, `-F value`: Flags for the logger + - `--expression value`, `-e value`: Matching expression for the logger + - `--prefix value`, `-p value`: Prefix for the logger + - `--color`: Use color in the logs + - `--stderr`: Output console logs to stderr - only relevant for console + - `file`: Add a file logger + - Options: + - `--group value`, `-g value`: Group to add logger to - will default to "default" + - `--name value`, `-n value`: Name of the new logger - will default to mode + - `--level value`, `-l value`: Logging level for the new logger + - `--stacktrace-level value`, `-L value`: Stacktrace logging level + - `--flags value`, `-F value`: Flags for the logger + - `--expression value`, `-e value`: Matching expression for the logger + - `--prefix value`, `-p value`: Prefix for the logger + - `--color`: Use color in the logs + - `--filename value`, `-f value`: Filename for the logger - + - `--rotate`, `-r`: Rotate logs + - `--max-size value`, `-s value`: Maximum size in bytes before rotation + - `--daily`, `-d`: Rotate logs daily + - `--max-days value`, `-D value`: Maximum number of daily logs to keep + - `--compress`, `-z`: Compress rotated logs + - `--compression-level value`, `-Z value`: Compression level to use + - `conn`: Add a network connection logger + - Options: + - `--group value`, `-g value`: Group to add logger to - will default to "default" + - `--name value`, `-n value`: Name of the new logger - will default to mode + - `--level value`, `-l value`: Logging level for the new logger + - `--stacktrace-level value`, `-L value`: Stacktrace logging level + - `--flags value`, `-F value`: Flags for the logger + - `--expression value`, `-e value`: Matching expression for the logger + - `--prefix value`, `-p value`: Prefix for the logger + - `--color`: Use color in the logs + - `--reconnect-on-message`, `-R`: Reconnect to host for every message + - `--reconnect`, `-r`: Reconnect to host when connection is dropped + - `--protocol value`, `-P value`: Set protocol to use: tcp, unix, or udp (defaults to tcp) + - `--address value`, `-a value`: Host address and port to connect to (defaults to :7020) + - `smtp`: Add an SMTP logger + - Options: + - `--group value`, `-g value`: Group to add logger to - will default to "default" + - `--name value`, `-n value`: Name of the new logger - will default to mode + - `--level value`, `-l value`: Logging level for the new logger + - `--stacktrace-level value`, `-L value`: Stacktrace logging level + - `--flags value`, `-F value`: Flags for the logger + - `--expression value`, `-e value`: Matching expression for the logger + - `--prefix value`, `-p value`: Prefix for the logger + - `--color`: Use color in the logs + - `--username value`, `-u value`: Mail server username + - `--password value`, `-P value`: Mail server password + - `--host value`, `-H value`: Mail server host (defaults to: 127.0.0.1:25) + - `--send-to value`, `-s value`: Email address(es) to send to + - `--subject value`, `-S value`: Subject header of sent emails + - `processes`: Display Gitea processes and goroutine information + - Options: + - `--flat`: Show processes as flat table rather than as tree + - `--no-system`: Do not show system processes + - `--stacktraces`: Show stacktraces for goroutines associated with processes + - `--json`: Output as json + - `--cancel PID`: Send cancel to process with PID. (Only for non-system processes.) + +### dump-repo + +Dump-repo dumps repository data from Git/GitHub/Gitea/GitLab: + +- Options: + - `--git_service service` : Git service, it could be `git`, `github`, `gitea`, `gitlab`, If clone_addr could be recognized, this could be ignored. + - `--repo_dir dir`, `-r dir`: Repository dir path to store the data + - `--clone_addr addr`: The URL will be clone, currently could be a git/github/gitea/gitlab http/https URL. i.e. https://github.com/lunny/tango.git + - `--auth_username lunny`: The username to visit the clone_addr + - `--auth_password `: The password to visit the clone_addr + - `--auth_token `: The personal token to visit the clone_addr + - `--owner_name lunny`: The data will be stored on a directory with owner name if not empty + - `--repo_name tango`: The data will be stored on a directory with repository name if not empty + - `--units `: Which items will be migrated, one or more units should be separated as comma. wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments are allowed. Empty means all units. + +### restore-repo + +Restore-repo restore repository data from disk dir: + +- Options: + - `--repo_dir dir`, `-r dir`: Repository dir path to restore from + - `--owner_name lunny`: Restore destination owner name + - `--repo_name tango`: Restore destination repository name + - `--units `: Which items will be restored, one or more units should be separated as comma. wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments are allowed. Empty means all units. + +### actions generate-runner-token + +Generate a new token for a runner to use to register with the server + +- Options: + - `--scope {owner}[/{repo}]`, `-s {owner}[/{repo}]`: To limit the scope of the runner, no scope means the runner can be used for all repos, but you can also limit it to a specific repo or owner + +To register a global runner: + +``` +gitea actions generate-runner-token +``` + +To register a runner for a specific organization, in this case `org`: + +``` +gitea actions generate-runner-token -s org +``` + +To register a runner for a specific repo, in this case `username/test-repo`: + +``` +gitea actions generate-runner-token -s username/test-repo +``` diff --git a/docs/content/administration/command-line.zh-cn.md b/docs/content/administration/command-line.zh-cn.md new file mode 100644 index 0000000000..6e6bcb6082 --- /dev/null +++ b/docs/content/administration/command-line.zh-cn.md @@ -0,0 +1,542 @@ +--- +date: "2023-05-23T09:00:00+08:00" +title: "Gitea 命令行" +slug: "command-line" +sidebar_position: 1 +toc: false +draft: false +aliases: + - /zh-cn/command-line +menu: + sidebar: + parent: "administration" + name: "Gitea 命令行" + sidebar_position: 1 + identifier: "command-line" +--- + +# 命令行 + +## 用法 + +`gitea [全局选项] 命令 [命令或全局选项] [参数...]` + +## 全局选项 + +所有全局选项均可被放置在命令级别。 + +- `--help`,`-h`:显示帮助文本并退出。可选。 +- `--version`,`-v`:显示版本信息并退出。可选。 (示例:`Gitea version 1.1.0+218-g7b907ed built with: bindata, sqlite`)。 +- `--custom-path path`,`-C path`:Gitea 自定义文件夹的路径。可选。 (默认值:`AppWorkPath`/custom 或 `$GITEA_CUSTOM`)。 +- `--config path`,`-c path`:Gitea 配置文件的路径。可选。 (默认值:`custom`/conf/app.ini)。 +- `--work-path path`,`-w path`:Gitea 的 `AppWorkPath`。可选。 (默认值:LOCATION_OF_GITEA_BINARY 或 `$GITEA_WORK_DIR`) + +注意:默认的 custom-path、config 和 work-path 也可以在构建时更改(如果需要)。 + +## 命令 + +### web + +启动服务器: + +- 选项: + - `--port number`,`-p number`:端口号。可选。 (默认值:3000)。覆盖配置文件中的设置。 + - `--install-port number`:运行安装页面的端口号。可选。 (默认值:3000)。覆盖配置文件中的设置。 + - `--pid path`,`-P path`:Pid 文件的路径。可选。 + - `--quiet`,`-q`:只在控制台上输出 Fatal 日志,用于在设置日志之前发出的日志。 + - `--verbose`:在控制台上输出跟踪日志,用于在设置日志之前发出的日志。 +- 示例: + - `gitea web` + - `gitea web --port 80` + - `gitea web --config /etc/gitea.ini --pid /some/custom/gitea.pid` +- 注意: + - Gitea 不应以 root 用户身份运行。要绑定到低于 1024 的端口,您可以在 Linux 上使用 setcap 命令:`sudo setcap 'cap_net_bind_service=+ep' /path/to/gitea`。每次更新 Gitea 都需要重新执行此操作。 + +### admin + +管理员操作: + +- 命令: + - `user`: + - `list`: + - 选项: + - `--admin`:仅列出管理员用户。可选。 + - 描述:列出所有现有用户。 + - 示例: + - `gitea admin user list` + - `delete`: + - 选项: + - `--email`:要删除的用户的电子邮件。 + - `--username`:要删除的用户的用户名。 + - `--id`:要删除的用户的ID。 + - 必须提供 `--id`、`--username` 或 `--email` 中的一个。如果提供多个,则所有条件必须匹配。 + - 示例: + - `gitea admin user delete --id 1` + - `create`: + - 选项: + - `--name value`:用户名。必填。自 Gitea 1.9.0 版本起,请改用 `--username` 标志。 + - `--username value`:用户名。必填。Gitea 1.9.0 新增。 + - `--password value`:密码。必填。 + - `--email value`:邮箱。必填。 + - `--admin`:如果提供此选项,将创建一个管理员用户。可选。 + - `--access-token`:如果提供,将为用户创建访问令牌。可选。(默认值:false)。 + - `--must-change-password`:如果提供,创建的用户将在初始登录后需要选择一个新密码。可选。(默认值:true)。 + - `--random-password`:如果提供,将使用随机生成的密码作为创建用户的密码。`--password` 的值将被忽略。可选。 + - `--random-password-length`:如果提供,将用于配置随机生成密码的长度。可选。(默认值:12) + - 示例: + - `gitea admin user create --username myname --password asecurepassword --email me@example.com` + - `change-password`: + - 选项: + - `--username value`,`-u value`:用户名。必填。 + - `--password value`,`-p value`:新密码。必填。 + - 示例: + - `gitea admin user change-password --username myname --password asecurepassword` + - `must-change-password`: + - 参数: + - `[username...]`:需要更改密码的用户 + - 选项: + - `--all`,`-A`:强制所有用户更改密码 + - `--exclude username`,`-e username`:排除给定的用户。可以多次设置。 + - `--unset`:撤销对给定用户的强制密码更改 + - `regenerate`: + - 选项: + - `hooks`:重新生成所有仓库的 Git Hooks。 + - `keys`:重新生成 authorized_keys 文件。 + - 示例: + - `gitea admin regenerate hooks` + - `gitea admin regenerate keys` + - `auth`: + - `list`: + - 描述:列出所有存在的外部认证源。 + - 示例: + - `gitea admin auth list` + - `delete`: + - 选项: + - `--id`:要删除的源的 ID。必填。 + - 示例: + - `gitea admin auth delete --id 1` + - `add-oauth`: + - 选项: + - `--name`:应用程序名称。 + - `--provider`:OAuth2 提供者。 + - `--key`:客户端 ID(Key)。 + - `--secret`:客户端密钥。 + - `--auto-discover-url`:OpenID Connect 自动发现 URL(仅在使用 OpenID Connect 作为提供程序时需要)。 + - `--use-custom-urls`:在 GitLab/GitHub OAuth 端点上使用自定义 URL。 + - `--custom-tenant-id`:在 OAuth 端点上使用自定义租户 ID。 + - `--custom-auth-url`:使用自定义授权 URL(GitLab/GitHub 的选项)。 + - `--custom-token-url`:使用自定义令牌 URL(GitLab/GitHub 的选项)。 + - `--custom-profile-url`:使用自定义配置文件 URL(GitLab/GitHub 的选项)。 + - `--custom-email-url`:使用自定义电子邮件 URL(GitHub 的选项)。 + - `--icon-url`:OAuth2 登录源的自定义图标 URL。 + - `--skip-local-2fa`:允许源覆盖本地 2FA。(可选) + - `--scopes`:请求此 OAuth2 源的附加范围。(可选) + - `--required-claim-name`:必须设置的声明名称,以允许用户使用此源登录。(可选) + - `--required-claim-value`:必须设置的声明值,以允许用户使用此源登录。(可选) + - `--group-claim-name`:提供此源的组名的声明名称。(可选) + - `--admin-group`:管理员用户的组声明值。(可选) + - `--restricted-group`:受限用户的组声明值。(可选) + - `--group-team-map`:组与组织团队之间的 JSON 映射。(可选) + - `--group-team-map-removal`:根据组自动激活团队成员资格的删除。(可选) + - 示例: + - `gitea admin auth add-oauth --name external-github --provider github --key OBTAIN_FROM_SOURCE --secret OBTAIN_FROM_SOURCE` + - `update-oauth`: + - 选项: + - `--id`:要更新的源的 ID。必填。 + - `--name`:应用程序名称。 + - `--provider`:OAuth2 提供者。 + - `--key`:客户端 ID(Key)。 + - `--secret`:客户端密钥。 + - `--auto-discover-url`:OpenID Connect 自动发现 URL(仅在使用 OpenID Connect 作为提供程序时需要)。 + - `--use-custom-urls`:在 GitLab/GitHub OAuth 端点上使用自定义 URL。 + - `--custom-tenant-id`:在 OAuth 端点上使用自定义租户 ID。 + - `--custom-auth-url`:使用自定义授权 URL(GitLab/GitHub 的选项)。 + - `--custom-token-url`:使用自定义令牌 URL(GitLab/GitHub 的选项)。 + - `--custom-profile-url`:使用自定义配置文件 URL(GitLab/GitHub 的选项)。 + - `--custom-email-url`:使用自定义电子邮件 URL(GitHub 的选项)。 + - `--icon-url`:OAuth2 登录源的自定义图标 URL。 + - `--skip-local-2fa`:允许源覆盖本地 2FA。(可选) + - `--scopes`:请求此 OAuth2 源的附加范围。 + - `--required-claim-name`:必须设置的声明名称,以允许用户使用此源登录。(可选) + - `--required-claim-value`:必须设置的声明值,以允许用户使用此源登录。(可选) + - `--group-claim-name`:提供此源的组名的声明名称。(可选) + - `--admin-group`:管理员用户的组声明值。(可选) + - `--restricted-group`:受限用户的组声明值。(可选) + - 示例: + - `gitea admin auth update-oauth --id 1 --name external-github-updated` + - `add-smtp`: + - 选项: + - `--name`:应用程序名称。必填。 + - `--auth-type`:SMTP 认证类型(PLAIN/LOGIN/CRAM-MD5)。默认为 PLAIN。 + - `--host`:SMTP 主机。必填。 + - `--port`:SMTP 端口。必填。 + - `--force-smtps`:SMTPS 始终在端口 465 上使用。设置此选项以强制在其他端口上使用 SMTPS。 + - `--skip-verify`:跳过 TLS 验证。 + - `--helo-hostname`:发送 HELO 时使用的主机名。留空以发送当前主机名。 + - `--disable-helo`:禁用 SMTP helo。 + - `--allowed-domains`:留空以允许所有域。使用逗号(',')分隔多个域。 + - `--skip-local-2fa`:跳过 2FA 登录。 + - `--active`:启用此认证源。 + 备注: + `--force-smtps`、`--skip-verify`、`--disable-helo`、`--skip-local-2fs` 和 `--active` 选项可以采用以下形式使用: + - `--option`、`--option=true` 以启用选项 + - `--option=false` 以禁用选项 + 如果未指定这些选项,则在 `update-smtp` 中不会更改值,或者在 `add-smtp` 中将使用默认的 `false` 值。 + - 示例: + - `gitea admin auth add-smtp --name ldap --host smtp.mydomain.org --port 587 --skip-verify --active` + - `update-smtp`: + - 选项: + - `--id`:要更新的源的 ID。必填。 + - 其他选项与 `add-smtp` 共享 + - 示例: + - `gitea admin auth update-smtp --id 1 --host smtp.mydomain.org --port 587 --skip-verify=false` + - `gitea admin auth update-smtp --id 1 --active=false` + - `add-ldap`:添加新的 LDAP(通过 Bind DN)认证源 + - 选项: + - `--name value`:认证名称。必填。 + - `--not-active`:停用认证源。 + - `--security-protocol value`:安全协议名称。必填。 + - `--skip-tls-verify`:禁用 TLS 验证。 + - `--host value`:LDAP 服务器的地址。必填。 + - `--port value`:连接到 LDAP 服务器时使用的端口。必填。 + - `--user-search-base value`:用户帐户将在其中搜索的 LDAP 基础路径。必填。 + - `--user-filter value`:声明如何查找试图进行身份验证的用户记录的 LDAP 过滤器。必填。 + - `--admin-filter value`:指定是否应授予用户管理员特权的 LDAP 过滤器。 + - `--restricted-filter value`:指定是否应将用户设置为受限状态的 LDAP 过滤器。 + - `--username-attribute value`:用户 LDAP 记录中包含用户名的属性。 + - `--firstname-attribute value`:用户 LDAP 记录中包含用户名字的属性。 + - `--surname-attribute value`:用户 LDAP 记录中包含用户姓氏的属性。 + - `--email-attribute value`:用户 LDAP 记录中包含用户电子邮件地址的属性。必填。 + - `--public-ssh-key-attribute value`:用户 LDAP 记录中包含用户公共 SSH 密钥的属性。 + - `--avatar-attribute value`:用户 LDAP 记录中包含用户头像的属性。 + - `--bind-dn value`:在搜索用户时绑定到 LDAP 服务器的 DN。 + - `--bind-password value`:绑定 DN 的密码(如果有)。 + - `--attributes-in-bind`:在绑定 DN 上下文中获取属性。 + - `--synchronize-users`:启用用户同步。 + - `--page-size value`:搜索页面大小。 + - 示例: + - `gitea admin auth add-ldap --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-search-base "ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))" --email-attribute mail` + - `update-ldap`:更新现有的 LDAP(通过 Bind DN)认证源 + - 选项: + - `--id value`:认证源的 ID。必填。 + - `--name value`:认证名称。 + - `--not-active`:停用认证源。 + - `--security-protocol value`:安全协议名称。 + - `--skip-tls-verify`:禁用 TLS 验证。 + - `--host value`:LDAP 服务器的地址。 + - `--port value`:连接到 LDAP 服务器时使用的端口。 + - `--user-search-base value`:用户帐户将在其中搜索的 LDAP 基础路径。 + - `--user-filter value`:声明如何查找试图进行身份验证的用户记录的 LDAP 过滤器。 + - `--admin-filter value`:指定是否应授予用户管理员特权的 LDAP 过滤器。 + - `--restricted-filter value`:指定是否应将用户设置为受限状态的 LDAP 过滤器。 + - `--username-attribute value`:用户 LDAP 记录中包含用户名的属性。 + - `--firstname-attribute value`:用户 LDAP 记录中包含用户名字的属性。 + - `--surname-attribute value`:用户 LDAP 记录中包含用户姓氏的属性。 + - `--email-attribute value`:用户 LDAP 记录中包含用户电子邮件地址的属性。 + - `--public-ssh-key-attribute value`:用户 LDAP 记录中包含用户公共 SSH 密钥的属性。 + - `--avatar-attribute value`:用户 LDAP 记录中包含用户头像的属性。 + - `--bind-dn value`:在搜索用户时绑定到 LDAP 服务器的 DN。 + - `--bind-password value`:绑定 DN 的密码(如果有)。 + - `--attributes-in-bind`:在绑定 DN 上下文中获取属性。 + - `--synchronize-users`:启用用户同步。 + - `--page-size value`:搜索页面大小。 + - 示例: + - `gitea admin auth update-ldap --id 1 --name "my ldap auth source"` + - `gitea admin auth update-ldap --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn` + - `add-ldap-simple`:添加新的 LDAP(简单身份验证)认证源 + - 选项: + - `--name value`:认证名称。必填。 + - `--not-active`:停用认证源。 + - `--security-protocol value`:安全协议名称。必填。 + - `--skip-tls-verify`:禁用 TLS 验证。 + - `--host value`:LDAP 服务器的地址。必填。 + - `--port value`:连接到 LDAP 服务器时使用的端口。必填。 + - `--user-search-base value`:用户帐户将在其中搜索的 LDAP 基础路径。 + - `--user-filter value`:声明如何查找试图进行身份验证的用户记录的 LDAP 过滤器。必填。 + - `--admin-filter value`:指定是否应授予用户管理员特权的 LDAP 过滤器。 + - `--restricted-filter value`:指定是否应将用户设置为受限状态的 LDAP 过滤器。 + - `--username-attribute value`:用户 LDAP 记录中包含用户名的属性。 + - `--firstname-attribute value`:用户 LDAP 记录中包含用户名字的属性。 + - `--surname-attribute value`:用户 LDAP 记录中包含用户姓氏的属性。 + - `--email-attribute value`:用户 LDAP 记录中包含用户电子邮件地址的属性。必填。 + - `--public-ssh-key-attribute value`:用户 LDAP 记录中包含用户公共 SSH 密钥的属性。 + - `--avatar-attribute value`:用户 LDAP 记录中包含用户头像的属性。 + - `--user-dn value`:用户的 DN。必填。 + - 示例: + - `gitea admin auth add-ldap-simple --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-dn "cn=%s,ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(cn=%s))" --email-attribute mail` + - `update-ldap-simple`:更新现有的 LDAP(简单身份验证)认证源 + - 选项: + - `--id value`:认证源的 ID。必填。 + - `--name value`:认证名称。 + - `--not-active`:停用认证源。 + - `--security-protocol value`:安全协议名称。 + - `--skip-tls-verify`:禁用 TLS 验证。 + - `--host value`:LDAP 服务器的地址。 + - `--port value`:连接到 LDAP 服务器时使用的端口。 + - `--user-search-base value`:用户帐户将在其中搜索的 LDAP 基础路径。 + - `--user-filter value`:声明如何查找试图进行身份验证的用户记录的 LDAP 过滤器。 + - `--admin-filter value`:指定是否应授予用户管理员特权的 LDAP 过滤器。 + - `--restricted-filter value`:指定是否应将用户设置为受限状态的 LDAP 过滤器。 + - `--username-attribute value`:用户 LDAP 记录中包含用户名的属性。 + - `--firstname-attribute value`:用户 LDAP 记录中包含用户名字的属性。 + - `--surname-attribute value`:用户 LDAP 记录中包含用户姓氏的属性。 + - `--email-attribute value`:用户 LDAP 记录中包含用户电子邮件地址的属性。 + - `--public-ssh-key-attribute value`:用户 LDAP 记录中包含用户公共 SSH 密钥的属性。 + - `--avatar-attribute value`:用户 LDAP 记录中包含用户头像的属性。 + - `--user-dn value`:用户的 DN。 + - 示例: + - `gitea admin auth update-ldap-simple --id 1 --name "my ldap auth source"` + - `gitea admin auth update-ldap-simple --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn` + +### cert + +生成自签名的SSL证书。将输出到当前目录下的`cert.pem`和`key.pem`文件中,并且会覆盖任何现有文件。 + +- 选项: + - `--host value`:逗号分隔的主机名和IP地址列表,此证书适用于这些主机。支持使用通配符。必填。 + - `--ecdsa-curve value`:用于生成密钥的ECDSA曲线。可选。有效选项为P224、P256、P384、P521。 + - `--rsa-bits value`:要生成的RSA密钥的大小。可选。如果设置了--ecdsa-curve,则忽略此选项。(默认值:3072)。 + - `--start-date value`:证书的创建日期。可选。(格式:`Jan 1 15:04:05 2011`)。 + - `--duration value`:证书有效期。可选。(默认值:8760h0m0s) + - `--ca`:如果提供此选项,则证书将生成自己的证书颁发机构。可选。 +- 示例: + - `gitea cert --host git.example.com,example.com,www.example.com --ca` + +### dump + +将所有文件和数据库导出到一个zip文件中。输出文件将保存在当前目录下,类似于`gitea-dump-1482906742.zip`。 + +- 选项: + - `--file name`,`-f name`:指定要创建的导出文件的名称。可选。(默认值:gitea-dump-[timestamp].zip)。 + - `--tempdir path`,`-t path`:指定临时目录的路径。可选。(默认值:/tmp)。 + - `--skip-repository`,`-R`:跳过仓库的导出。可选。 + - `--skip-custom-dir`:跳过自定义目录的导出。可选。 + - `--skip-lfs-data`:跳过LFS数据的导出。可选。 + - `--skip-attachment-data`:跳过附件数据的导出。可选。 + - `--skip-package-data`:跳过包数据的导出。可选。 + - `--skip-log`:跳过日志数据的导出。可选。 + - `--database`,`-d`:指定数据库的SQL语法。可选。 + - `--verbose`,`-V`:如果提供此选项,显示附加详细信息。可选。 + - `--type`:设置导出的格式。可选。(默认值:zip) +- 示例: + - `gitea dump` + - `gitea dump --verbose` + +### generate + +用于在配置文件中生成随机值和令牌。对于自动部署时生成值非常有用。 + +- 命令: + - `secret`: + - 选项: + - `INTERNAL_TOKEN`: 用于内部 API 调用身份验证的令牌。 + - `JWT_SECRET`: 用于 LFS 和 OAUTH2 JWT 身份验证的密钥(LFS_JWT_SECRET 是此选项的别名,用于向后兼容)。 + - `SECRET_KEY`: 全局密钥。 + - 示例: + - `gitea generate secret INTERNAL_TOKEN` + - `gitea generate secret JWT_SECRET` + - `gitea generate secret SECRET_KEY` + +### keys + +提供一个 SSHD AuthorizedKeysCommand。需要在 sshd 配置文件中进行配置: + +```ini +... +# -e 的值和 AuthorizedKeysCommandUser 应与运行 Gitea 的用户名匹配 +AuthorizedKeysCommandUser git +AuthorizedKeysCommand /path/to/gitea keys -e git -u %u -t %t -k %k +``` + +该命令将返回适用于提供的密钥的合适 authorized_keys 行。您还应在 `app.ini` 的 `[server]` 部分设置值 `SSH_CREATE_AUTHORIZED_KEYS_FILE=false`。 + +注意: opensshd 要求 Gitea 程序由 root 拥有,并且不可由组或其他人写入。程序必须使用绝对路径指定。 +注意: Gitea 必须在运行此命令时处于运行状态才能成功。 + +### migrate + +迁移数据库。该命令可用于在首次启动服务器之前运行其他命令。此命令是幂等的。 + +### doctor check + +对 Gitea 实例进行诊断,可以修复一些可修复的问题。 +默认只运行部分检查,额外的检查可以参考: + +- `gitea doctor check --list` - 列出所有可用的检查 +- `gitea doctor check --all` - 运行所有可用的检查 +- `gitea doctor check --default` - 运行默认的检查 +- `gitea doctor check --run [check(s),]...` - 运行指定的名字的检查 + +有些问题可以通过设置 `--fix` 选项进行自动修复。 +额外的日志可以通过 `--log-file=...` 进行设置。 + +#### doctor recreate-table + +有时,在迁移时,旧的列和默认值可能会在数据库模式中保持不变。这可能会导致警告,如下所示: + +``` +2020/08/02 11:32:29 ...rm/session_schema.go:360:Sync() [W] Table user Column keep_activity_private db default is , struct default is 0 +``` + +您可以通过以下方式让 Gitea 重新创建这些表,并将旧数据复制到新表中,并适当设置默认值: + +``` +gitea doctor recreate-table user +``` + +您可以使用以下方式让 Gitea 重新创建多个表: + +``` +gitea doctor recreate-table table1 table2 ... +``` + +如果您希望 Gitea 重新创建所有表,请直接调用: + +``` +gitea doctor recreate-table +``` + +强烈建议在运行这些命令之前备份您的数据库。 + +### doctor convert + +将现有的 MySQL 数据库从 utf8 转换为 utf8mb4,或者把 MSSQL 数据库从 varchar 转换为 nvarchar。 + +### manager + +管理运行中的服务器操作: + +- 命令: + - `shutdown`: 优雅地关闭运行中的进程 + - `restart`: 优雅地重新启动运行中的进程(对于Windows服务器尚未实现) + - `flush-queues`: 刷新运行中的进程中的队列 + - 选项: + - `--timeout value`: 刷新过程的超时时间(默认值: 1m0s) + - `--non-blocking`: 设置为true,以在返回之前不等待刷新完成 + - `logging`: 调整日志命令 + - 命令: + - `pause`: 暂停日志记录 + - 注意: + - 如果日志级别低于此级别,日志级别将被临时提升为INFO。 + - Gitea将在一定程度上缓冲日志,并在超过该点后丢弃日志。 + - `resume`: 恢复日志记录 + - `release-and-reopen`: 使Gitea释放和重新打开用于日志记录的文件和连接(相当于向Gitea发送SIGUSR1信号)。 + - `remove name`: 删除指定的日志记录器 + - 选项: + - `--group group`, `-g group`: 从中删除子记录器的组(默认为`default`) + - `add`: 添加日志记录器 + - 命令: + - `console`: 添加控制台日志记录器 + - 选项: + - `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default" + - `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式 + - `--level value`, `-l value`: 新日志记录器的日志级别 + - `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别 + - `--flags value`, `-F value`: 日志记录器的标志 + - `--expression value`, `-e value`: 日志记录器的匹配表达式 + - `--prefix value`, `-p value`: 日志记录器的前缀 + - `--color`: 在日志中使用颜色 + - `--stderr`: 将控制台日志输出到stderr - 仅适用于控制台 + - `file`: 添加文件日志记录器 + - 选项: + - `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default" + - `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式 + - `--level value`, `-l value`: 新日志记录器的日志级别 + - `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别 + - `--flags value`, `-F value`: 日志记录器的标志 + - `--expression value`, `-e value`: 日志记录器的匹配表达式 + - `--prefix value`, `-p value`: 日志记录器的前缀 + - `--color`: 在日志中使用颜色 + - `--filename value`, `-f value`: 日志记录器的文件名 + - `--rotate`, `-r`: 轮转日志 + - `--max-size value`, `-s value`: 在轮转之前的最大大小(以字节为单位) + - `--daily`, `-d`: 每天轮转日志 + - `--max-days value`, `-D value`: 保留的每日日志的最大数量 + - `--compress`, `-z`: 压缩轮转的日志 + - `--compression-level value`, `-Z value`: 使用的压缩级别 + - `conn`: 添加网络连接日志记录器 + - 选项: + - `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default" + - `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式 + - `--level value`, `-l value`: 新日志记录器的日志级别 + - `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别 + - `--flags value`, `-F value`: 日志记录器的标志 + - `--expression value`, `-e value`: 日志记录器的匹配表达式 + - `--prefix value`, `-p value`: 日志记录器的前缀 + - `--color`: 在日志中使用颜色 + - `--reconnect-on-message`, `-R`: 对于每个消息重新连接主机 + - `--reconnect`, `-r`: 连接中断时重新连接主机 + - `--protocol value`, `-P value`: 设置要使用的协议:tcp、unix或udp(默认为tcp) + - `--address value`, `-a value`: 要连接到的主机地址和端口(默认为:7020) + - `smtp`: 添加SMTP日志记录器 + - 选项: + - `--group value`, `-g value`: 要添加日志记录器的组 - 默认为"default" + - `--name value`, `-n value`: 新日志记录器的名称 - 默认为模式 + - `--level value`, `-l value`: 新日志记录器的日志级别 + - `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别 + - `--flags value`, `-F value`: 日志记录器的标志 + - `--expression value`, `-e value`: 日志记录器的匹配表达式 + - `--prefix value`, `-p value`: 日志记录器的前缀 + - `--color`: 在日志中使用颜色 + - `--username value`, `-u value`: 邮件服务器用户名 + - `--password value`, `-P value`: 邮件服务器密码 + - `--host value`, `-H value`: 邮件服务器主机(默认为: 127.0.0.1:25) + - `--send-to value`, `-s value`: 要发送到的电子邮件地址 + - `--subject value`, `-S value`: 发送电子邮件的主题标题 + - `processes`: 显示 Gitea 进程和 Goroutine 信息 + - 选项: + - `--flat`: 以平面表格形式显示进程,而不是树形结构 + - `--no-system`: 不显示系统进程 + - `--stacktraces`: 显示与进程关联的 Goroutine 的堆栈跟踪 + - `--json`: 输出为 JSON 格式 + - `--cancel PID`: 向具有 PID 的进程发送取消命令(仅适用于非系统进程) + +### dump-repo + +`dump-repo` 从 Git/GitHub/Gitea/GitLab 中转储存储库数据: + +- 选项: + - `--git_service service`:Git 服务,可以是 `git`、`github`、`gitea`、`gitlab`。如果 `clone_addr` 可以被识别,则可以忽略此选项。 + - `--repo_dir dir`,`-r dir`:存储数据的存储库目录路径。 + - `--clone_addr addr`:将被克隆的 URL,目前可以是 git/github/gitea/gitlab 的 http/https URL。例如:https://github.com/lunny/tango.git + - `--auth_username lunny`:访问 `clone_addr` 的用户名。 + - `--auth_password `:访问 `clone_addr` 的密码。 + - `--auth_token `:访问 `clone_addr` 的个人令牌。 + - `--owner_name lunny`:如果非空,数据将存储在具有所有者名称的目录中。 + - `--repo_name tango`:如果非空,数据将存储在具有存储库名称的目录中。 + - `--units `:要迁移的项目,一个或多个项目应以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果为空,则表示所有项目。 + +### restore-repo + +`restore-repo` 从磁盘目录中还原存储库数据: + +- 选项: + - `--repo_dir dir`,`-r dir`:还原数据的存储库目录路径。 + - `--owner_name lunny`:还原目标所有者名称。 + - `--repo_name tango`:还原目标存储库名称。 + - `--units `:要还原的项目,一个或多个项目应以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果为空,则表示所有项目。 + +### actions generate-runner-token + +生成一个供 Runner 使用的新令牌,用于向服务器注册。 + +- 选项: + - `--scope {owner}[/{repo}]`,`-s {owner}[/{repo}]`:限制 Runner 的范围,没有范围表示该 Runner 可用于所有仓库,但你也可以将其限制为特定的仓库或所有者。 + +要注册全局 Runner: + +``` +gitea actions generate-runner-token +``` + +要注册特定组织的 Runner,例如 `org`: + +``` +gitea actions generate-runner-token -s org +``` + +要注册特定仓库的 Runner,例如 `username/test-repo`: + +``` +gitea actions generate-runner-token -s username/test-repo +``` diff --git a/docs/content/administration/config-cheat-sheet.en-us.md b/docs/content/administration/config-cheat-sheet.en-us.md new file mode 100644 index 0000000000..3e9ae6047f --- /dev/null +++ b/docs/content/administration/config-cheat-sheet.en-us.md @@ -0,0 +1,1417 @@ +--- +date: "2016-12-26T16:00:00+02:00" +title: "Config Cheat Sheet" +slug: "config-cheat-sheet" +sidebar_position: 30 +toc: false +draft: false +aliases: + - /en-us/config-cheat-sheet +menu: + sidebar: + parent: "administration" + name: "Config Cheat Sheet" + sidebar_position: 30 + identifier: "config-cheat-sheet" +--- + +# Configuration Cheat Sheet + +This is a cheat sheet for the Gitea configuration file. It contains most of the settings +that can be configured as well as their default values. + +Any changes to the Gitea configuration file should be made in `custom/conf/app.ini` +or any corresponding location. When installing from a distribution, this will +typically be found at `/etc/gitea/conf/app.ini`. + +The defaults provided here are best-effort (not built automatically). They are +accurately recorded in [app.example.ini](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini) +(s/main/\). Any string in the format `%(X)s` is a feature powered +by [ini](https://github.com/go-ini/ini/#recursive-values), for reading values recursively. + +In the default values below, a value in the form `$XYZ` refers to an environment variable. (However, see `environment-to-ini`.) Values in the form _`XxYyZz`_ refer to values listed as part of the default configuration. These notation forms will not work in your own `app.ini` file and are only listed here as documentation. + +Values containing `#` or `;` must be quoted using `` ` `` or `"""`. + +**Note:** A full restart is required for Gitea configuration changes to take effect. + +## Default Configuration (non-`app.ini` configuration) + +These values are environment-dependent but form the basis of a lot of values. They will be +reported as part of the default configuration when running `gitea help` or on start-up. The order they are emitted there is slightly different but we will list them here in the order they are set-up. + +- _`AppPath`_: This is the absolute path of the running gitea binary. +- _`AppWorkPath`_: This refers to "working path" of the `gitea` binary. It is determined by using the first set thing in the following hierarchy: + - The `WORK_PATH` option in `app.ini` + - The `--work-path` flag passed to the binary + - The environment variable `$GITEA_WORK_DIR` + - A built-in value set at build time (see building from source) + - Otherwise, it defaults to the directory of the _`AppPath`_ + - If any of the above are relative paths then they are made absolute against the directory of the _`AppPath`_ +- _`CustomPath`_: This is the base directory for custom templates and other options. +It is determined by using the first set thing in the following hierarchy: + - The `--custom-path` flag passed to the binary + - The environment variable `$GITEA_CUSTOM` + - A built-in value set at build time (see building from source) + - Otherwise, it defaults to _`AppWorkPath`_`/custom` + - If any of the above are relative paths then they are made absolute against the +the directory of the _`AppWorkPath`_ +- _`CustomConf`_: This is the path to the `app.ini` file. + - The `--config` flag passed to the binary + - A built-in value set at build time (see building from source) + - Otherwise, it defaults to _`CustomPath`_`/conf/app.ini` + - If any of the above are relative paths then they are made absolute against the directory of the _`CustomPath`_ + +In addition, there is _`StaticRootPath`_ which can be set as a built-in at build time, but will otherwise default to _`AppWorkPath`_ + +## Overall (`DEFAULT`) + +- `APP_NAME`: **Gitea: Git with a cup of tea**: Application name, used in the page title. +- `RUN_USER`: **_current OS username_/`$USER`/`$USERNAME` e.g. git**: The user Gitea will run as. + This should be a dedicated system (non-user) account. Setting this incorrectly will cause Gitea + to not start. +- `RUN_MODE`: **prod**: Application run mode, affects performance and debugging: `dev` or `prod`, default is `prod`. Mode `dev` makes Gitea easier to develop and debug, values other than `dev` are treated as `prod` which is for production use. +- `WORK_PATH`: **_the-work-path_**: The working directory, see the comment of AppWorkPath above. + +## Repository (`repository`) + +- `ROOT`: **%(APP_DATA_PATH)s/gitea-repositories**: Root path for storing all repository data. + A relative path is interpreted as **_`AppWorkPath`_/%(ROOT)s**. +- `SCRIPT_TYPE`: **bash**: The script type this server supports. Usually this is `bash`, + but some users report that only `sh` is available. +- `DETECTED_CHARSETS_ORDER`: **UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, ISO-8859, windows-1252, ISO-8859, windows-1250, ISO-8859, ISO-8859, ISO-8859, windows-1253, ISO-8859, windows-1255, ISO-8859, windows-1251, windows-1256, KOI8-R, ISO-8859, windows-1254, Shift_JIS, GB18030, EUC-JP, EUC-KR, Big5, ISO-2022, ISO-2022, ISO-2022, IBM424_rtl, IBM424_ltr, IBM420_rtl, IBM420_ltr**: Tie-break order of detected charsets - if the detected charsets have equal confidence, charsets earlier in the list will be chosen in preference to those later. Adding `defaults` will place the unnamed charsets at that point. +- `ANSI_CHARSET`: **_empty_**: Default ANSI charset to override non-UTF-8 charsets to. +- `FORCE_PRIVATE`: **false**: Force every new repository to be private. +- `DEFAULT_PRIVATE`: **last**: Default private when creating a new repository. + \[last, private, public\] +- `DEFAULT_PUSH_CREATE_PRIVATE`: **true**: Default private when creating a new repository with push-to-create. +- `MAX_CREATION_LIMIT`: **-1**: Global maximum creation limit of repositories per user, + `-1` means no limit. +- `PREFERRED_LICENSES`: **Apache License 2.0,MIT License**: Preferred Licenses to place at + the top of the list. Name must match file name in options/license or custom/options/license. +- `DISABLE_HTTP_GIT`: **false**: Disable the ability to interact with repositories over the + HTTP protocol. +- `USE_COMPAT_SSH_URI`: **false**: Force ssh:// clone url instead of scp-style uri when + default SSH port is used. +- `GO_GET_CLONE_URL_PROTOCOL`: **https**: Value for the "go get" request returns the repository url as https or ssh + default is https. +- `ACCESS_CONTROL_ALLOW_ORIGIN`: **_empty_**: Value for Access-Control-Allow-Origin header, + default is not to present. **WARNING**: This maybe harmful to you website if you do not + give it a right value. +- `DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH`: **false**: Close an issue if a commit on a non default branch marks it as closed. +- `ENABLE_PUSH_CREATE_USER`: **false**: Allow users to push local repositories to Gitea and have them automatically created for a user. +- `ENABLE_PUSH_CREATE_ORG`: **false**: Allow users to push local repositories to Gitea and have them automatically created for an org. +- `DISABLED_REPO_UNITS`: **_empty_**: Comma separated list of globally disabled repo units. Allowed values: \[repo.issues, repo.ext_issues, repo.pulls, repo.wiki, repo.ext_wiki, repo.projects, repo.packages, repo.actions\] +- `DEFAULT_REPO_UNITS`: **repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages**: Comma separated list of default new repo units. Allowed values: \[repo.code, repo.releases, repo.issues, repo.pulls, repo.wiki, repo.projects, repo.packages, repo.actions\]. Note: Code and Releases can currently not be deactivated. If you specify default repo units you should still list them for future compatibility. External wiki and issue tracker can't be enabled by default as it requires additional settings. Disabled repo units will not be added to new repositories regardless if it is in the default list. +- `DEFAULT_FORK_REPO_UNITS`: **repo.code,repo.pulls**: Comma separated list of default forked repo units. The set of allowed values and rules is the same as `DEFAULT_REPO_UNITS`. +- `PREFIX_ARCHIVE_FILES`: **true**: Prefix archive files by placing them in a directory named after the repository. +- `DISABLE_MIGRATIONS`: **false**: Disable migrating feature. +- `DISABLE_STARS`: **false**: Disable stars feature. +- `DEFAULT_BRANCH`: **main**: Default branch name of all repositories. +- `ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to adopt unadopted repositories +- `ALLOW_DELETION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to delete unadopted repositories +- `DISABLE_DOWNLOAD_SOURCE_ARCHIVES`: **false**: Don't allow download source archive files from UI +- `ALLOW_FORK_WITHOUT_MAXIMUM_LIMIT`: **true**: Allow fork repositories without maximum number limit + +### Repository - Editor (`repository.editor`) + +- `LINE_WRAP_EXTENSIONS`: **.txt,.md,.markdown,.mdown,.mkd,.livemd,**: List of file extensions for which lines should be wrapped in the Monaco editor. Separate extensions with a comma. To line wrap files without an extension, just put a comma +- `PREVIEWABLE_FILE_MODES`: **markdown**: Valid file modes that have a preview API associated with them, such as `api/v1/markdown`. Separate the values by commas. The preview tab in edit mode won't be displayed if the file extension doesn't match. + +### Repository - Pull Request (`repository.pull-request`) + +- `WORK_IN_PROGRESS_PREFIXES`: **WIP:,\[WIP\]**: List of prefixes used in Pull Request + title to mark them as Work In Progress. These are matched in a case-insensitive manner. +- `CLOSE_KEYWORDS`: **close**, **closes**, **closed**, **fix**, **fixes**, **fixed**, **resolve**, **resolves**, **resolved**: List of + keywords used in Pull Request comments to automatically close a related issue +- `REOPEN_KEYWORDS`: **reopen**, **reopens**, **reopened**: List of keywords used in Pull Request comments to automatically reopen + a related issue +- `DEFAULT_MERGE_STYLE`: **merge**: Set default merge style for repository creating, valid options: `merge`, `rebase`, `rebase-merge`, `squash` +- `DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT`: **50**: In the default merge message for squash commits include at most this many commits. Set to `-1` to include all commits +- `DEFAULT_MERGE_MESSAGE_SIZE`: **5120**: In the default merge message for squash commits limit the size of the commit messages. Set to `-1` to have no limit. Only used if `POPULATE_SQUASH_COMMENT_WITH_COMMIT_MESSAGES` is `true`. +- `DEFAULT_MERGE_MESSAGE_ALL_AUTHORS`: **false**: In the default merge message for squash commits walk all commits to include all authors in the Co-authored-by otherwise just use those in the limited list +- `DEFAULT_MERGE_MESSAGE_MAX_APPROVERS`: **10**: In default merge messages limit the number of approvers listed as `Reviewed-by:`. Set to `-1` to include all. +- `DEFAULT_MERGE_MESSAGE_OFFICIAL_APPROVERS_ONLY`: **true**: In default merge messages only include approvers who are officially allowed to review. +- `POPULATE_SQUASH_COMMENT_WITH_COMMIT_MESSAGES`: **false**: In default squash-merge messages include the commit message of all commits comprising the pull request. +- `ADD_CO_COMMITTER_TRAILERS`: **true**: Add co-authored-by and co-committed-by trailers to merge commit messages if committer does not match author. +- `TEST_CONFLICTING_PATCHES_WITH_GIT_APPLY`: **false**: PR patches are tested using a three-way merge method to discover if there are conflicts. If this setting is set to **true**, conflicting patches will be retested using `git apply` - This was the previous behaviour in 1.18 (and earlier) but is somewhat inefficient. Please report if you find that this setting is required. + +### Repository - Issue (`repository.issue`) + +- `LOCK_REASONS`: **Too heated,Off-topic,Resolved,Spam**: A list of reasons why a Pull Request or Issue can be locked +- `MAX_PINNED`: **3**: Maximum number of pinned Issues per Repo. Set to 0 to disable pinning Issues. + +### Repository - Upload (`repository.upload`) + +- `ENABLED`: **true**: Whether repository file uploads are enabled +- `TEMP_PATH`: **data/tmp/uploads**: Path for uploads (content gets deleted on Gitea restart) +- `ALLOWED_TYPES`: **_empty_**: Comma-separated list of allowed file extensions (`.zip`), mime types (`text/plain`) or wildcard type (`image/*`, `audio/*`, `video/*`). Empty value or `*/*` allows all types. +- `FILE_MAX_SIZE`: **50**: Max size of each file in megabytes. +- `MAX_FILES`: **5**: Max number of files per upload + +### Repository - Release (`repository.release`) + +- `ALLOWED_TYPES`: **_empty_**: Comma-separated list of allowed file extensions (`.zip`), mime types (`text/plain`) or wildcard type (`image/*`, `audio/*`, `video/*`). Empty value or `*/*` allows all types. +- `DEFAULT_PAGING_NUM`: **10**: The default paging number of releases user interface +- For settings related to file attachments on releases, see the `attachment` section. + +### Repository - Signing (`repository.signing`) + +- `SIGNING_KEY`: **default**: \[none, KEYID, default \]: Key to sign with. +- `SIGNING_NAME` & `SIGNING_EMAIL`: if a KEYID is provided as the `SIGNING_KEY`, use these as the Name and Email address of the signer. These should match publicized name and email address for the key. +- `INITIAL_COMMIT`: **always**: \[never, pubkey, twofa, always\]: Sign initial commit. + - `never`: Never sign + - `pubkey`: Only sign if the user has a public key + - `twofa`: Only sign if the user is logged in with twofa + - `always`: Always sign + - Options other than `never` and `always` can be combined as a comma separated list. +- `DEFAULT_TRUST_MODEL`: **collaborator**: \[collaborator, committer, collaboratorcommitter\]: The default trust model used for verifying commits. + - `collaborator`: Trust signatures signed by keys of collaborators. + - `committer`: Trust signatures that match committers (This matches GitHub and will force Gitea signed commits to have Gitea as the committer). + - `collaboratorcommitter`: Trust signatures signed by keys of collaborators which match the committer. +- `WIKI`: **never**: \[never, pubkey, twofa, always, parentsigned\]: Sign commits to wiki. +- `CRUD_ACTIONS`: **pubkey, twofa, parentsigned**: \[never, pubkey, twofa, parentsigned, always\]: Sign CRUD actions. + - Options as above, with the addition of: + - `parentsigned`: Only sign if the parent commit is signed. +- `MERGES`: **pubkey, twofa, basesigned, commitssigned**: \[never, pubkey, twofa, approved, basesigned, commitssigned, always\]: Sign merges. + - `approved`: Only sign approved merges to a protected branch. + - `basesigned`: Only sign if the parent commit in the base repo is signed. + - `headsigned`: Only sign if the head commit in the head branch is signed. + - `commitssigned`: Only sign if all the commits in the head branch to the merge point are signed. + +## Repository - Local (`repository.local`) + +- `LOCAL_COPY_PATH`: **tmp/local-repo**: Path for temporary local repository copies. Defaults to `tmp/local-repo` (content gets deleted on Gitea restart) + +## Repository - MIME type mapping (`repository.mimetype_mapping`) + +Configuration for set the expected MIME type based on file extensions of downloadable files. Configuration presents in key-value pairs and file extensions starts with leading `.`. + +The following configuration set `Content-Type: application/vnd.android.package-archive` header when downloading files with `.apk` file extension. + +```ini +.apk=application/vnd.android.package-archive +``` + +## CORS (`cors`) + +- `ENABLED`: **false**: enable cors headers (disabled by default) +- `ALLOW_DOMAIN`: **\***: list of requesting origins that are allowed, eg: "https://*.example.com" +- `METHODS`: **GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS**: list of methods allowed to request +- `MAX_AGE`: **10m**: max time to cache response +- `ALLOW_CREDENTIALS`: **false**: allow request with credentials +- `HEADERS`: **Content-Type,User-Agent**: additional headers that are permitted in requests +- `X_FRAME_OPTIONS`: **SAMEORIGIN**: Set the `X-Frame-Options` header value. + +## UI (`ui`) + +- `EXPLORE_PAGING_NUM`: **20**: Number of repositories that are shown in one explore page. +- `ISSUE_PAGING_NUM`: **20**: Number of issues that are shown in one page (for all pages that list issues, milestones, projects). +- `MEMBERS_PAGING_NUM`: **20**: Number of members that are shown in organization members. +- `FEED_MAX_COMMIT_NUM`: **5**: Number of maximum commits shown in one activity feed. +- `FEED_PAGING_NUM`: **20**: Number of items that are displayed in home feed. +- `SITEMAP_PAGING_NUM`: **20**: Number of items that are displayed in a single subsitemap. +- `GRAPH_MAX_COMMIT_NUM`: **100**: Number of maximum commits shown in the commit graph. +- `CODE_COMMENT_LINES`: **4**: Number of line of codes shown for a code comment. +- `DEFAULT_THEME`: **auto**: \[auto, gitea, arc-green\]: Set the default theme for the Gitea install. +- `SHOW_USER_EMAIL`: **true**: Whether the email of the user should be shown in the Explore Users page. +- `THEMES`: **auto,gitea,arc-green**: All available themes. Allow users select personalized themes. + regardless of the value of `DEFAULT_THEME`. +- `MAX_DISPLAY_FILE_SIZE`: **8388608**: Max size of files to be displayed (default is 8MiB) +- `AMBIGUOUS_UNICODE_DETECTION`: **true**: Detect ambiguous unicode characters in file contents and show warnings on the UI +- `REACTIONS`: All available reactions users can choose on issues/prs and comments + Values can be emoji alias (:smile:) or a unicode emoji. + For custom reactions, add a tightly cropped square image to public/assets/img/emoji/reaction_name.png +- `REACTION_MAX_USER_NUM`: **10**: Change the number of users that are displayed in reactions tooltip (triggered by mouse hover). +- `CUSTOM_EMOJIS`: **gitea, codeberg, gitlab, git, github, gogs**: Additional Emojis not defined in the utf8 standard. + By default, we support Gitea (:gitea:), to add more copy them to public/assets/img/emoji/emoji_name.png and + add it to this config. +- `DEFAULT_SHOW_FULL_NAME`: **false**: Whether the full name of the users should be shown where possible. If the full name isn't set, the username will be used. +- `SEARCH_REPO_DESCRIPTION`: **true**: Whether to search within description at repository search on explore page. +- `ONLY_SHOW_RELEVANT_REPOS`: **false** Whether to only show relevant repos on the explore page when no keyword is specified and default sorting is used. + A repo is considered irrelevant if it's a fork or if it has no metadata (no description, no icon, no topic). + +### UI - Admin (`ui.admin`) + +- `USER_PAGING_NUM`: **50**: Number of users that are shown in one page. +- `REPO_PAGING_NUM`: **50**: Number of repos that are shown in one page. +- `NOTICE_PAGING_NUM`: **25**: Number of notices that are shown in one page. +- `ORG_PAGING_NUM`: **50**: Number of organizations that are shown in one page. + +### UI - User (`ui.user`) + +- `REPO_PAGING_NUM`: **15**: Number of repos that are shown in one page. + +### UI - Metadata (`ui.meta`) + +- `AUTHOR`: **Gitea - Git with a cup of tea**: Author meta tag of the homepage. +- `DESCRIPTION`: **Gitea (Git with a cup of tea) is a painless self-hosted Git service written in Go**: Description meta tag of the homepage. +- `KEYWORDS`: **go,git,self-hosted,gitea**: Keywords meta tag of the homepage. + +### UI - Notification (`ui.notification`) + +- `MIN_TIMEOUT`: **10s**: These options control how often notification endpoint is polled to update the notification count. On page load the notification count will be checked after `MIN_TIMEOUT`. The timeout will increase to `MAX_TIMEOUT` by `TIMEOUT_STEP` if the notification count is unchanged. Set MIN_TIMEOUT to -1 to turn off. +- `MAX_TIMEOUT`: **60s**. +- `TIMEOUT_STEP`: **10s**. +- `EVENT_SOURCE_UPDATE_TIME`: **10s**: This setting determines how often the database is queried to update notification counts. If the browser client supports `EventSource` and `SharedWorker`, a `SharedWorker` will be used in preference to polling notification endpoint. Set to **-1** to disable the `EventSource`. + +### UI - SVG Images (`ui.svg`) + +- `ENABLE_RENDER`: **true**: Whether to render SVG files as images. If SVG rendering is disabled, SVG files are displayed as text and cannot be embedded in markdown files as images. + +### UI - CSV Files (`ui.csv`) + +- `MAX_FILE_SIZE`: **524288** (512kb): Maximum allowed file size in bytes to render CSV files as table. (Set to 0 for no limit). + +## Markdown (`markdown`) + +- `ENABLE_HARD_LINE_BREAK_IN_COMMENTS`: **true**: Render soft line breaks as hard line breaks in comments, which + means a single newline character between paragraphs will cause a line break and adding + trailing whitespace to paragraphs is not necessary to force a line break. +- `ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS`: **false**: Render soft line breaks as hard line breaks in documents, which + means a single newline character between paragraphs will cause a line break and adding + trailing whitespace to paragraphs is not necessary to force a line break. +- `CUSTOM_URL_SCHEMES`: Use a comma separated list (ftp,git,svn) to indicate additional + URL hyperlinks to be rendered in Markdown. URLs beginning in http and https are + always displayed. If this entry is empty, all URL schemes are allowed +- `FILE_EXTENSIONS`: **.md,.markdown,.mdown,.mkd,.livemd**: List of file extensions that should be rendered/edited as Markdown. Separate the extensions with a comma. To render files without any extension as markdown, just put a comma. +- `ENABLE_MATH`: **true**: Enables detection of `\(...\)`, `\[...\]`, `$...$` and `$$...$$` blocks as math blocks. + +## Server (`server`) + +- `APP_DATA_PATH`: **_`AppWorkPath`_/data**: This is the default root path for storing data. +- `PROTOCOL`: **http**: \[http, https, fcgi, http+unix, fcgi+unix\] +- `USE_PROXY_PROTOCOL`: **false**: Expect PROXY protocol headers on connections +- `PROXY_PROTOCOL_TLS_BRIDGING`: **false**: When protocol is https, expect PROXY protocol headers after TLS negotiation. +- `PROXY_PROTOCOL_HEADER_TIMEOUT`: **5s**: Timeout to wait for PROXY protocol header (set to 0 to have no timeout) +- `PROXY_PROTOCOL_ACCEPT_UNKNOWN`: **false**: Accept PROXY protocol headers with Unknown type. +- `DOMAIN`: **localhost**: Domain name of this server. +- `ROOT_URL`: **%(PROTOCOL)s://%(DOMAIN)s:%(HTTP\_PORT)s/**: + Overwrite the automatically generated public URL. + This is useful if the internal and the external URL don't match (e.g. in Docker). +- `STATIC_URL_PREFIX`: **_empty_**: + Overwrite this option to request static resources from a different URL. + This includes CSS files, images, JS files and web fonts. + Avatar images are dynamic resources and still served by Gitea. + The option can be just a different path, as in `/static`, or another domain, as in `https://cdn.example.com`. + Requests are then made as `%(ROOT_URL)s/static/assets/css/index.css` or `https://cdn.example.com/assets/css/index.css` respectively. + The static files are located in the `public/` directory of the Gitea source repository. + You can proxy the STATIC_URL_PREFIX requests to Gitea server to serve the static + assets, or copy the manually built Gitea assets from `$GITEA_BUILD/public` to + the assets location, eg: `/var/www/assets`, make sure `$STATIC_URL_PREFIX/assets/css/index.css` + points to `/var/www/assets/css/index.css`. + +- `HTTP_ADDR`: **0.0.0.0**: HTTP listen address. + - If `PROTOCOL` is set to `fcgi`, Gitea will listen for FastCGI requests on TCP socket + defined by `HTTP_ADDR` and `HTTP_PORT` configuration settings. + - If `PROTOCOL` is set to `http+unix` or `fcgi+unix`, this should be the name of the Unix socket file to use. Relative paths will be made absolute against the _`AppWorkPath`_. +- `HTTP_PORT`: **3000**: HTTP listen port. + - If `PROTOCOL` is set to `fcgi`, Gitea will listen for FastCGI requests on TCP socket + defined by `HTTP_ADDR` and `HTTP_PORT` configuration settings. +- `UNIX_SOCKET_PERMISSION`: **666**: Permissions for the Unix socket. +- `LOCAL_ROOT_URL`: **%(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/**: Local + (DMZ) URL for Gitea workers (such as SSH update) accessing web service. In + most cases you do not need to change the default value. Alter it only if + your SSH server node is not the same as HTTP node. For different protocol, the default + values are different. If `PROTOCOL` is `http+unix`, the default value is `http://unix/`. + If `PROTOCOL` is `fcgi` or `fcgi+unix`, the default value is `%(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/`. + If listen on `0.0.0.0`, the default value is `%(PROTOCOL)s://localhost:%(HTTP_PORT)s/`, Otherwise the default + value is `%(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/`. +- `LOCAL_USE_PROXY_PROTOCOL`: **%(USE_PROXY_PROTOCOL)s**: When making local connections pass the PROXY protocol header. + This should be set to false if the local connection will go through the proxy. +- `PER_WRITE_TIMEOUT`: **30s**: Timeout for any write to the connection. (Set to -1 to + disable all timeouts.) +- `PER_WRITE_PER_KB_TIMEOUT`: **10s**: Timeout per Kb written to connections. + +- `DISABLE_SSH`: **false**: Disable SSH feature when it's not available. +- `START_SSH_SERVER`: **false**: When enabled, use the built-in SSH server. +- `SSH_SERVER_USE_PROXY_PROTOCOL`: **false**: Expect PROXY protocol header on connections to the built-in SSH Server. +- `BUILTIN_SSH_SERVER_USER`: **%(RUN_USER)s**: Username to use for the built-in SSH Server. +- `SSH_USER`: **%(BUILTIN_SSH_SERVER_USER)s**: SSH username displayed in clone URLs. This is only for people who configure the SSH server themselves; in most cases, you want to leave this blank and modify the `BUILTIN_SSH_SERVER_USER`. +- `SSH_DOMAIN`: **%(DOMAIN)s**: Domain name of this server, used for displayed clone URL. +- `SSH_PORT`: **22**: SSH port displayed in clone URL. +- `SSH_LISTEN_HOST`: **0.0.0.0**: Listen address for the built-in SSH server. +- `SSH_LISTEN_PORT`: **%(SSH\_PORT)s**: Port for the built-in SSH server. +- `SSH_ROOT_PATH`: **~/.ssh**: Root path of SSH directory. +- `SSH_CREATE_AUTHORIZED_KEYS_FILE`: **true**: Gitea will create a authorized_keys file by default when it is not using the internal ssh server. If you intend to use the AuthorizedKeysCommand functionality then you should turn this off. +- `SSH_AUTHORIZED_KEYS_BACKUP`: **false**: Enable SSH Authorized Key Backup when rewriting all keys, default is false. +- `SSH_TRUSTED_USER_CA_KEYS`: **_empty_**: Specifies the public keys of certificate authorities that are trusted to sign user certificates for authentication. Multiple keys should be comma separated. E.g.`ssh- ` or `ssh- , ssh- `. For more information see `TrustedUserCAKeys` in the sshd config man pages. When empty no file will be created and `SSH_AUTHORIZED_PRINCIPALS_ALLOW` will default to `off`. +- `SSH_TRUSTED_USER_CA_KEYS_FILENAME`: **`RUN_USER`/.ssh/gitea-trusted-user-ca-keys.pem**: Absolute path of the `TrustedUserCaKeys` file Gitea will manage. If you're running your own ssh server and you want to use the Gitea managed file you'll also need to modify your sshd_config to point to this file. The official docker image will automatically work without further configuration. +- `SSH_AUTHORIZED_PRINCIPALS_ALLOW`: **off** or **username, email**: \[off, username, email, anything\]: Specify the principals values that users are allowed to use as principal. When set to `anything` no checks are done on the principal string. When set to `off` authorized principal are not allowed to be set. +- `SSH_CREATE_AUTHORIZED_PRINCIPALS_FILE`: **false/true**: Gitea will create a authorized_principals file by default when it is not using the internal ssh server and `SSH_AUTHORIZED_PRINCIPALS_ALLOW` is not `off`. +- `SSH_AUTHORIZED_PRINCIPALS_BACKUP`: **false/true**: Enable SSH Authorized Principals Backup when rewriting all keys, default is true if `SSH_AUTHORIZED_PRINCIPALS_ALLOW` is not `off`. +- `SSH_AUTHORIZED_KEYS_COMMAND_TEMPLATE`: **`{{.AppPath}} --config={{.CustomConf}} serv key-{{.Key.ID}}`**: Set the template for the command to passed on authorized keys. Possible keys are: AppPath, AppWorkPath, CustomConf, CustomPath, Key - where Key is a `models/asymkey.PublicKey` and the others are strings which are shellquoted. +- `SSH_SERVER_CIPHERS`: **chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com**: For the built-in SSH server, choose the ciphers to support for SSH connections, for system SSH this setting has no effect. +- `SSH_SERVER_KEY_EXCHANGES`: **curve25519-sha256, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1**: For the built-in SSH server, choose the key exchange algorithms to support for SSH connections, for system SSH this setting has no effect. +- `SSH_SERVER_MACS`: **hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1**: For the built-in SSH server, choose the MACs to support for SSH connections, for system SSH this setting has no effect +- `SSH_SERVER_HOST_KEYS`: **ssh/gitea.rsa, ssh/gogs.rsa**: For the built-in SSH server, choose the keypairs to offer as the host key. The private key should be at `SSH_SERVER_HOST_KEY` and the public `SSH_SERVER_HOST_KEY.pub`. Relative paths are made absolute relative to the `APP_DATA_PATH`. If no key exists a 4096 bit RSA key will be created for you. +- `SSH_KEY_TEST_PATH`: **/tmp**: Directory to create temporary files in when testing public keys using ssh-keygen, default is the system temporary directory. +- `SSH_KEYGEN_PATH`: **_empty_**: Use `ssh-keygen` to parse public SSH keys. The value is passed to the shell. By default, Gitea does the parsing itself. +- `SSH_EXPOSE_ANONYMOUS`: **false**: Enable exposure of SSH clone URL to anonymous visitors, default is false. +- `SSH_PER_WRITE_TIMEOUT`: **30s**: Timeout for any write to the SSH connections. (Set to + -1 to disable all timeouts.) +- `SSH_PER_WRITE_PER_KB_TIMEOUT`: **10s**: Timeout per Kb written to SSH connections. +- `MINIMUM_KEY_SIZE_CHECK`: **true**: Indicate whether to check minimum key size with corresponding type. + +- `OFFLINE_MODE`: **false**: Disables use of CDN for static files and Gravatar for profile pictures. +- `CERT_FILE`: **https/cert.pem**: Cert file path used for HTTPS. When chaining, the server certificate must come first, then intermediate CA certificates (if any). This is ignored if `ENABLE_ACME=true`. Paths are relative to `CUSTOM_PATH`. +- `KEY_FILE`: **https/key.pem**: Key file path used for HTTPS. This is ignored if `ENABLE_ACME=true`. Paths are relative to `CUSTOM_PATH`. +- `STATIC_ROOT_PATH`: **_`StaticRootPath`_**: Upper level of template and static files path. +- `APP_DATA_PATH`: **data** (**/data/gitea** on docker): Default path for application data. Relative paths will be made absolute against _`AppWorkPath`_. +- `STATIC_CACHE_TIME`: **6h**: Web browser cache time for static resources on `custom/`, `public/` and all uploaded avatars. Note that this cache is disabled when `RUN_MODE` is "dev". +- `ENABLE_GZIP`: **false**: Enable gzip compression for runtime-generated content, static resources excluded. +- `ENABLE_PPROF`: **false**: Application profiling (memory and cpu). For "web" command it listens on `localhost:6060`. For "serv" command it dumps to disk at `PPROF_DATA_PATH` as `(cpuprofile|memprofile)__` +- `PPROF_DATA_PATH`: **_`AppWorkPath`_/data/tmp/pprof**: `PPROF_DATA_PATH`, use an absolute path when you start Gitea as service +- `LANDING_PAGE`: **home**: Landing page for unauthenticated users \[home, explore, organizations, login, **custom**\]. Where custom would instead be any URL such as "/org/repo" or even `https://anotherwebsite.com` +- `LFS_START_SERVER`: **false**: Enables Git LFS support. +- `LFS_CONTENT_PATH`: **%(APP_DATA_PATH)s/lfs**: Default LFS content path. (if it is on local storage.) **DEPRECATED** use settings in `[lfs]`. +- `LFS_JWT_SECRET`: **_empty_**: LFS authentication secret, change this a unique string. +- `LFS_JWT_SECRET_URI`: **_empty_**: Instead of defining LFS_JWT_SECRET in the configuration, this configuration option can be used to give Gitea a path to a file that contains the secret (example value: `file:/etc/gitea/lfs_jwt_secret`) +- `LFS_HTTP_AUTH_EXPIRY`: **24h**: LFS authentication validity period in time.Duration, pushes taking longer than this may fail. +- `LFS_MAX_FILE_SIZE`: **0**: Maximum allowed LFS file size in bytes (Set to 0 for no limit). +- `LFS_LOCKS_PAGING_NUM`: **50**: Maximum number of LFS Locks returned per page. + +- `REDIRECT_OTHER_PORT`: **false**: If true and `PROTOCOL` is https, allows redirecting http requests on `PORT_TO_REDIRECT` to the https port Gitea listens on. +- `REDIRECTOR_USE_PROXY_PROTOCOL`: **%(USE_PROXY_PROTOCOL)s**: expect PROXY protocol header on connections to https redirector. +- `PORT_TO_REDIRECT`: **80**: Port for the http redirection service to listen on. Used when `REDIRECT_OTHER_PORT` is true. +- `SSL_MIN_VERSION`: **TLSv1.2**: Set the minimum version of ssl support. +- `SSL_MAX_VERSION`: **_empty_**: Set the maximum version of ssl support. +- `SSL_CURVE_PREFERENCES`: **X25519,P256**: Set the preferred curves, +- `SSL_CIPHER_SUITES`: **ecdhe_ecdsa_with_aes_256_gcm_sha384,ecdhe_rsa_with_aes_256_gcm_sha384,ecdhe_ecdsa_with_aes_128_gcm_sha256,ecdhe_rsa_with_aes_128_gcm_sha256,ecdhe_ecdsa_with_chacha20_poly1305,ecdhe_rsa_with_chacha20_poly1305**: Set the preferred cipher suites. + - If there is no hardware support for AES suites, by default the ChaCha suites will be preferred over the AES suites. + - supported suites as of Go 1.18 are: + - TLS 1.0 - 1.2 cipher suites + - "rsa_with_rc4_128_sha" + - "rsa_with_3des_ede_cbc_sha" + - "rsa_with_aes_128_cbc_sha" + - "rsa_with_aes_256_cbc_sha" + - "rsa_with_aes_128_cbc_sha256" + - "rsa_with_aes_128_gcm_sha256" + - "rsa_with_aes_256_gcm_sha384" + - "ecdhe_ecdsa_with_rc4_128_sha" + - "ecdhe_ecdsa_with_aes_128_cbc_sha" + - "ecdhe_ecdsa_with_aes_256_cbc_sha" + - "ecdhe_rsa_with_rc4_128_sha" + - "ecdhe_rsa_with_3des_ede_cbc_sha" + - "ecdhe_rsa_with_aes_128_cbc_sha" + - "ecdhe_rsa_with_aes_256_cbc_sha" + - "ecdhe_ecdsa_with_aes_128_cbc_sha256" + - "ecdhe_rsa_with_aes_128_cbc_sha256" + - "ecdhe_rsa_with_aes_128_gcm_sha256" + - "ecdhe_ecdsa_with_aes_128_gcm_sha256" + - "ecdhe_rsa_with_aes_256_gcm_sha384" + - "ecdhe_ecdsa_with_aes_256_gcm_sha384" + - "ecdhe_rsa_with_chacha20_poly1305_sha256" + - "ecdhe_ecdsa_with_chacha20_poly1305_sha256" + - TLS 1.3 cipher suites + - "aes_128_gcm_sha256" + - "aes_256_gcm_sha384" + - "chacha20_poly1305_sha256" + - Aliased names + - "ecdhe_rsa_with_chacha20_poly1305" is an alias for "ecdhe_rsa_with_chacha20_poly1305_sha256" + - "ecdhe_ecdsa_with_chacha20_poly1305" is alias for "ecdhe_ecdsa_with_chacha20_poly1305_sha256" +- `ENABLE_ACME`: **false**: Flag to enable automatic certificate management via an ACME capable Certificate Authority (CA) server (default: Lets Encrypt). If enabled, `CERT_FILE` and `KEY_FILE` are ignored, and the CA must resolve `DOMAIN` to this gitea server. Ensure that DNS records are set and either port `80` or port `443` are accessible by the CA server (the public internet by default), and redirected to the appropriate ports `PORT_TO_REDIRECT` or `HTTP_PORT` respectively. +- `ACME_URL`: **_empty_**: The CA's ACME directory URL, e.g. for a self-hosted [smallstep CA server](https://github.com/smallstep/certificates), it can look like `https://ca.example.com/acme/acme/directory`. If left empty, it defaults to using Let's Encerypt's production CA (check `LETSENCRYPT_ACCEPTTOS` as well). +- `ACME_ACCEPTTOS`: **false**: This is an explicit check that you accept the terms of service of the ACME provider. The default is Lets Encrypt [terms of service](https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf). +- `ACME_DIRECTORY`: **https**: Directory that the certificate manager will use to cache information such as certs and private keys. +- `ACME_EMAIL`: **_empty_**: Email used for the ACME registration. Usually it is to notify about problems with issued certificates. +- `ACME_CA_ROOT`: **_empty_**: The CA's root certificate. If left empty, it defaults to using the system's trust chain. +- `ALLOW_GRACEFUL_RESTARTS`: **true**: Perform a graceful restart on SIGHUP +- `GRACEFUL_HAMMER_TIME`: **60s**: After a restart the parent process will stop accepting new connections and will allow requests to finish before stopping. Shutdown will be forced if it takes longer than this time. +- `STARTUP_TIMEOUT`: **0**: Shutsdown the server if startup takes longer than the provided time. On Windows setting this sends a waithint to the SVC host to tell the SVC host startup may take some time. Please note startup is determined by the opening of the listeners - HTTP/HTTPS/SSH. Indexers may take longer to startup and can have their own timeouts. + +## Database (`database`) + +- `DB_TYPE`: **mysql**: The database type in use \[mysql, postgres, mssql, sqlite3\]. +- `HOST`: **127.0.0.1:3306**: Database host address and port or absolute path for unix socket \[mysql, postgres[^1]\] (ex: /var/run/mysqld/mysqld.sock). +- `NAME`: **gitea**: Database name. +- `USER`: **root**: Database username. +- `PASSWD`: **_empty_**: Database user password. Use \`your password\` or """your password""" for quoting if you use special characters in the password. +- `SCHEMA`: **_empty_**: For PostgreSQL only, schema to use if different from "public". The schema must exist beforehand, + the user must have creation privileges on it, and the user search path must be set to the look into the schema first + (e.g. `ALTER USER user SET SEARCH_PATH = schema_name,"$user",public;`). +- `SSL_MODE`: **disable**: SSL/TLS encryption mode for connecting to the database. This option is only applied for PostgreSQL and MySQL. + - Valid values for MySQL: + - `true`: Enable TLS with verification of the database server certificate against its root certificate. When selecting this option make sure that the root certificate required to validate the database server certificate (e.g. the CA certificate) is on the system certificate store of both the database and Gitea servers. See your system documentation for instructions on how to add a CA certificate to the certificate store. + - `false`: Disable TLS. + - `disable`: Alias for `false`, for compatibility with PostgreSQL. + - `skip-verify`: Enable TLS without database server certificate verification. Use this option if you have self-signed or invalid certificate on the database server. + - `prefer`: Enable TLS with fallback to non-TLS connection. + - Valid values for PostgreSQL: + - `disable`: Disable TLS. + - `require`: Enable TLS without any verifications. + - `verify-ca`: Enable TLS with verification of the database server certificate against its root certificate. + - `verify-full`: Enable TLS and verify the database server name matches the given certificate in either the `Common Name` or `Subject Alternative Name` fields. +- `SQLITE_TIMEOUT`: **500**: Query timeout for SQLite3 only. +- `SQLITE_JOURNAL_MODE`: **""**: Change journal mode for SQlite3. Can be used to enable [WAL mode](https://www.sqlite.org/wal.html) when high load causes write congestion. See [SQlite3 docs](https://www.sqlite.org/pragma.html#pragma_journal_mode) for possible values. Defaults to the default for the database file, often DELETE. +- `ITERATE_BUFFER_SIZE`: **50**: Internal buffer size for iterating. +- `PATH`: **data/gitea.db**: For SQLite3 only, the database file path. +- `LOG_SQL`: **false**: Log the executed SQL. +- `DB_RETRIES`: **10**: How many ORM init / DB connect attempts allowed. +- `DB_RETRY_BACKOFF`: **3s**: time.Duration to wait before trying another ORM init / DB connect attempt, if failure occurred. +- `MAX_OPEN_CONNS` **0**: Database maximum open connections - default is 0, meaning there is no limit. +- `MAX_IDLE_CONNS` **2**: Max idle database connections on connection pool, default is 2 - this will be capped to `MAX_OPEN_CONNS`. +- `CONN_MAX_LIFETIME` **0 or 3s**: Sets the maximum amount of time a DB connection may be reused - default is 0, meaning there is no limit (except on MySQL where it is 3s - see #6804 & #7071). +- `AUTO_MIGRATION` **true**: Whether execute database models migrations automatically. + +[^1]: It may be necessary to specify a hostport even when listening on a unix socket, as the port is part of the socket name. see [#24552](https://github.com/go-gitea/gitea/issues/24552#issuecomment-1681649367) for additional details. + +Please see #8540 & #8273 for further discussion of the appropriate values for `MAX_OPEN_CONNS`, `MAX_IDLE_CONNS` & `CONN_MAX_LIFETIME` and their +relation to port exhaustion. + +## Indexer (`indexer`) + +- `ISSUE_INDEXER_TYPE`: **bleve**: Issue indexer type, currently supported: `bleve`, `db`, `elasticsearch` or `meilisearch`. +- `ISSUE_INDEXER_CONN_STR`: ****: Issue indexer connection string, available when ISSUE_INDEXER_TYPE is elasticsearch (e.g. http://elastic:password@localhost:9200) or meilisearch (e.g. http://:apikey@localhost:7700) +- `ISSUE_INDEXER_NAME`: **gitea_issues**: Issue indexer name, available when ISSUE_INDEXER_TYPE is elasticsearch or meilisearch. +- `ISSUE_INDEXER_PATH`: **indexers/issues.bleve**: Index file used for issue search; available when ISSUE_INDEXER_TYPE is bleve and elasticsearch. Relative paths will be made absolute against _`AppWorkPath`_. + +- `REPO_INDEXER_ENABLED`: **false**: Enables code search (uses a lot of disk space, about 6 times more than the repository size). +- `REPO_INDEXER_REPO_TYPES`: **sources,forks,mirrors,templates**: Repo indexer units. The items to index could be `sources`, `forks`, `mirrors`, `templates` or any combination of them separated by a comma. If empty then it defaults to `sources` only, as if you'd like to disable fully please see `REPO_INDEXER_ENABLED`. +- `REPO_INDEXER_TYPE`: **bleve**: Code search engine type, could be `bleve` or `elasticsearch`. +- `REPO_INDEXER_PATH`: **indexers/repos.bleve**: Index file used for code search. +- `REPO_INDEXER_CONN_STR`: ****: Code indexer connection string, available when `REPO_INDEXER_TYPE` is elasticsearch. i.e. http://elastic:password@localhost:9200 +- `REPO_INDEXER_NAME`: **gitea_codes**: Code indexer name, available when `REPO_INDEXER_TYPE` is elasticsearch + +- `REPO_INDEXER_INCLUDE`: **empty**: A comma separated list of glob patterns (see https://github.com/gobwas/glob) to **include** in the index. Use `**.txt` to match any files with .txt extension. An empty list means include all files. +- `REPO_INDEXER_EXCLUDE`: **empty**: A comma separated list of glob patterns (see https://github.com/gobwas/glob) to **exclude** from the index. Files that match this list will not be indexed, even if they match in `REPO_INDEXER_INCLUDE`. +- `REPO_INDEXER_EXCLUDE_VENDORED`: **true**: Exclude vendored files from index. +- `MAX_FILE_SIZE`: **1048576**: Maximum size in bytes of files to be indexed. +- `STARTUP_TIMEOUT`: **30s**: If the indexer takes longer than this timeout to start - fail. (This timeout will be added to the hammer time above for child processes - as bleve will not start until the previous parent is shutdown.) Set to -1 to never timeout. + +## Queue (`queue` and `queue.*`) + +Configuration at `[queue]` will set defaults for queues with overrides for individual queues at `[queue.*]`. (However see below.) + +- `TYPE`: **level**: General queue type, currently support: `level` (uses a LevelDB internally), `channel`, `redis`, `dummy`. Invalid types are treated as `level`. +- `DATADIR`: **queues/common**: Base DataDir for storing level queues. `DATADIR` for individual queues can be set in `queue.name` sections. Relative paths will be made absolute against `%(APP_DATA_PATH)s`. +- `LENGTH`: **100000**: Maximal queue size before channel queues block +- `BATCH_LENGTH`: **20**: Batch data before passing to the handler +- `CONN_STR`: **redis://127.0.0.1:6379/0**: Connection string for the redis queue type. For `redis-cluster` use `redis+cluster://127.0.0.1:6379/0`. Options can be set using query params. Similarly, LevelDB options can also be set using: **leveldb://relative/path?option=value** or **leveldb:///absolute/path?option=value**, and will override `DATADIR` +- `QUEUE_NAME`: **_queue**: The suffix for default redis and disk queue name. Individual queues will default to **`name`**`QUEUE_NAME` but can be overridden in the specific `queue.name` section. +- `SET_NAME`: **_unique**: The suffix that will be added to the default redis and disk queue `set` name for unique queues. Individual queues will default to **`name`**`QUEUE_NAME`_`SET_NAME`_ but can be overridden in the specific `queue.name` section. +- `MAX_WORKERS`: **(dynamic)**: Maximum number of worker go-routines for the queue. Default value is "CpuNum/2" clipped to between 1 and 10. + +Gitea creates the following non-unique queues: + +- `code_indexer` +- `issue_indexer` +- `notification-service` +- `task` +- `mail` +- `push_update` + +And the following unique queues: + +- `repo_stats_update` +- `repo-archive` +- `mirror` +- `pr_patch_checker` + +## Admin (`admin`) + +- `DEFAULT_EMAIL_NOTIFICATIONS`: **enabled**: Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled +- `DISABLE_REGULAR_ORG_CREATION`: **false**: Disallow regular (non-admin) users from creating organizations. + +## Security (`security`) + +- `INSTALL_LOCK`: **false**: Controls access to the installation page. When set to "true", the installation page is not accessible. +- `SECRET_KEY`: **\**: Global secret key. This key is VERY IMPORTANT, if you lost it, the data encrypted by it (like 2FA secret) can't be decrypted anymore. +- `SECRET_KEY_URI`: **_empty_**: Instead of defining SECRET_KEY, this option can be used to use the key stored in a file (example value: `file:/etc/gitea/secret_key`). It shouldn't be lost like SECRET_KEY. +- `LOGIN_REMEMBER_DAYS`: **7**: Cookie lifetime, in days. +- `COOKIE_USERNAME`: **gitea\_awesome**: Name of the cookie used to store the current username. +- `COOKIE_REMEMBER_NAME`: **gitea\_incredible**: Name of cookie used to store authentication + information. +- `REVERSE_PROXY_AUTHENTICATION_USER`: **X-WEBAUTH-USER**: Header name for reverse proxy + authentication. +- `REVERSE_PROXY_AUTHENTICATION_EMAIL`: **X-WEBAUTH-EMAIL**: Header name for reverse proxy + authentication provided email. +- `REVERSE_PROXY_AUTHENTICATION_FULL_NAME`: **X-WEBAUTH-FULLNAME**: Header name for reverse proxy + authentication provided full name. +- `REVERSE_PROXY_LIMIT`: **1**: Interpret X-Forwarded-For header or the X-Real-IP header and set this as the remote IP for the request. + Number of trusted proxy count. Set to zero to not use these headers. +- `REVERSE_PROXY_TRUSTED_PROXIES`: **127.0.0.0/8,::1/128**: List of IP addresses and networks separated by comma of trusted proxy servers. Use `*` to trust all. +- `DISABLE_GIT_HOOKS`: **true**: Set to `false` to enable users with Git Hook privilege to create custom Git Hooks. + WARNING: Custom Git Hooks can be used to perform arbitrary code execution on the host operating system. + This enables the users to access and modify this config file and the Gitea database and interrupt the Gitea service. + By modifying the Gitea database, users can gain Gitea administrator privileges. + It also enables them to access other resources available to the user on the operating system that is running the + Gitea instance and perform arbitrary actions in the name of the Gitea OS user. + This maybe harmful to you website or your operating system. + Setting this to true does not change existing hooks in git repos; adjust it before if necessary. +- `DISABLE_WEBHOOKS`: **false**: Set to `true` to disable webhooks feature. +- `ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET`: **true**: Set to `false` to allow local users to push to gitea-repositories without setting up the Gitea environment. This is not recommended and if you want local users to push to Gitea repositories you should set the environment appropriately. +- `IMPORT_LOCAL_PATHS`: **false**: Set to `false` to prevent all users (including admin) from importing local path on server. +- `INTERNAL_TOKEN`: **\**: Secret used to validate communication within Gitea binary. +- `INTERNAL_TOKEN_URI`: **_empty_**: Instead of defining INTERNAL_TOKEN in the configuration, this configuration option can be used to give Gitea a path to a file that contains the internal token (example value: `file:/etc/gitea/internal_token`) +- `PASSWORD_HASH_ALGO`: **pbkdf2**: The hash algorithm to use \[argon2, pbkdf2, pbkdf2_v1, pbkdf2_hi, scrypt, bcrypt\], argon2 and scrypt will spend significant amounts of memory. + - Note: The default parameters for `pbkdf2` hashing have changed - the previous settings are available as `pbkdf2_v1` but are not recommended. + - The hash functions may be tuned by using `$` after the algorithm: + - `argon2$