Skip to content

Commit 64acf61

Browse files
committed
Merge remote-tracking branch 'giteaofficial/main'
* giteaofficial/main: Fix Actions API (go-gitea#35204) Add webhook test for push event (go-gitea#34442) Remove unneeded if statements for `update repo` API (go-gitea#35140) [skip ci] Updated translations via Crowdin Step down as maintainer (justusbunsi) (go-gitea#35212) Display pull request in merged commit view (go-gitea#35202) Step down as maintainer (pat-s) (go-gitea#35213)
2 parents ee87cd5 + becd15f commit 64acf61

File tree

12 files changed

+253
-61
lines changed

12 files changed

+253
-61
lines changed

MAINTAINERS

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ a1012112796 <1012112796@qq.com> (@a1012112796)
3636
Karl Heinz Marbaise <kama@soebes.de> (@khmarbaise)
3737
Norwin Roosen <git@nroo.de> (@noerw)
3838
Kyle Dumont <kdumontnu@gmail.com> (@kdumontnu)
39-
Patrick Schratz <patrick.schratz@gmail.com> (@pat-s)
4039
Janis Estelmann <admin@oldschoolhack.me> (@KN4CK3R)
41-
Steven Kriegler <sk.bunsenbrenner@gmail.com> (@justusbunsi)
4240
Jimmy Praet <jimmy.praet@telenet.be> (@jpraet)
4341
Leon Hofmeister <dev.lh@web.de> (@delvh)
4442
Wim <wim@42.be> (@42wim)

options/locale/locale_en-US.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,6 +1322,7 @@ commit_graph.color = Color
13221322
commit.contained_in = This commit is contained in:
13231323
commit.contained_in_default_branch = This commit is part of the default branch
13241324
commit.load_referencing_branches_and_tags = Load branches and tags referencing this commit
1325+
commit.merged_in_pr = This commit was merged in pull request %s.
13251326
blame = Blame
13261327
download_file = Download file
13271328
normal_view = Normal View

options/locale/locale_ga-IE.ini

Lines changed: 69 additions & 0 deletions
Large diffs are not rendered by default.

options/locale/locale_ja-JP.ini

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ unfollow=フォロー解除
679679
user_bio=経歴
680680
disabled_public_activity=このユーザーはアクティビティ表示を公開していません。
681681
email_visibility.limited=あなたのメールアドレスはすべての認証済みユーザーに表示されています
682-
email_visibility.private=あなたのメールアドレスは、あなたと管理者のみに表示されます
682+
email_visibility.private=あなたのメールアドレスは、あなたと管理者にのみ表示されます
683683
show_on_map=地図上にこの場所を表示
684684
settings=ユーザー設定
685685

@@ -1021,14 +1021,16 @@ email_notifications.onmention=メンションのみメール通知
10211021
email_notifications.disable=メール通知無効
10221022
email_notifications.submit=メール設定を保存
10231023
email_notifications.andyourown=自分に関する通知も含める
1024+
email_notifications.actions.desc=<a target="_blank" href="%s">Gitea Actions</a>が設定されたリポジトリのワークフロー実行に関する通知。
1025+
email_notifications.actions.failure_only=失敗したワークフロー実行についてのみ通知
10241026

10251027
visibility=ユーザーの公開範囲
10261028
visibility.public=パブリック
10271029
visibility.public_tooltip=全員に表示されます
10281030
visibility.limited=限定
1029-
visibility.limited_tooltip=認証されたユーザーのみに表示されます
1031+
visibility.limited_tooltip=認証されたユーザーにのみ表示されます
10301032
visibility.private=プライベート
1031-
visibility.private_tooltip=あなたが参加した組織のメンバーのみに表示されます
1033+
visibility.private_tooltip=あなたが参加した組織のメンバーにのみ表示されます
10321034

10331035
[repo]
10341036
new_repo_helper=リポジトリには、プロジェクトのすべてのファイルとリビジョン履歴が入ります。 すでにほかの場所でホストしていますか? <a href="%s">リポジトリを移行</a> もどうぞ。
@@ -2165,6 +2167,7 @@ settings.collaboration.write=書き込み
21652167
settings.collaboration.read=読み取り
21662168
settings.collaboration.owner=オーナー
21672169
settings.collaboration.undefined=未定義
2170+
settings.collaboration.per_unit=ユニット権限
21682171
settings.hooks=Webhook
21692172
settings.githooks=Gitフック
21702173
settings.basic_settings=基本設定
@@ -2318,7 +2321,7 @@ settings.collaborator_deletion=共同作業者の削除
23182321
settings.collaborator_deletion_desc=共同作業者を削除し、このリポジトリへのアクセス権を取り消します。 続行しますか?
23192322
settings.remove_collaborator_success=共同作業者を削除しました。
23202323
settings.org_not_allowed_to_be_collaborator=組織を共同作業者として追加することはできません。
2321-
settings.change_team_access_not_allowed=リポジトリに対するチームアクセス権の変更は、組織のオーナーのみに制限されています
2324+
settings.change_team_access_not_allowed=リポジトリに対するチームアクセス権の変更は、組織のオーナーにのみ制限されています
23222325
settings.team_not_in_organization=チームがリポジトリと同じ組織に属していません。
23232326
settings.teams=チーム
23242327
settings.add_team=チームを追加
@@ -2569,7 +2572,7 @@ settings.matrix.message_type=メッセージ種別
25692572
settings.visibility.private.button=プライベートにする
25702573
settings.visibility.private.text=プライベートに変更することで、リポジトリは許可されたメンバーにのみ表示されるようになり、既存のフォーク、ウォッチャー、スターとの関係は解除される可能性があります。
25712574
settings.visibility.private.bullet_title=<strong>プライベートに変更すると:</strong>
2572-
settings.visibility.private.bullet_one=許可されたメンバーのみにリポジトリを表示します
2575+
settings.visibility.private.bullet_one=許可されたメンバーにのみリポジトリを表示します
25732576
settings.visibility.private.bullet_two=<strong>フォーク</strong>、<strong>ウォッチャー</strong>、<strong>スター</strong>との関係を解除する可能性があります。
25742577
settings.visibility.public.button=公開する
25752578
settings.visibility.public.text=公開に変更すると、リポジトリを誰でも閲覧できるようにします。
@@ -2769,6 +2772,8 @@ branch.new_branch_from=`"%s" から新しいブランチを作成`
27692772
branch.renamed=ブランチ %s は %s にリネームされました。
27702773
branch.rename_default_or_protected_branch_error=デフォルトブランチや保護ブランチのリネームが可能なのは管理者だけです。
27712774
branch.rename_protected_branch_failed=このブランチはglobベースの保護ルールに従って保護されています。
2775+
branch.commits_divergence_from=コミットの乖離: %[3]s より %[1]d 件遅れ %[2]d 件先行
2776+
branch.commits_no_divergence=%[1]s ブランチと一致
27722777

27732778
tag.create_tag=タグ %s を作成
27742779
tag.create_tag_operation=タグの作成
@@ -2782,6 +2787,7 @@ topic.done=完了
27822787
topic.count_prompt=選択できるのは25トピックまでです。
27832788
topic.format_prompt=トピック名は英字または数字で始め、ダッシュ('-')やドット('.')を含めることができます。最大35文字までです。文字は小文字でなければなりません。
27842789

2790+
find_file.follow_symlink=シンボリックリンクが指し示す先を開く
27852791
find_file.go_to_file=ファイルへ移動
27862792
find_file.no_matching=一致するファイルが見つかりません
27872793

@@ -3247,6 +3253,8 @@ auths.oauth2_required_claim_name_helper=このClaim名を設定すると、こ
32473253
auths.oauth2_required_claim_value=必須Claim値
32483254
auths.oauth2_required_claim_value_helper=この値を設定すると、このソースからのログインを、指定したClaim名とClaim値を持つユーザーに限定します。
32493255
auths.oauth2_group_claim_name=このソースでグループ名を提供するClaim名 (オプション)
3256+
auths.oauth2_full_name_claim_name=フルネームのClaim名。 (オプション — 設定すると、ユーザーのフルネームは常にこのClaimに同期します)
3257+
auths.oauth2_ssh_public_key_claim_name=SSH公開鍵のClaim名
32503258
auths.oauth2_admin_group=管理者ユーザーのグループClaim値 (オプション — 上のClaim名が必要)
32513259
auths.oauth2_restricted_group=制限付きユーザーのグループClaim値 (オプション — 上のClaim名が必要)
32523260
auths.oauth2_map_group_to_team=見つかったグループを組織のチームにマップ (オプション — 上のClaim名が必要)

routers/api/v1/repo/action.go

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,18 +1132,23 @@ func GetWorkflowRun(ctx *context.APIContext) {
11321132
// "$ref": "#/responses/notFound"
11331133

11341134
runID := ctx.PathParamInt64("run")
1135-
job, _, err := db.GetByID[actions_model.ActionRun](ctx, runID)
1135+
job, has, err := db.GetByID[actions_model.ActionRun](ctx, runID)
1136+
if err != nil {
1137+
ctx.APIErrorInternal(err)
1138+
return
1139+
}
11361140

1137-
if err != nil || job.RepoID != ctx.Repo.Repository.ID {
1138-
ctx.APIError(http.StatusNotFound, util.ErrNotExist)
1141+
if !has || job.RepoID != ctx.Repo.Repository.ID {
1142+
ctx.APIErrorNotFound(util.ErrNotExist)
1143+
return
11391144
}
11401145

1141-
convertedArtifact, err := convert.ToActionWorkflowRun(ctx, ctx.Repo.Repository, job)
1146+
convertedRun, err := convert.ToActionWorkflowRun(ctx, ctx.Repo.Repository, job)
11421147
if err != nil {
11431148
ctx.APIErrorInternal(err)
11441149
return
11451150
}
1146-
ctx.JSON(http.StatusOK, convertedArtifact)
1151+
ctx.JSON(http.StatusOK, convertedRun)
11471152
}
11481153

11491154
// ListWorkflowRunJobs Lists all jobs for a workflow run.
@@ -1237,10 +1242,15 @@ func GetWorkflowJob(ctx *context.APIContext) {
12371242
// "$ref": "#/responses/notFound"
12381243

12391244
jobID := ctx.PathParamInt64("job_id")
1240-
job, _, err := db.GetByID[actions_model.ActionRunJob](ctx, jobID)
1245+
job, has, err := db.GetByID[actions_model.ActionRunJob](ctx, jobID)
1246+
if err != nil {
1247+
ctx.APIErrorInternal(err)
1248+
return
1249+
}
12411250

1242-
if err != nil || job.RepoID != ctx.Repo.Repository.ID {
1243-
ctx.APIError(http.StatusNotFound, util.ErrNotExist)
1251+
if !has || job.RepoID != ctx.Repo.Repository.ID {
1252+
ctx.APIErrorNotFound(util.ErrNotExist)
1253+
return
12441254
}
12451255

12461256
convertedWorkflowJob, err := convert.ToActionWorkflowJob(ctx, ctx.Repo.Repository, nil, job)
@@ -1251,7 +1261,7 @@ func GetWorkflowJob(ctx *context.APIContext) {
12511261
ctx.JSON(http.StatusOK, convertedWorkflowJob)
12521262
}
12531263

1254-
// GetArtifacts Lists all artifacts for a repository.
1264+
// GetArtifactsOfRun Lists all artifacts for a repository.
12551265
func GetArtifactsOfRun(ctx *context.APIContext) {
12561266
// swagger:operation GET /repos/{owner}/{repo}/actions/runs/{run}/artifacts repository getArtifactsOfRun
12571267
// ---
@@ -1354,7 +1364,7 @@ func DeleteActionRun(ctx *context.APIContext) {
13541364
runID := ctx.PathParamInt64("run")
13551365
run, err := actions_model.GetRunByRepoAndID(ctx, ctx.Repo.Repository.ID, runID)
13561366
if errors.Is(err, util.ErrNotExist) {
1357-
ctx.APIError(http.StatusNotFound, err)
1367+
ctx.APIErrorNotFound(err)
13581368
return
13591369
} else if err != nil {
13601370
ctx.APIErrorInternal(err)

routers/api/v1/repo/repo.go

Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -772,13 +772,8 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
772772
var units []repo_model.RepoUnit
773773
var deleteUnitTypes []unit_model.Type
774774

775-
currHasIssues := repo.UnitEnabled(ctx, unit_model.TypeIssues)
776-
newHasIssues := currHasIssues
777775
if opts.HasIssues != nil {
778-
newHasIssues = *opts.HasIssues
779-
}
780-
if currHasIssues || newHasIssues {
781-
if newHasIssues && opts.ExternalTracker != nil && !unit_model.TypeExternalTracker.UnitGlobalDisabled() {
776+
if *opts.HasIssues && opts.ExternalTracker != nil && !unit_model.TypeExternalTracker.UnitGlobalDisabled() {
782777
// Check that values are valid
783778
if !validation.IsValidExternalURL(opts.ExternalTracker.ExternalTrackerURL) {
784779
err := errors.New("External tracker URL not valid")
@@ -802,7 +797,7 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
802797
},
803798
})
804799
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeIssues)
805-
} else if newHasIssues && opts.ExternalTracker == nil && !unit_model.TypeIssues.UnitGlobalDisabled() {
800+
} else if *opts.HasIssues && opts.ExternalTracker == nil && !unit_model.TypeIssues.UnitGlobalDisabled() {
806801
// Default to built-in tracker
807802
var config *repo_model.IssuesConfig
808803

@@ -829,7 +824,7 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
829824
Config: config,
830825
})
831826
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeExternalTracker)
832-
} else if !newHasIssues {
827+
} else if !*opts.HasIssues {
833828
if !unit_model.TypeExternalTracker.UnitGlobalDisabled() {
834829
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeExternalTracker)
835830
}
@@ -839,13 +834,8 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
839834
}
840835
}
841836

842-
currHasWiki := repo.UnitEnabled(ctx, unit_model.TypeWiki)
843-
newHasWiki := currHasWiki
844837
if opts.HasWiki != nil {
845-
newHasWiki = *opts.HasWiki
846-
}
847-
if currHasWiki || newHasWiki {
848-
if newHasWiki && opts.ExternalWiki != nil && !unit_model.TypeExternalWiki.UnitGlobalDisabled() {
838+
if *opts.HasWiki && opts.ExternalWiki != nil && !unit_model.TypeExternalWiki.UnitGlobalDisabled() {
849839
// Check that values are valid
850840
if !validation.IsValidExternalURL(opts.ExternalWiki.ExternalWikiURL) {
851841
err := errors.New("External wiki URL not valid")
@@ -861,15 +851,15 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
861851
},
862852
})
863853
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeWiki)
864-
} else if newHasWiki && opts.ExternalWiki == nil && !unit_model.TypeWiki.UnitGlobalDisabled() {
854+
} else if *opts.HasWiki && opts.ExternalWiki == nil && !unit_model.TypeWiki.UnitGlobalDisabled() {
865855
config := &repo_model.UnitConfig{}
866856
units = append(units, repo_model.RepoUnit{
867857
RepoID: repo.ID,
868858
Type: unit_model.TypeWiki,
869859
Config: config,
870860
})
871861
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeExternalWiki)
872-
} else if !newHasWiki {
862+
} else if !*opts.HasWiki {
873863
if !unit_model.TypeExternalWiki.UnitGlobalDisabled() {
874864
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeExternalWiki)
875865
}
@@ -879,13 +869,8 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
879869
}
880870
}
881871

