diff options
author | Panagiotis "Ivory" Vasilopoulos <git@n0toose.net> | 2024-02-23 01:26:17 +0100 |
---|---|---|
committer | Panagiotis "Ivory" Vasilopoulos <git@n0toose.net> | 2024-02-23 21:09:08 +0100 |
commit | bf7fb89178f41c712b8a8863667a442ec1e1c5d4 (patch) | |
tree | 1d9da0f24916dd88289bb519d94563bd93e8b9cd | |
parent | Merge pull request '[FEAT] repo search using git grep' (#1594) from snematoda... (diff) | |
download | forgejo-bf7fb89178f41c712b8a8863667a442ec1e1c5d4.tar.xz forgejo-bf7fb89178f41c712b8a8863667a442ec1e1c5d4.zip |
[UI] Agit: Add AGit label to AGit-created PRs
Adds a label to Pull Requests that were created using AGit-Flow,
in order to prevent situations where a contributor uses AGit-Flow
to push new changes - only to realize that they did not use AGit-Flow
in the first place, and that they just opened a new PR accidentally
(that was me).
Also intended to raise general awareness about the feature. Some
additional work, such as adding a tooltip, still needs to be
done.
A small typo fix for a comment and (exclusively) formatting fixes
in the copyright header are also included.
Refs: https://codeberg.org/forgejo/forgejo/issues/2433
-rw-r--r-- | options/locale/locale_en-US.ini | 1 | ||||
-rw-r--r-- | routers/web/repo/pull.go | 10 | ||||
-rw-r--r-- | templates/repo/issue/view_title.tmpl | 10 | ||||
-rw-r--r-- | tests/integration/git_test.go | 26 |
4 files changed, 43 insertions, 4 deletions
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index bdae9a29ac..8253c6ced5 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1505,6 +1505,7 @@ issues.action_check_all = Check/Uncheck all items issues.opened_by = opened %[1]s by <a href="%[2]s">%[3]s</a> pulls.merged_by = by <a href="%[2]s">%[3]s</a> was merged %[1]s pulls.merged_by_fake = by %[2]s was merged %[1]s +pulls.made_using_agit = AGit issues.closed_by = by <a href="%[2]s">%[3]s</a> was closed %[1]s issues.opened_by_fake = opened %[1]s by %[2]s issues.closed_by_fake = by %[2]s was closed %[1]s diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go index ab821f8884..ac244b1551 100644 --- a/routers/web/repo/pull.go +++ b/routers/web/repo/pull.go @@ -1,5 +1,6 @@ -// Copyright 2018 The Gitea Authors. -// Copyright 2014 The Gogs Authors. +// Copyright 2014 The Gogs Authors. All rights reserved. +// Copyright 2018 The Gitea Authors. All rights reserved. +// Copyright 2024 The Forgejo Authors. All rights reserved. // All rights reserved. // SPDX-License-Identifier: MIT @@ -381,6 +382,11 @@ func setMergeTarget(ctx *context.Context, pull *issues_model.PullRequest) { } else { ctx.Data["HeadTarget"] = pull.MustHeadUserName(ctx) + "/" + pull.HeadRepo.Name + ":" + pull.HeadBranch } + + if pull.Flow == issues_model.PullRequestFlowAGit { + ctx.Data["MadeUsingAGit"] = true + } + ctx.Data["BaseTarget"] = pull.BaseBranch ctx.Data["HeadBranchLink"] = pull.GetHeadBranchLink(ctx) ctx.Data["BaseBranchLink"] = pull.GetBaseBranchLink(ctx) diff --git a/templates/repo/issue/view_title.tmpl b/templates/repo/issue/view_title.tmpl index 582e9864fb..8a5954681b 100644 --- a/templates/repo/issue/view_title.tmpl +++ b/templates/repo/issue/view_title.tmpl @@ -47,7 +47,9 @@ {{if .HeadBranchLink}} {{$headHref = printf `<a href="%s">%s</a>` (.HeadBranchLink | Escape) $headHref}} {{end}} - {{$headHref = printf `%s <button class="btn interact-fg" data-tooltip-content="%s" data-clipboard-text="%s">%s</button>` $headHref (ctx.Locale.Tr "copy_branch") (.HeadTarget | Escape) (svg "octicon-copy" 14)}} + {{if not .MadeUsingAGit}} + {{$headHref = printf `%s <button class="btn interact-fg" data-tooltip-content="%s" data-clipboard-text="%s">%s</button>` $headHref (ctx.Locale.Tr "copy_branch") (.HeadTarget | Escape) (svg "octicon-copy" 14)}} + {{end}} {{$baseHref := .BaseTarget|Escape}} {{if .BaseBranchLink}} {{$baseHref = printf `<a href="%s">%s</a>` (.BaseBranchLink | Escape) $baseHref}} @@ -70,6 +72,12 @@ {{ctx.Locale.Tr "repo.pulls.title_desc" .NumCommits ($headHref|Safe) ($baseHref|Safe)}} </span> {{end}} + {{if .MadeUsingAGit}} + {{/* TODO: Add tooltip and a link to the documentation */}} + <span id="agit-label" class="ui small label"> + {{ctx.Locale.Tr "repo.pulls.made_using_agit"}} + </span> + {{end}} <span id="pull-desc-edit" class="gt-hidden flex-text-block"> <div class="ui floating filter dropdown"> <div class="ui basic small button gt-mr-0"> diff --git a/tests/integration/git_test.go b/tests/integration/git_test.go index d02427ffcf..ead649490e 100644 --- a/tests/integration/git_test.go +++ b/tests/integration/git_test.go @@ -450,7 +450,7 @@ func doMergeFork(ctx, baseCtx APITestContext, baseBranch, headBranch string) fun var pr api.PullRequest var err error - // Create a test pullrequest + // Create a test pull request t.Run("CreatePullRequest", func(t *testing.T) { pr, err = doAPICreatePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, baseBranch, headBranch)(t) assert.NoError(t, err) @@ -470,6 +470,19 @@ func doMergeFork(ctx, baseCtx APITestContext, baseBranch, headBranch string) fun } t.Run("EnsureCanSeePull", doEnsureCanSeePull(headCtx, pr, true)) + // Confirm that there is no AGit Label + // TODO: Refactor and move this check to a function + t.Run("AGitLabelIsMissing", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + + session := loginUser(t, ctx.Username) + + req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d", baseCtx.Username, baseCtx.Reponame, pr.Index)) + resp := session.MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + htmlDoc.AssertElement(t, "#agit-label", false) + }) + // Then get the diff string var diffHash string var diffLength int @@ -813,6 +826,17 @@ func doCreateAgitFlowPull(dstPath string, ctx *APITestContext, baseBranch, headB return } + t.Run("AGitLabelIsPresent", func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + + session := loginUser(t, ctx.Username) + + req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d", url.PathEscape(ctx.Username), url.PathEscape(ctx.Reponame), pr2.Index)) + resp := session.MakeRequest(t, req, http.StatusOK) + htmlDoc := NewHTMLParser(t, resp.Body) + htmlDoc.AssertElement(t, "#agit-label", true) + }) + t.Run("AddCommit2", func(t *testing.T) { err := os.WriteFile(path.Join(dstPath, "test_file"), []byte("## test content \n ## test content 2"), 0o666) if !assert.NoError(t, err) { |