mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-12 10:39:38 -05:00
Closed pull requests retain no information about deleted branches #4390
Closed
opened 2025-11-02 05:49:06 -06:00 by GiteaMirror
·
12 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No Label
type/bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#4390
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @themightychris on GitHub (Nov 25, 2019).
[x]):Description
When the branch behind a closed pull request gets deleted, all information about the branch appears to be lost (whether the branch is deleted through Git or through the provided button in the pull request)
Observed behavior: The pull request does not retain the name of the branch, the pushed commits, or the diffs and does not offer a restore branch button
Expected behavior: A closed PR will permanently store a ref to the tip of the deleted branch, enabling its commit list and files changed views to continue working, contextual comments to continue to be read, and the branch to be restorable from the commit preserved by the PR.
Screenshots
@guillep2k commented on GitHub (Nov 25, 2019):
I may be wrong about this, but I think this will be a problem with squash&merge and
git gc. AFAIU git will drop any commits that are no longer referenced, so even if we keep a reference in the database, git won't know about it and the commits themselves will be lost.@themightychris commented on GitHub (Nov 25, 2019):
Pull requests are typically stored inside git's ref database under
refs/pull/*which prevents GC from dropping the commits.Indeed, Gitea still has the correct ref stored for the example:
All needed content is still available:
@lunny commented on GitHub (Jan 4, 2020):
This should be a bug and I think this is a broken again?
@zeripath commented on GitHub (Jan 6, 2020):
@themightychris Is this still a problem?
On current master - admittedly looking at merges from the same repo - I can't seem to replicate.
@themightychris commented on GitHub (Jan 6, 2020):
@zeripath you would not see the issue with merged PRs, only PRs closed without merging
@zeripath commented on GitHub (Jan 6, 2020):
Ah!
I understand.
The problem lies in here:
5749b26cdd/routers/repo/pull.go (L328-L427)This should really look at the
refs/pulls/x/headto get the commits not theheadRepo. I guess the question is whetherrefs/pulls/x/headis always available on this template.I'll take a look.
@zeripath commented on GitHub (Jan 6, 2020):
So the next thing that needs to be done is to proffer to re-create from the previous pull head. Now that's a bit difficult as we may not have the permission to write to the original headRepo, or the headBranch may have moved on - however, that could be a separate issue. (Similarly for actually deleting PRs)
@themightychris commented on GitHub (Jan 6, 2020):
If you're talking about having "Restore branch" button, perhaps that could just be visible but disabled in the case that the branch name isn't unused
@zeripath commented on GitHub (Jan 6, 2020):
Because of the way the permissions work I think that needs more thought.
For example The repo owner should be able to restore to a branch in their repo from any pull - probably with the option to takeover a closed pr.
@tanrui8765 commented on GitHub (Jun 21, 2020):
Hello friend, I met the same problem on v1.11.7 too. Some closed pull requests with deleted branch, N/A commits and N/A changed files.
I tried to fix the problem with cmd doctor --run recalculate_merge_bases --fix and doctor -all -fix, but didn't work. The cmd results gave "2 PR mergebases updated of 173 PRs total in 71 repos" several times.
Is there any possible solution for this problem? Many Thanks~
@zeripath commented on GitHub (Jun 21, 2020):
@tanrui8765 for us to be able to figure out if there is anything we can do here we need more information.
For example, does the Gitea repository still have the pull ref on the server? I.e. if you go to the repository on the filesystem does refs/pull/X/head exist? If not then there's nothing we can do - all of the information about that pull is gone.
Was the pull merged? If it wasn't does the base branch of the pull request still exist? If it doesn't then there's no base we can compare against to restore a merge base - we may still be able to use a mergebase if it's in the pull request table but previously PRs had very incorrect mergebases so...
In the pull table is there a merge base listed for the pr? Does that merge base produce a reasonable diff if you do:
git diff mergebase refs/pull/X/head?You need to tell us more about these PRs.
@tanrui8765 commented on GitHub (Jun 27, 2020):
Hello @zeripath , sorry for the insufficient information, I don't have much understanding about git & gitea (learning though), many thanks for your help.
In my case, I have a PR like this:
This PR is "Closed" because of the branch was needed to be renamed. The PR displays N/A commits and N/A changed files.
I upgraded gitea to V1.12.1 and executed "doctor -all -fix", I got the result below, but PR still have the problem:
I checked the repo, "refs\pull\466\head" exists. This 466 PR is not merged, but the branch has been deleted. Could you please tell me how to get the pull table?
However, I can find the branch origin tag and its head:
I did "git diff 649405ede055eedc015e75e851c6a87fcbcce0ea refs/pull/466/head", returned diff information, I think they are right.
Are these information reasonable & enough? Thanks~