882-
currHasPullRequests := repo.UnitEnabled(ctx, unit_model.TypePullRequests)
883-
newHasPullRequests := currHasPullRequests
884-
if opts.HasPullRequests != nil {
885-
newHasPullRequests = *opts.HasPullRequests
886-
}
887-
if currHasPullRequests || newHasPullRequests {
888-
if newHasPullRequests && !unit_model.TypePullRequests.UnitGlobalDisabled() {
872+
if opts.HasPullRequests != nil && !unit_model.TypePullRequests.UnitGlobalDisabled() {
873+
if *opts.HasPullRequests {
889874
// We do allow setting individual PR settings through the API, so
890875
// we get the config settings and then set them
891876
// if those settings were provided in the opts.
@@ -953,18 +938,13 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
953938
Type: unit_model.TypePullRequests,
954939
Config: config,
955940
})
956-
} else if !newHasPullRequests && !unit_model.TypePullRequests.UnitGlobalDisabled() {
941+
} else {
957942
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypePullRequests)
958943
}
959944
}
960945

961-
currHasProjects := repo.UnitEnabled(ctx, unit_model.TypeProjects)
962-
newHasProjects := currHasProjects
963-
if opts.HasProjects != nil {
964-
newHasProjects = *opts.HasProjects
965-
}
966-
if currHasProjects || newHasProjects {
967-
if newHasProjects && !unit_model.TypeProjects.UnitGlobalDisabled() {
946+
if opts.HasProjects != nil && !unit_model.TypeProjects.UnitGlobalDisabled() {
947+
if *opts.HasProjects {
968948
unit, err := repo.GetUnit(ctx, unit_model.TypeProjects)
969949
var config *repo_model.ProjectsConfig
970950
if err != nil {
@@ -984,7 +964,7 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
984964
Type: unit_model.TypeProjects,
985965
Config: config,
986966
})
987-
} else if !newHasProjects && !unit_model.TypeProjects.UnitGlobalDisabled() {
967+
} else {
988968
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeProjects)
989969
}
990970
}

