mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Add "Allow edits from maintainer" feature (#18002)
Adds a feature [like GitHub has](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) (step 7). If you create a new PR from a forked repo, you can select (and change later, but only if you are the PR creator/poster) the "Allow edits from maintainers" option. Then users with write access to the base branch get more permissions on this branch: * use the update pull request button * push directly from the command line (`git push`) * edit/delete/upload files via web UI * use related API endpoints You can't merge PRs to this branch with this enabled, you'll need "full" code write permissions. This feature has a pretty big impact on the permission system. I might forgot changing some things or didn't find security vulnerabilities. In this case, please leave a review or comment on this PR. Closes #17728 Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
		@@ -235,6 +235,15 @@
 | 
			
		||||
						</a>
 | 
			
		||||
					{{end}}
 | 
			
		||||
				</div>
 | 
			
		||||
			{{if and .PageIsComparePull (not (eq .HeadRepo.FullName .BaseCompareRepo.FullName)) .CanWriteToHeadRepo}}
 | 
			
		||||
				<div class="ui divider"></div>
 | 
			
		||||
				<div class="inline field">
 | 
			
		||||
					<div class="ui checkbox">
 | 
			
		||||
						<label class="tooltip" data-content="{{.i18n.Tr "repo.pulls.allow_edits_from_maintainers_desc"}}"><strong>{{.i18n.Tr "repo.pulls.allow_edits_from_maintainers"}}</strong></label>
 | 
			
		||||
						<input name="allow_maintainer_edit" type="checkbox">
 | 
			
		||||
					</div>
 | 
			
		||||
				</div>
 | 
			
		||||
			{{end}}
 | 
			
		||||
		</div>
 | 
			
		||||
		<input type="hidden" name="redirect_after_creation" value="{{.redirect_after_creation}}">
 | 
			
		||||
	</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -667,5 +667,21 @@
 | 
			
		||||
				</form>
 | 
			
		||||
			</div>
 | 
			
		||||
		{{end}}
 | 
			
		||||
 | 
			
		||||
		{{if and .Issue.IsPull .IsIssuePoster (not .Issue.IsClosed)}}
 | 
			
		||||
			{{if and (not (eq .Issue.PullRequest.HeadRepo.FullName .Issue.PullRequest.BaseRepo.FullName)) .CanWriteToHeadRepo}}
 | 
			
		||||
				<div class="ui divider"></div>
 | 
			
		||||
				<div class="inline field">
 | 
			
		||||
					<div class="ui checkbox" id="allow-edits-from-maintainers"
 | 
			
		||||
							data-url="{{.Issue.Link}}"
 | 
			
		||||
							data-prompt-tip="{{.i18n.Tr "repo.pulls.allow_edits_from_maintainers_desc"}}"
 | 
			
		||||
							data-prompt-error="{{.i18n.Tr "repo.pulls.allow_edits_from_maintainers_err"}}"
 | 
			
		||||
						>
 | 
			
		||||
						<label><strong>{{.i18n.Tr "repo.pulls.allow_edits_from_maintainers"}}</strong></label>
 | 
			
		||||
						<input type="checkbox" {{if .Issue.PullRequest.AllowMaintainerEdit}}checked{{end}}>
 | 
			
		||||
					</div>
 | 
			
		||||
				</div>
 | 
			
		||||
			{{end}}
 | 
			
		||||
		{{end}}
 | 
			
		||||
	</div>
 | 
			
		||||
</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -14938,6 +14938,10 @@
 | 
			
		||||
      "description": "EditPullRequestOption options when modify pull request",
 | 
			
		||||
      "type": "object",
 | 
			
		||||
      "properties": {
 | 
			
		||||
        "allow_maintainer_edit": {
 | 
			
		||||
          "type": "boolean",
 | 
			
		||||
          "x-go-name": "AllowMaintainerEdit"
 | 
			
		||||
        },
 | 
			
		||||
        "assignee": {
 | 
			
		||||
          "type": "string",
 | 
			
		||||
          "x-go-name": "Assignee"
 | 
			
		||||
@@ -17045,6 +17049,10 @@
 | 
			
		||||
      "description": "PullRequest represents a pull request",
 | 
			
		||||
      "type": "object",
 | 
			
		||||
      "properties": {
 | 
			
		||||
        "allow_maintainer_edit": {
 | 
			
		||||
          "type": "boolean",
 | 
			
		||||
          "x-go-name": "AllowMaintainerEdit"
 | 
			
		||||
        },
 | 
			
		||||
        "assignee": {
 | 
			
		||||
          "$ref": "#/definitions/User"
 | 
			
		||||
        },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user