Skip to content

Commit deb3df5

Browse files
authored
Merge branch 'main' into lunny/upgrade_crypto
2 parents d99e44e + 6e475dc commit deb3df5

33 files changed

+405
-305
lines changed

Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,8 @@ unit-test-coverage:
451451
tidy: ## run go mod tidy
452452
$(eval MIN_GO_VERSION := $(shell grep -Eo '^go\s+[0-9]+\.[0-9.]+' go.mod | cut -d' ' -f2))
453453
$(GO) mod tidy -compat=$(MIN_GO_VERSION)
454-
@$(MAKE) --no-print-directory $(GO_LICENSE_FILE)
454+
# disabled because of issues related to https://github.com/google/go-licenses/issues/128
455+
# @$(MAKE) --no-print-directory $(GO_LICENSE_FILE)
455456

456457
vendor: go.mod go.sum
457458
$(GO) mod vendor
@@ -470,7 +471,7 @@ tidy-check: tidy
470471
go-licenses: $(GO_LICENSE_FILE) ## regenerate go licenses
471472

472473
$(GO_LICENSE_FILE): go.mod go.sum
473-
-$(GO) run $(GO_LICENSES_PACKAGE) save . --force --save_path=$(GO_LICENSE_TMP_DIR) 2>/dev/null
474+
-$(GO) run $(GO_LICENSES_PACKAGE) save . --force --save_path=$(GO_LICENSE_TMP_DIR)
474475
$(GO) run build/generate-go-licenses.go $(GO_LICENSE_TMP_DIR) $(GO_LICENSE_FILE)
475476
@rm -rf $(GO_LICENSE_TMP_DIR)
476477

options/locale/locale_cs-CZ.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,6 @@ delete_token_success=Token byl odstraněn. Aplikace, které jej používají ji
911911
repo_and_org_access=Repozitář a přístup organizace
912912
permissions_public_only=Pouze veřejnost
913913
permissions_access_all=Vše (veřejné, soukromé a omezené)
914-
select_permissions=Vyberte oprávnění
915914
permission_not_set=Není nastaveno
916915
permission_no_access=Bez přístupu
917916
permission_read=Přečtené

options/locale/locale_de-DE.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,6 @@ delete_token_success=Der Zugriffstoken wurde gelöscht. Anwendungen die diesen T
910910
repo_and_org_access=Repository- und Organisationszugriff
911911
permissions_public_only=Nur öffentlich
912912
permissions_access_all=Alle (öffentlich, privat und begrenzt)
913-
select_permissions=Berechtigungen auswählen
914913
permission_not_set=Nicht festgelegt
915914
permission_no_access=Kein Zugriff
916915
permission_read=Lesen

options/locale/locale_el-GR.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,6 @@ delete_token_success=Το διακριτικό έχει διαγραφεί. Οι
810810
repo_and_org_access=Πρόσβαση στο Αποθετήριο και Οργανισμό
811811
permissions_public_only=Δημόσια μόνο
812812
permissions_access_all=Όλα (δημόσια, ιδιωτικά, και περιορισμένα)
813-
select_permissions=Επιλέξτε δικαιώματα
814813
permission_no_access=Καμία Πρόσβαση
815814
permission_read=Αναγνωσμένες
816815
permission_write=Ανάγνωση και Εγγραφή

options/locale/locale_en-US.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2594,7 +2594,6 @@ diff.commit = commit
25942594
diff.git-notes = Notes
25952595
diff.data_not_available = Diff Content Not Available
25962596
diff.options_button = Diff Options
2597-
diff.show_diff_stats = Show Stats
25982597
diff.download_patch = Download Patch File
25992598
diff.download_diff = Download Diff File
26002599
diff.show_split_view = Split View

options/locale/locale_es-ES.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,6 @@ delete_token_success=El token ha sido eliminado. Las aplicaciones que lo usen ya
806806
repo_and_org_access=Acceso al Repositorio y a la Organización
807807
permissions_public_only=Sólo público
808808
permissions_access_all=Todo (público, privado y limitado)
809-
select_permissions=Seleccionar permisos
810809
permission_no_access=Sin acceso
811810
permission_read=Leídas
812811
permission_write=Lectura y Escritura

options/locale/locale_fr-FR.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,6 @@ delete_token_success=Ce jeton a été supprimé. Les applications l'utilisant n'
917917
repo_and_org_access=Accès aux Organisations et Dépôts
918918
permissions_public_only=Publique uniquement
919919
permissions_access_all=Tout (public, privé et limité)
920-
select_permissions=Sélectionner les autorisations
921920
permission_not_set=Non défini
922921
permission_no_access=Aucun accès
923922
permission_read=Lecture