routers/web/repo/commit.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
asymkey_model "code.gitea.io/gitea/models/asymkey"
1616
"code.gitea.io/gitea/models/db"
1717
git_model "code.gitea.io/gitea/models/git"
18+
issues_model "code.gitea.io/gitea/models/issues"
1819
"code.gitea.io/gitea/models/renderhelper"
1920
repo_model "code.gitea.io/gitea/models/repo"
2021
unit_model "code.gitea.io/gitea/models/unit"
@@ -411,6 +412,11 @@ func Diff(ctx *context.Context) {
411412
}
412413
}
413414

415+
pr, _ := issues_model.GetPullRequestByMergedCommit(ctx, ctx.Repo.Repository.ID, commitID)
416+
if pr != nil {
417+
ctx.Data["MergedPRIssueNumber"] = pr.Index
418+
}
419+
414420
ctx.HTML(http.StatusOK, tplCommitPage)
415421
}
416422

templates/repo/commit_load_branches_and_tags.tmpl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
{{if not .PageIsWiki}}
22
<div class="branch-and-tag-area" data-text-default-branch-tooltip="{{ctx.Locale.Tr "repo.commit.contained_in_default_branch"}}">
3+
{{if .MergedPRIssueNumber}}
4+
{{$prLink := HTMLFormat `<a href="%s/pulls/%d">#%d</a>` $.RepoLink $.MergedPRIssueNumber $.MergedPRIssueNumber}}
5+
<div>
6+
<div class="divider"></div>
7+
<div>{{ctx.Locale.Tr "repo.commit.merged_in_pr" $prLink}}</div>
8+
</div>
9+
{{end}}
310
<button class="ui button ellipsis-button load-branches-and-tags tw-mt-2" aria-expanded="false"
411
data-fetch-url="{{.RepoLink}}/commit/{{.CommitID}}/load-branches-and-tags"
512
data-tooltip-content="{{ctx.Locale.Tr "repo.commit.load_referencing_branches_and_tags"}}"

