Commit Graph

2967 Commits

Author SHA1 Message Date
GiteaBot
ce6699db01 [skip ci] Updated translations via Crowdin 2025-04-30 00:35:28 +00:00
wxiaoguang
0148d03f21
Enforce two-factor auth (2FA: TOTP or WebAuthn) (#34187)
Fix #880

Design:

1. A global setting `security.TWO_FACTOR_AUTH`.
* To support org-level config, we need to introduce a better "owner
setting" system first (in the future)
2. A user without 2FA can login and may explore, but can NOT read or
write to any repositories via API/web.
3. Keep things as simple as possible.
* This option only aggressively suggest users to enable their 2FA at the
moment, it does NOT guarantee that users must have 2FA before all other
operations, it should be good enough for real world use cases.
* Some details and tests could be improved in the future since this
change only adds a check and seems won't affect too much.

---------

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
2025-04-28 15:31:59 -07:00
GiteaBot
bf8f111f53 [skip ci] Updated translations via Crowdin 2025-04-27 00:38:03 +00:00
GiteaBot
8cea1aeea5 [skip ci] Updated translations via Crowdin 2025-04-25 00:35:36 +00:00
Brecht Van Lommel
a9343896f4
Option to delay conflict checking of old pull requests until page view (#27779)
`[repository.pull-request] DELAY_CHECK_FOR_INACTIVE_DAYS` is a new
setting to delay the mergeable check for pull requests that have been
inactive for the specified number of days.

This avoids potentially long delays for big repositories with many pull
requests. and reduces system load overall when there are many
repositories or pull requests.

When viewing the PR, checking will start immediately and the PR merge
box will automatically reload when complete. Accessing the PR through
the API will also start checking immediately.

The default value of `7` provides a balance between system load, and
keeping behavior similar to what it was before both for users and API
access. With `0` all conflict checking will be delayed, while `-1`
always checks immediately to restore the previous behavior.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-24 19:26:57 +00:00
Kerwin Bryant
c2c04ffff7
Add fullscreen mode as a more efficient operation way to view projects (#34081)
Maybe fix #33482, maybe fix #34015

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-23 13:42:22 +08:00
GiteaBot
04fab1818b [skip ci] Updated translations via Crowdin 2025-04-23 00:34:59 +00:00
GiteaBot
310fdeb453 [skip ci] Updated translations via Crowdin 2025-04-22 00:35:41 +00:00
YaFou
e947f309b1
Add API routes to lock and unlock issues (#34165)
This pull request adds a GitHub-compatible API endpoint to lock and
unlock an issue.

The following routes exist now:
- `PUT /api/v1/repos/{owner}/{repo}/issues/{id}/lock` to lock an issue
- `DELETE /api/v1/repos/{owner}/{repo}/issues/{id}/lock` to unlock an issue

Fixes #33677
Fixes #20012

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-21 00:43:43 +00:00
GiteaBot
8b7c0d8f8d [skip ci] Updated translations via Crowdin 2025-04-19 00:32:56 +00:00
GiteaBot
f1cd90d3bd [skip ci] Updated translations via Crowdin 2025-04-16 00:35:25 +00:00
Meng Zhuo
921d3a394d
feat: add riscv64 support (#34199) 2025-04-14 16:32:54 +00:00
Rowan Bohde
c57304ac3f
Add middleware for request prioritization (#33951)
This adds a middleware for overload protection that is intended to help protect against malicious scrapers.
It does this via [`codel`](https://github.com/bohde/codel), which will perform the following:

1. Limit the number of in-flight requests to some user-defined max
2. When in-flight requests have reached their begin queuing requests.
    Logged-in requests having priority above logged-out requests
3. Once a request has been queued for too long,
    it has a probabilistic chance to be rejected based on how overloaded the entire system is.

When a server experiences more traffic than it can handle,
this keeps latency low for logged-in users and rejects just
enough requests from logged-out users to not overload the service.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: Giteabot <teabot@gitea.io>
2025-04-14 16:25:48 +02:00
GiteaBot
7a587bc2d3 [skip ci] Updated translations via Crowdin 2025-04-12 00:33:41 +00:00
GiteaBot
d725b78824 [skip ci] Updated translations via Crowdin 2025-04-11 00:34:55 +00:00
Thomas E Lackey
fa49cd719f
feat: Add sorting by exclusive labels (issue priority) (#33206)
Fix #2616

This PR adds a new sort option for exclusive labels.

For exclusive labels, a new property is exposed called "order", while in
the UI options are populated automatically in the `Sort` column (see
screenshot below) for each exclusive label scope.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-10 17:18:07 +00:00
GiteaBot
c0898f7ed9 [skip ci] Updated translations via Crowdin 2025-04-09 00:34:55 +00:00
Lunny Xiao
32b97b3ce8
Uniform all temporary directories and allow customizing temp path (#32352)
This PR uniform all temporary directory usage so that it will be easier
to manage.

Relate to #31792 

- [x] Added a new setting to allow users to configure the global
temporary directory.
- [x] Move all temporary files and directories to be placed under
os.Temp()/gitea.
- [x] `setting.Repository.Local.LocalCopyPath` now will be
`setting.TempPath/local-repo` and the customized path is removed.
```diff
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;[repository.local]
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Path for local repository copy. Defaults to  TEMP_PATH + `local-repo`, this is deprecated and cannot be changed
-;LOCAL_COPY_PATH = local-repo
```

- [x] `setting.Repository.Upload.TempPath` now will be
`settting.TempPath/uploads` and the customized path is removed.
```diff
;[repository.upload]
-;;
-;; Path for uploads. Defaults to TEMP_PATH + `uploads`
-;TEMP_PATH = uploads
```

- [x] `setting.Packages.ChunkedUploadPath` now will be
`settting.TempPath/package-upload` and the customized path is removed.
```diff
;[packages]
-;;
-;; Path for chunked uploads. Defaults it's `package-upload` under `TEMP_PATH` unless it's an absolute path.
-;CHUNKED_UPLOAD_PATH = package-upload
```

- [x] `setting.SSH.KeyTestPath` now will be
`settting.TempPath/ssh_key_test` and the customized path is removed.
```diff
[server]
-;;
-;; Directory to create temporary files in when testing public keys using ssh-keygen,
-;; default is the system temporary directory.
-;SSH_KEY_TEST_PATH =
```

TODO:
- [ ] setting.PprofDataPath haven't been changed because it may need to
be kept until somebody read it but temp path may be clean up any time.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-04-08 16:15:28 +00:00
silverwind
90b509aafb
Update JS and PY deps (#34143)
- Update selected dependencies.
- Ran `make svg && git add --all`.
- Tested mermaid and swagger.
- Mark `fileicon` assets as generated so they don't spam the diff.
- Webpack is not upgraded because it has some regression.
2025-04-07 21:42:32 -07:00
GiteaBot
8ca51abadd [skip ci] Updated translations via Crowdin 2025-04-08 00:34:12 +00:00
GiteaBot
e8b54d9e44 [skip ci] Updated translations via Crowdin 2025-04-04 00:33:58 +00:00
wxiaoguang
6ed1b26c58
Do not show 500 error when default branch doesn't exist (#34096)
Fix #34090
2025-04-01 21:39:00 -07:00
GiteaBot
e2ac789b49 [skip ci] Updated translations via Crowdin 2025-04-02 00:35:16 +00:00
Håkon Harnes
dcf94c9e1b
fix(i18n): clarify ownership in password change error messages (#34092)
This PR updates the English localization messages
`password_username_disabled` and `password_full_name_disabled` to
replace "their" with "your", making it clear that the messages refer to
the currently signed-in user.
2025-04-01 21:54:13 +08:00
GiteaBot
d54418a7d3 [skip ci] Updated translations via Crowdin 2025-04-01 00:39:56 +00:00
Simon Priet
342432e52a
fix(#34076):replace assgniee translation key (#34077)
Fix the typo on the `filter_assginee_no_assigne` key used in
translations.

The typo itself doesn't produce a bug (as it's there both on the code
and on the locales)

Side Note: Github UI is not the best to bulk change this :/ Squashing
commits on the PR should be adequate.

Closes #34076 .

---------

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
2025-03-31 19:11:15 +00:00
GiteaBot
2f43544c01 [skip ci] Updated translations via Crowdin 2025-03-31 00:36:40 +00:00
GiteaBot
0b847f4584 [skip ci] Updated translations via Crowdin 2025-03-30 00:37:48 +00:00
yp05327
5023238088
Add descriptions for private repo public access settings and improve the UI (#34057)
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-03-29 21:24:27 +08:00
wxiaoguang
cddd19efc8
Add anonymous access support for private/unlisted repositories (#34051)
Follow #33127

Fix #8649, fix #639

This is a complete solution. A repo unit could be set to:

* Anonymous read (non-signed-in user)
* Everyone read (signed-in user)
* Everyone write (wiki-only)
2025-03-29 13:26:41 +08:00
GiteaBot
3c95b0758f [skip ci] Updated translations via Crowdin 2025-03-27 00:33:53 +00:00
GiteaBot
536f4c6de8 [skip ci] Updated translations via Crowdin 2025-03-25 00:34:21 +00:00
GiteaBot
08510adefe [skip ci] Updated translations via Crowdin 2025-03-24 00:35:25 +00:00
GiteaBot
0fee4f1392 [skip ci] Updated translations via Crowdin 2025-03-23 00:37:07 +00:00
wxiaoguang
e1bba9c1a2
Improve oauth2 error handling (#33969)
Show the callback error to end users, it should be safe.
Fix #33967
2025-03-22 10:15:45 +08:00
GiteaBot
1c5c13a442 [skip ci] Updated translations via Crowdin 2025-03-22 00:33:13 +00:00
Andreas Svanberg
0da7318cf3
Allow filtering issues by any assignee (#33343)
This is the opposite of the "No assignee" filter, it will match all
issues that have at least one assignee.

Before
![Before
change](https://github.com/user-attachments/assets/4aea194b-9add-4a84-8d6b-61bfd8d9e58e)

After
![After change with any
filter](https://github.com/user-attachments/assets/99f1205d-ba9f-4a0a-a60b-cc1a0c0823fe)

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-03-21 04:25:36 +00:00
GiteaBot
39fc2e7285 [skip ci] Updated translations via Crowdin 2025-03-19 00:33:36 +00:00
GiteaBot
1b4adc0255 [skip ci] Updated translations via Crowdin 2025-03-18 00:33:31 +00:00
John Smith
8f051d598c
Added Description Field for Secrets and Variables (#33526)
Fixes #33484

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-03-17 19:24:54 +00:00
GiteaBot
9ebae4a2aa [skip ci] Updated translations via Crowdin 2025-03-17 00:35:08 +00:00
GiteaBot
f11ac6bf3c [skip ci] Updated translations via Crowdin 2025-03-16 00:36:54 +00:00
Lunny Xiao
10513df1bf
Add missing translation (#33900) 2025-03-15 18:55:58 +00:00
GiteaBot
926f0a19be [skip ci] Updated translations via Crowdin 2025-03-15 00:33:24 +00:00
wxiaoguang
b094f9b75d
Improve repo commit view (#33877)
Fix #24623

Major changes:

1. Redirect `/owner/repo/blob/*` requests to `/owner/repo/src/commit/*`
(like GitHub)
2. Add a "view file diff" link (see screenshot below)
3. Refactor "AssertHTMLElement" to generic, now we can accurately assert
existence or number.
4. Add more tests

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: delvh <dev.lh@web.de>
2025-03-14 07:45:11 +00:00
GiteaBot
de2d472d90 [skip ci] Updated translations via Crowdin 2025-03-14 00:33:05 +00:00
wxiaoguang
403775e74e
Improve issue & code search (#33860)
Each "indexer" should provide the "search modes" they support by
themselves. And we need to remove the "fuzzy" search for code.
2025-03-13 11:07:48 +08:00
GiteaBot
cd10456664 [skip ci] Updated translations via Crowdin 2025-03-13 00:33:50 +00:00
ChristopherHX
651ef66966
Add workflow_job webhook (#33694)
Provide external Integration information about the Queue lossly based on
https://docs.github.com/en/webhooks/webhook-events-and-payloads?actionType=completed#workflow_job

Naming conflicts between GitHub & Gitea are here, Blocked => Waiting,
Waiting => Queued

Rationale Enhancement for ephemeral runners management #33570
2025-03-11 10:40:38 -07:00
wxiaoguang
f61f30153b
Fix file icon mapping (#33855)
Use the file extension mapping from VSCode's extensions.
Otherwise js/ts/vba/... files won't get correct icons.
2025-03-11 21:06:59 +08:00
wxiaoguang
657239b480
Fix material icon & diff highlight (#33844) 2025-03-10 22:34:48 +08:00
wxiaoguang
34e5df6d30
Add material icons for file list (#33837) 2025-03-10 15:57:17 +08:00
GiteaBot
31ddbe1444 [skip ci] Updated translations via Crowdin 2025-03-10 00:29:01 +00:00
wxiaoguang
7290bfaccb
Only keep popular licenses (#33832)
Fix #33467
2025-03-10 06:40:37 +08:00
GiteaBot
b0ee340969 [skip ci] Updated translations via Crowdin 2025-03-06 00:32:55 +00:00
GiteaBot
b9913d9568 [skip ci] Updated translations via Crowdin 2025-03-05 00:33:24 +00:00
wxiaoguang
75e85c25c1
Refactor repo-issue.ts (#33784)
And remove jQuery
2025-03-04 17:58:17 +00:00
GiteaBot
f3ada61097 [skip ci] Updated translations via Crowdin 2025-03-01 00:36:23 +00:00
Alexander McRae
aba96f65cd
Use git diff-tree for DiffFileTree on diff pages (#33514)
Modify Diff View FileTree to show all files

## Changes

* removes Show Status button on diff
* uses `git diff-tree` to generate the file tree for the diff
* doesn't reload the diff tree each time we load more files in the
preview
* selecting and unloaded file will keep loading until that file is
loaded
* removes `DiffFileList.vue` and "Show Stats" in diff options

## Open Questions

* selecting and unloaded file will keep loading until that file is
loaded. Is this behaviour okay? It matches what github does.

### Demo

In this demo I set `git.MAX_GIT_DIFF_FILES=1` in my `app.ini` to
demonstrate a worst case example. In most cases the behaviour isn't
nearly as jarring as we load a bunch of files at a time.


https://github.com/user-attachments/assets/72f29663-d6fc-472d-94fa-7fb5950c2836

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-02-28 00:58:25 +00:00
GiteaBot
7a8eed13b9 [skip ci] Updated translations via Crowdin 2025-02-28 00:32:56 +00:00
Guillaume
303af554c9
Improve "generate new access token" form (#33730)
Fix: https://github.com/go-gitea/gitea/issues/33519

As discussed in [PR
#33614](https://github.com/go-gitea/gitea/pull/33614), the
ScopedAccessTokenSelector Vue component is not particularly useful.

This PR removes the component and reverts to using HTML templates. It
also introduces some (hopefully) useful refactoring.

The Vue component was causing the UX bug reported in the linked issue.
Required form fields are now properly working, as expected (see
screenshot).

![Screenshot from 2025-02-25
22-00-28](https://github.com/user-attachments/assets/41167854-0718-48b0-a3ee-75ca3a7b8b20)

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-02-27 19:40:12 +00:00
GiteaBot
0e477b590d [skip ci] Updated translations via Crowdin 2025-02-27 00:32:24 +00:00
GiteaBot
6c5951dabd [skip ci] Updated translations via Crowdin 2025-02-26 00:32:38 +00:00
GiteaBot
38ccc8e3e4 [skip ci] Updated translations via Crowdin 2025-02-25 00:35:17 +00:00
Kerwin Bryant
2cd2ae07a7
Add No Results Prompt Message on Issue List Page (#33699) 2025-02-24 18:24:56 +00:00
GiteaBot
9e75c54559 [skip ci] Updated translations via Crowdin 2025-02-23 00:34:45 +00:00
GiteaBot
21af8150b7 [skip ci] Updated translations via Crowdin 2025-02-20 00:32:10 +00:00
metiftikci
84d2159ef6
fix: add missing locale (#33641)
this removed in #23113 but still using in `head_navbar.tmpl`
2025-02-18 16:29:17 -08:00
GiteaBot
50a5d6bf5d [skip ci] Updated translations via Crowdin 2025-02-17 00:33:47 +00:00
GiteaBot
fc1b383da9 [skip ci] Updated translations via Crowdin 2025-02-16 00:34:48 +00:00
GiteaBot
42d817e814 [skip ci] Updated translations via Crowdin 2025-02-13 00:31:39 +00:00
GiteaBot
217ffe5492 [skip ci] Updated translations via Crowdin 2025-02-11 00:32:23 +00:00
Kerwin Bryant
085f273d19
Optimize the dashboard (#32990)
before:

![image](https://github.com/user-attachments/assets/d0b432e4-a521-4540-a489-d18b9c265674)

after:

![image](https://github.com/user-attachments/assets/dbb8b387-d150-41e2-b12b-f9d8450e36d7)
-----

![image](https://github.com/user-attachments/assets/40dcd71e-344b-4043-9811-77227c71aed9)
-----

Optimize the dashboard by adding welcoming messages or quick action
entry points (such as adding a new repository or organization) to ensure
that new users are not greeted by a blank page upon logging in.

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-02-11 01:24:34 +08:00
GiteaBot
dbc18f400a [skip ci] Updated translations via Crowdin 2025-02-07 00:31:35 +00:00
GiteaBot
943cc4f989 [skip ci] Updated translations via Crowdin 2025-02-06 00:31:49 +00:00
GiteaBot
a6819570be [skip ci] Updated translations via Crowdin 2025-02-05 00:32:05 +00:00
Lunny Xiao
a4676db7dd
Fix commit status events (#33320)
Fix #32873 
Fix #33201 
~Fix #33244~
~Fix #33302~

depends on ~#33396~

A part of this PR should be backported to v1.23 manually.
2025-02-04 03:25:59 +00:00
GiteaBot
3c46cd6aae [skip ci] Updated translations via Crowdin 2025-02-04 00:31:03 +00:00
GiteaBot
ed84f3737a [skip ci] Updated licenses and gitignores 2025-02-03 00:32:15 +00:00
K Kovacs
34692a20b1
Worktime tracking for the organization level (#19808)
Dear Gitea team,

first of all, thanks for the great work you're doing with this project.

I'm planning to introduce Gitea at a client site, and noticed that while
there is time recording, there are no project-manager-friendly reports
to actually make use of that data, as were also mentioned by others in
#4870 #8684 and #13531.

Since I had a little time last weekend, I had put together something
that I hope to be a useful contribution to this great project (while of
course useful for me too).

This PR adds a new "Worktime" tab to the Organisation level. There is a
date range selector (by default set to the current month), and there are
three possible views:

- by repository,
- by milestone, and
- by team member.

Happy to receive any feedback!

There are several possible future improvements of course (predefined
date ranges, charts, a member time sheet, matrix of repos/members, etc)
but I hope that even in this relatively simple state this would be
useful to lots of people.

<img width="1161" alt="Screen Shot 2022-05-25 at 22 12 58"
src="https://user-images.githubusercontent.com/118010/170366976-af00c7af-c4f3-4117-86d7-00356d6797a5.png">

Keep up the good work!

Kristof

---------

Co-authored-by: user <user@kk-git1>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2025-02-03 01:51:12 +08:00
GiteaBot
9cd88ef8c7 [skip ci] Updated translations via Crowdin 2025-02-02 00:33:31 +00:00
GiteaBot
5b83203f37 [skip ci] Updated translations via Crowdin 2025-02-01 00:33:46 +00:00
wxiaoguang
256b94e9e9
Support choose email when creating a commit via web UI (#33432)
Initial PR for #24469
2025-01-30 01:24:57 +00:00
GiteaBot
a89c735303 [skip ci] Updated translations via Crowdin 2025-01-29 00:31:19 +00:00
GiteaBot
121e4c9624 [skip ci] Updated translations via Crowdin 2025-01-28 00:31:19 +00:00
GiteaBot
fae69bc6d4 [skip ci] Updated translations via Crowdin 2025-01-27 00:32:12 +00:00
GiteaBot
2cc65e356e [skip ci] Updated translations via Crowdin 2025-01-26 00:32:05 +00:00
GiteaBot
3e1b63f75b [skip ci] Updated translations via Crowdin 2025-01-24 00:31:03 +00:00
GiteaBot
340d9ec42d [skip ci] Updated translations via Crowdin 2025-01-23 00:31:02 +00:00
GiteaBot
3682231f17 [skip ci] Updated translations via Crowdin 2025-01-22 00:31:50 +00:00
wxiaoguang
7069369e03
Support performance trace (#32973)
1. Add a OpenTelemetry-like shim-layer to collect traces
2. Add a simple builtin trace collector and exporter, end users could
download the diagnosis report to get the traces.

This PR's design is quite lightweight, no hard-dependency, and it is
easy to improve or remove. We can try it on gitea.com first to see
whether it works well, and fine tune the details.

---------

Co-authored-by: silverwind <me@silverwind.io>
2025-01-21 18:57:07 +00:00
GiteaBot
2e42e96ce2 [skip ci] Updated translations via Crowdin 2025-01-21 00:31:12 +00:00
wxiaoguang
39de2955fd
Improve sync fork behavior (#33319)
Fix #33271

Suppose there is a `branch-a` in fork repo:

1. if `branch-a` exists in base repo: try to sync `base:branch-a` to `fork:branch-a`
2. if `branch-a` doesn't exist in base repo: try to sync `base:main` to `fork:branch-a`
2025-01-20 15:17:47 +08:00
GiteaBot
13dbd260b7 [skip ci] Updated licenses and gitignores 2025-01-20 00:31:52 +00:00
GiteaBot
f250ee6360 [skip ci] Updated translations via Crowdin 2025-01-19 00:33:43 +00:00
GiteaBot
fffc8550ab [skip ci] Updated translations via Crowdin 2025-01-18 00:30:24 +00:00
wxiaoguang
3b839f8dc0
Trivial fixes (#33304)
1. the error check was added for go-git, it was caused by the empty `.keep` file in the test fixtures.
2. use `PostFormValue` instead of `PostForm.Get` (`Get` needs to parse the form ahead)
3. fix incorrect container text (it should show "Images" in the header but not "OS/Arch")
4. align maven xml
5. fix closed PR color&icon
2025-01-17 08:55:02 +00:00
GiteaBot
7582eb0419 [skip ci] Updated translations via Crowdin 2025-01-17 00:31:11 +00:00
wxiaoguang
cfc6e21f06
Fix incorrect ref usages (#33301)
Fix #33297

By the way, improve some locales
2025-01-16 13:52:21 +00:00
Kemal Zebari
2483a93fbc
Only allow admins to rename default/protected branches (#33276)
Currently, anyone with write permissions to a repo are able to rename
default or protected branches.

This change follows
[GitHub's](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/renaming-a-branch)
design by only allowing repo/site admins to change these branches.
However, it also follows are current design for protected branches and
only allows admins to modify branch names == branch protection rule
names. Glob-based rules cannot be renamed by anyone (as was already the
case, but we now catch `ErrBranchIsProtected` which we previously did
not catch, throwing a 500).
2025-01-15 20:51:49 +00:00