options/locale/locale_ga-IE.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,6 @@ delete_token_success=Tá an comhartha scriosta. Níl rochtain ag iarratais a ús
917917
repo_and_org_access=Rochtain Stórála agus Eagraíochta
918918
permissions_public_only=Poiblí amháin
919919
permissions_access_all=Gach (poiblí, príobháideach agus teoranta)
920-
select_permissions=Roghnaigh ceadanna
921920
permission_not_set=Níl leagtha
922921
permission_no_access=Gan rochtain
923922
permission_read=Léigh

options/locale/locale_ja-JP.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,6 @@ delete_token_success=トークンを削除しました。 削除したトーク
917917
repo_and_org_access=リポジトリと組織へのアクセス
918918
permissions_public_only=公開のみ
919919
permissions_access_all=すべて (公開、プライベート、限定)
920-
select_permissions=許可の選択
921920
permission_not_set=設定なし
922921
permission_no_access=アクセス不可
923922
permission_read=読み取り

options/locale/locale_lv-LV.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -814,7 +814,6 @@ delete_token_success=Pilnvara tika izdzēsta. Lietojumprogrammām, kas izmantoja
814814
repo_and_org_access=Repozitorija un organizācijas piekļuve
815815
permissions_public_only=Tikai publiskie
816816
permissions_access_all=Visi (publiskie, privātie un ierobežotie)
817-
select_permissions=Norādiet tiesības
818817
permission_no_access=Nav piekļuves
819818
permission_read=Skatīšanās
820819
permission_write=Skatīšanās un raksīšanas

options/locale/locale_pt-BR.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -812,7 +812,6 @@ delete_token_success=O token foi excluído. Os aplicativos que o utilizam já n
812812
repo_and_org_access=Acesso ao Repositório e Organização
813813
permissions_public_only=Apenas público
814814
permissions_access_all=Todos (público, privado e limitado)
815-
select_permissions=Selecionar permissões
816815
permission_no_access=Sem acesso
817816
permission_read=Ler
818817
permission_write=Ler e escrever

options/locale/locale_pt-PT.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,6 @@ delete_token_success=O código foi eliminado. Aplicações que o usavam deixaram
917917
repo_and_org_access=Acesso aos repositórios e às organizações
918918
permissions_public_only=Apenas público
919919
permissions_access_all=Tudo (público, privado e limitado)
920-
select_permissions=Escolher permissões
921920
permission_not_set=Não definido
922921
permission_no_access=Sem acesso
923922
permission_read=Lidas

options/locale/locale_ru-RU.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -807,7 +807,6 @@ delete_token_success=Токен удалён. Приложения, исполь
807807
repo_and_org_access=Доступ к репозиторию и организации
808808
permissions_public_only=Только публичные
809809
permissions_access_all=Все (публичные, приватные и ограниченные)
810-
select_permissions=Выбрать разрешения
811810
permission_no_access=Нет доступа
812811
permission_read=Прочитанные
813812
permission_write=Чтение и запись

options/locale/locale_tr-TR.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,6 @@ delete_token_success=Jeton silindi. Onu kullanan uygulamalar artık hesabınıza
895895
repo_and_org_access=Depo ve Organizasyon Erişimi
896896
permissions_public_only=Yalnızca herkese açık
897897
permissions_access_all=Tümü (herkese açık, özel ve sınırlı)
898-
select_permissions=İzinleri seçin
899898
permission_not_set=Ayarlanmadı
900899
permission_no_access=Erişim Yok
901900
permission_read=Okunmuş

options/locale/locale_zh-CN.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,6 @@ delete_token_success=令牌已经被删除。使用该令牌的应用将不再
910910
repo_and_org_access=仓库和组织访问权限
911911
permissions_public_only=仅公开
912912
permissions_access_all=全部(公开、私有和受限)
913-
select_permissions=选择权限
914913
permission_not_set=未设置
915914
permission_no_access=无访问权限
916915
permission_read=可读

options/locale/locale_zh-TW.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,6 @@ delete_token_success=已刪除 Token。使用此 Token 的應用程式無法再
907907
repo_and_org_access=儲存庫和組織存取
908908
permissions_public_only=僅公開
909909
permissions_access_all=全部 (公開、私有與受限)
910-
select_permissions=選擇權限
911910
permission_not_set=尚未設定
912911
permission_no_access=沒有權限
913912
permission_read=讀取