tests/integration/api_actions_delete_run_test.go renamed to tests/integration/api_actions_run_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,44 @@ import (
1818
"github.com/stretchr/testify/assert"
1919
)
2020

21+
func TestAPIActionsGetWorkflowRun(t *testing.T) {
22+
defer prepareTestEnvActionsArtifacts(t)()
23+
24+
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
25+
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
26+
session := loginUser(t, user.Name)
27+
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
28+
29+
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/runs/802802", repo.FullName())).
30+
AddTokenAuth(token)
31+
MakeRequest(t, req, http.StatusNotFound)
32+
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/runs/802", repo.FullName())).
33+
AddTokenAuth(token)
34+
MakeRequest(t, req, http.StatusNotFound)
35+
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/runs/803", repo.FullName())).
36+
AddTokenAuth(token)
37+
MakeRequest(t, req, http.StatusOK)
38+
}
39+
40+
func TestAPIActionsGetWorkflowJob(t *testing.T) {
41+
defer prepareTestEnvActionsArtifacts(t)()
42+
43+
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
44+
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
45+
session := loginUser(t, user.Name)
46+
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
47+
48+
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/jobs/198198", repo.FullName())).
49+
AddTokenAuth(token)
50+
MakeRequest(t, req, http.StatusNotFound)
51+
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/jobs/198", repo.FullName())).
52+
AddTokenAuth(token)
53+
MakeRequest(t, req, http.StatusOK)
54+
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/jobs/196", repo.FullName())).
55+
AddTokenAuth(token)
56+
MakeRequest(t, req, http.StatusNotFound)
57+
}
58+
2159
func TestAPIActionsDeleteRunCheckPermission(t *testing.T) {
2260
defer prepareTestEnvActionsArtifacts(t)()
2361

tests/integration/api_repo_edit_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,8 @@ func getRepoEditOptionFromRepo(repo *repo_model.Repository) *api.EditRepoOption
5353
hasWiki = true
5454
} else if unit, err := repo.GetUnit(db.DefaultContext, unit_model.TypeExternalWiki); err == nil {
5555
hasWiki = true
56-
config := unit.ExternalWikiConfig()
5756
externalWiki = &api.ExternalWiki{
58-
ExternalWikiURL: config.ExternalWikiURL,
57+
ExternalWikiURL: unit.ExternalWikiConfig().ExternalWikiURL,
5958
}
6059
}
6160
defaultBranch := repo.DefaultBranch

0 commit comments

Comments
 (0)