Fix wrong display of recently pushed notification (#25812)

There's a bug in #25715: 
If user pushed a commit into another repo with same branch name, the
no-related repo will display the recently pushed notification
incorrectly.
It is simple to fix this, we should match the repo id in the sql query.


![image](9411a926-16f1-419e-a1b5-e953af38bab1)
The latest commit is 2 weeks ago.

![image](52f9ab22-4999-43ac-a86f-6d36fb1e0411)

The notification comes from another repo with same branch name:

![image](a26bc335-8e5b-4b9c-a965-c3dc3fa6f252)


After:
In forked repo:

![image](ce6ffc35-deb7-4be7-8b09-184207392f32)
New PR Link will redirect to the original repo:

![image](7b98e76f-0c75-494c-9462-80cf9f98e786)
In the original repo:

![image](5f6a821b-e51a-4bbd-9980-d9eb94a3c847)
New PR Link:

![image](1ce8c879-9f11-4312-8c32-695d7d9af0df)

In the same repo:

![image](64b56073-4d0e-40c4-b8a0-80be7a775f69)
New PR Link:

![image](96e1b6a3-fb98-40ee-b2ee-648039fb0dcf)

08/15 Update:
Follow #26257, added permission check and logic fix mentioned in
https://github.com/go-gitea/gitea/pull/26257#discussion_r1294085203


2024/04/25 Update:
Fix #30611

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
yp05327 2024-05-22 02:00:35 +09:00 committed by GitHub
parent 9c8c9ff6d1
commit daf2a4c047
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 508 additions and 72 deletions

View file

@ -6,9 +6,11 @@ package integration
import (
"bytes"
"encoding/base64"
"fmt"
"io"
"mime/multipart"
"net/http"
"net/http/httptest"
"testing"
auth_model "code.gitea.io/gitea/models/auth"
@ -24,6 +26,17 @@ import (
"github.com/stretchr/testify/assert"
)
func testAPINewFile(t *testing.T, session *TestSession, user, repo, branch, treePath, content string) *httptest.ResponseRecorder {
url := fmt.Sprintf("/%s/%s/_new/%s", user, repo, branch)
req := NewRequestWithValues(t, "POST", url, map[string]string{
"_csrf": GetCSRF(t, session, "/user/settings"),
"commit_choice": "direct",
"tree_path": treePath,
"content": content,
})
return session.MakeRequest(t, req, http.StatusSeeOther)
}
func TestEmptyRepo(t *testing.T) {
defer tests.PrepareTestEnv(t)()
subPaths := []string{