routers/web/repo/commit.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,18 +344,30 @@ func Diff(ctx *context.Context) {
344344
ctx.Data["Reponame"] = repoName
345345

346346
var parentCommit *git.Commit
347+
var parentCommitID string
347348
if commit.ParentCount() > 0 {
348349
parentCommit, err = gitRepo.GetCommit(parents[0])
349350
if err != nil {
350351
ctx.NotFound(err)
351352
return
352353
}
354+
parentCommitID = parentCommit.ID.String()
353355
}
354356
setCompareContext(ctx, parentCommit, commit, userName, repoName)
355357
ctx.Data["Title"] = commit.Summary() + " · " + base.ShortSha(commitID)
356358
ctx.Data["Commit"] = commit
357359
ctx.Data["Diff"] = diff
358360

361+
if !fileOnly {
362+
diffTree, err := gitdiff.GetDiffTree(ctx, gitRepo, false, parentCommitID, commitID)
363+
if err != nil {
364+
ctx.ServerError("GetDiffTree", err)
365+
return
366+
}
367+
368+
ctx.PageData["DiffFiles"] = transformDiffTreeForUI(diffTree, nil)
369+
}
370+
359371
statuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, commitID, db.ListOptionsAll)
360372
if err != nil {
361373
log.Error("GetLatestCommitStatus: %v", err)

routers/web/repo/compare.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,16 @@ func PrepareCompareDiff(
633633
ctx.Data["Diff"] = diff
634634
ctx.Data["DiffNotAvailable"] = diff.NumFiles == 0
635635

636+
if !fileOnly {
637+
diffTree, err := gitdiff.GetDiffTree(ctx, ci.HeadGitRepo, false, beforeCommitID, headCommitID)
638+
if err != nil {
639+
ctx.ServerError("GetDiffTree", err)
640+
return false
641+
}
642+
643+
ctx.PageData["DiffFiles"] = transformDiffTreeForUI(diffTree, nil)
644+
}
645+
636646
headCommit, err := ci.HeadGitRepo.GetCommit(headCommitID)
637647
if err != nil {
638648
ctx.ServerError("GetCommit", err)

routers/web/repo/pull.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,7 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi
761761

762762
var methodWithError string
763763
var diff *gitdiff.Diff
764+
shouldGetUserSpecificDiff := false
764765

765766
// if we're not logged in or only a single commit (or commit range) is shown we
766767
// have to load only the diff and not get the viewed information
@@ -772,6 +773,7 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi
772773
} else {
773774
diff, err = gitdiff.SyncAndGetUserSpecificDiff(ctx, ctx.Doer.ID, pull, gitRepo, diffOptions, files...)
774775
methodWithError = "SyncAndGetUserSpecificDiff"
776+
shouldGetUserSpecificDiff = true
775777
}
776778
if err != nil {
777779
ctx.ServerError(methodWithError, err)
@@ -816,6 +818,27 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi
816818
}
817819
}
818820

821+
if !fileOnly {
822+
// note: use mergeBase is set to false because we already have the merge base from the pull request info
823+
diffTree, err := gitdiff.GetDiffTree(ctx, gitRepo, false, pull.MergeBase, headCommitID)
824+
if err != nil {
825+
ctx.ServerError("GetDiffTree", err)
826+
return
827+
}
828+
829+
filesViewedState := make(map[string]pull_model.ViewedState)
830+
if shouldGetUserSpecificDiff {
831+
// This sort of sucks because we already fetch this when getting the diff
832+
review, err := pull_model.GetNewestReviewState(ctx, ctx.Doer.ID, issue.ID)
833+
if err == nil && review != nil && review.UpdatedFiles != nil {
834+
// If there wasn't an error and we have a review with updated files, use that
835+
filesViewedState = review.UpdatedFiles
836+
}
837+
}
838+
839+
ctx.PageData["DiffFiles"] = transformDiffTreeForUI(diffTree, filesViewedState)
840+
}
841+
819842
ctx.Data["Diff"] = diff
820843
ctx.Data["DiffNotAvailable"] = diff.NumFiles == 0
821844

routers/web/repo/treelist.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ package repo
66
import (
77
"net/http"
88

9+
pull_model "code.gitea.io/gitea/models/pull"
910
"code.gitea.io/gitea/modules/base"
1011
"code.gitea.io/gitea/modules/git"
1112
"code.gitea.io/gitea/services/context"
13+
"code.gitea.io/gitea/services/gitdiff"
1214

1315
"github.com/go-enry/go-enry/v2"
1416
)
@@ -52,3 +54,33 @@ func isExcludedEntry(entry *git.TreeEntry) bool {
5254

5355
return false
5456
}
57+
58+
type FileDiffFile struct {
59+
Name string
60+
NameHash string
61+
IsSubmodule bool
62+
IsViewed bool
63+
Status string
64+
}
65+
66+
// transformDiffTreeForUI transforms a DiffTree into a slice of FileDiffFile for UI rendering
67+
// it also takes a map of file names to their viewed state, which is used to mark files as viewed
68+
func transformDiffTreeForUI(diffTree *gitdiff.DiffTree, filesViewedState map[string]pull_model.ViewedState) []FileDiffFile {
69+
files := make([]FileDiffFile, 0, len(diffTree.Files))
70+
71+
for _, file := range diffTree.Files {
72+
nameHash := git.HashFilePathForWebUI(file.HeadPath)
73+
isSubmodule := file.HeadMode == git.EntryModeCommit
74+
isViewed := filesViewedState[file.HeadPath] == pull_model.Viewed
75+
76+
files = append(files, FileDiffFile{
77+
Name: file.HeadPath,
78+
NameHash: nameHash,
79+
IsSubmodule: isSubmodule,
80+
IsViewed: isViewed,
81+
Status: file.Status,
82+
})
83+
}
84+
85+
return files
86+
}

templates/repo/diff/box.tmpl

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -57,32 +57,6 @@
5757
<div>{{ctx.Locale.Tr "repo.pulls.showing_specified_commit_range" (ShortSha .BeforeCommitID) (ShortSha .AfterCommitID)}} - <a href="{{$.Issue.Link}}/files?style={{if $.IsSplitStyle}}split{{else}}unified{{end}}&whitespace={{$.WhitespaceBehavior}}&show-outdated={{$.ShowOutdatedComments}}">{{ctx.Locale.Tr "repo.pulls.show_all_commits"}}</a></div>
5858
</div>
5959
{{end}}
60-
<script id="diff-data-script" type="module">
61-
const diffDataFiles = [{{range $i, $file := .Diff.Files}}{Name:"{{$file.Name}}",NameHash:"{{$file.NameHash}}",Type:{{$file.Type}},IsBin:{{$file.IsBin}},IsSubmodule:{{$file.IsSubmodule}},Addition:{{$file.Addition}},Deletion:{{$file.Deletion}},IsViewed:{{$file.IsViewed}}},{{end}}];
62-
const diffData = {
63-
isIncomplete: {{.Diff.IsIncomplete}},
64-
tooManyFilesMessage: "{{ctx.Locale.Tr "repo.diff.too_many_files"}}",
65-
binaryFileMessage: "{{ctx.Locale.Tr "repo.diff.bin"}}",
66-
showMoreMessage: "{{ctx.Locale.Tr "repo.diff.show_more"}}",
67-
statisticsMessage: "{{ctx.Locale.Tr "repo.diff.stats_desc_file"}}",
68-
linkLoadMore: "?skip-to={{.Diff.End}}&file-only=true",
69-
};
70-
71-
// for first time loading, the diffFileInfo is a plain object
72-
// after the Vue component is mounted, the diffFileInfo is a reactive object
73-
// keep in mind that this script block would be executed many times when loading more files, by "loadMoreFiles"
74-
let diffFileInfo = window.config.pageData.diffFileInfo || {
75-
files:[],
76-
fileTreeIsVisible: false,
77-
fileListIsVisible: false,
78-
isLoadingNewData: false,
79-
selectedItem: '',
80-
};
81-
diffFileInfo = Object.assign(diffFileInfo, diffData);
82-
diffFileInfo.files.push(...diffDataFiles);
83-
window.config.pageData.diffFileInfo = diffFileInfo;
84-
</script>
85-
<div id="diff-file-list"></div>
8660
{{end}}
8761
<div id="diff-container">
8862
{{if $showFileTree}}

templates/repo/diff/options_dropdown.tmpl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<div class="ui dropdown tiny basic button" data-tooltip-content="{{ctx.Locale.Tr "repo.diff.options_button"}}">
22
{{svg "octicon-kebab-horizontal"}}
33
<div class="menu">
4-
<a class="item" id="show-file-list-btn">{{ctx.Locale.Tr "repo.diff.show_diff_stats"}}</a>
54
{{if .Issue.Index}}
65
<a class="item" href="{{$.RepoLink}}/pulls/{{.Issue.Index}}.patch" download="{{.Issue.Index}}.patch">{{ctx.Locale.Tr "repo.diff.download_patch"}}</a>
76
<a class="item" href="{{$.RepoLink}}/pulls/{{.Issue.Index}}.diff" download="{{.Issue.Index}}.diff">{{ctx.Locale.Tr "repo.diff.download_diff"}}</a>

web_src/js/components/DiffFileList.vue

Lines changed: 0 additions & 60 deletions
This file was deleted.

0 commit comments

Comments
 (0)