Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Externally merged commits are not marked as merged #31433

Open
AdamMajer opened this issue Jun 20, 2024 · 10 comments · May be fixed by #31785
Open

Externally merged commits are not marked as merged #31433

AdamMajer opened this issue Jun 20, 2024 · 10 comments · May be fixed by #31785
Labels

Comments

@AdamMajer
Copy link
Contributor

Description

  1. create repo
  2. create fork
  3. do channge and create PR to repo
  4. merge manually with git merge --ff-only ... as per instructions
  5. PR not marked as merged, just says the commit already there and nothing to do.

Gitea Version

1.22 , or demo site

Can you reproduce the bug on the Gitea demo site?

Yes

Log Gist

No response

Screenshots

from: https://demo.gitea.com/gnuman/test/pulls/1

image

THEN I added another commit, and it got added to the PR (I guess since it wasn't closed) and the instructions are different from above. Maybe above it reverted to default ones? But this could be another issue not related to this one.

image

Git Version

No response

Operating System

No response

How are you running Gitea?

demo site

Database

None

@wxiaoguang
Copy link
Contributor

wxiaoguang commented Jun 20, 2024

Workaround: you could enable "Manually Merge" in the repo settings, and manually merge it.


ps: not sure whether it is a regression, I never used that workflow 🤔 is there any further information to confirm whether it is a regression?

@AdamMajer
Copy link
Contributor Author

Manual merge is a workaround, I think.

If I'm following the command-line instructions, gitea should be smart enough to notice that the commits are there in the branch already, and close it as merged. The logic is simply, on push to target branch, if "all commits exist in the target branch, so it's merged, mark as done".

Is there a common use-case when this is not desired?

@AdamMajer
Copy link
Contributor Author

You are correct, maybe this is not a regression. It just maybe never worked.

@delvh
Copy link
Member

delvh commented Jun 20, 2024

Is there a common use-case when this is not desired?

performance. And no one implemented it so far.
But I do think it is non-trivial to find all PRs that can be closed once you push:
You need to find all PRs that target the branch you push to.
On top of that, you then need to ensure that all commits are contained within your branch - the only way to do this reliably is by asking Git on every matching PR individually if there are diverging commits.
You cannot just do a DB lookup as then the case you merged the branch locally and added a commit on top before pushing is not covered (although that is a rare edge case)

The moment you have a repo with lots of open PRs, I can predict that pushing will take forever, especially if your hardware isn't the strongest.
However, the performance problem could be solved by adding a instance-wide setting that toggles this behavior.

@AdamMajer
Copy link
Contributor Author

Well, you only need to check the if the commit id of PR head is in the target branch, nothing else.. If that is the case, then it's merged. IFF the PR head commit id is in the branch head, then the PR is FF merged.

You cannot just do a DB lookup as then the case you merged the branch locally and added a commit on top before pushing is not covered (although that is a rare edge case)

As long as the commit id from PR head is there, it has to be merged. Other things on-top, well, maybe extra commits? But that is a different discussion, I think.

What has to be done is, for all pushes to target repo, check all open PR if the commit id is in the repo, if yes, mark as merged. Nothing more to do.

If no one does this, I'll try to get to it next week.

@delvh
Copy link
Member

delvh commented Jun 21, 2024

Well, you only need to check the if the commit id of PR head is in the target branch, nothing else.

Yes, but you first need to find all applicable PRs and do this git call for all of them separately, so that point still stands.
But sure, go ahead, I'll review your PR dutifully once it exists.
(If I forget to, ping me. Unfortunately, my TODO list is so long that I frequently forget what I wanted to do)

AdamMajer added a commit to AdamMajer/gitea that referenced this issue Aug 6, 2024
@AdamMajer AdamMajer linked a pull request Aug 6, 2024 that will close this issue
AdamMajer added a commit to AdamMajer/gitea that referenced this issue Aug 6, 2024
@a1012112796
Copy link
Member

a1012112796 commented Aug 8, 2024

I has try a new solution in #21951 . which try add a new push option to notify server that a pull request was merged in this push operation (example git push -o pulls.merged=1,2,3 -u origin master). I think it would be a better way.

@a1012112796
Copy link
Member

if "all commits exist in the target branch, so it's merged, mark as done".
? Is there a common use-case when this is not desired?

Because empty pull request has been allowed in #12543

@AdamMajer
Copy link
Contributor Author

Well, the idea here is if a PR head commit ID is present in the new push to the target branch, then it's merged. Nothing else needed.

This of course will not detect anything when the commit is altered in any way because then the commit ID will be changed. Another solution would then be required for those workflows. The push option looks like it would be helpful in those cases.

@AdamMajer
Copy link
Contributor Author

I don't quite understand the point of empty PR. It seems they would just be issues. But empty PR are not the same as a PR with a HEAD commit ID present in a push to target branch. Or am I misunderstanding this?

a1012112796 added a commit to a1012112796/gitea that referenced this issue Aug 8, 2024
not enabled

quick-fix go-gitea#31433 , maybe need
more disscusion about better solutions.

Signed-off-by: a1012112796 <1012112796@qq.com>
wolfogre pushed a commit that referenced this issue Aug 10, 2024
…` was not enabled (#31805)

not enabled

quick-f-i-x #31433 ? , maybe
need more disscusion about better solutions.

example view:


![image](https://github.com/user-attachments/assets/2af7e1e8-42b9-4473-89c7-12d4a9205d3f)

adtion notes about how to enable `AutodetectManualMerge`


![image](https://github.com/user-attachments/assets/28f84317-367a-40d8-b50d-a19ef7c664d4)

Signed-off-by: a1012112796 <1012112796@qq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants