diff options
-rw-r--r-- | modules/git/attribute/attribute.go | 1 | ||||
-rw-r--r-- | services/gitdiff/gitdiff.go | 7 | ||||
-rw-r--r-- | web_src/js/features/repo-issue.ts | 7 | ||||
-rw-r--r-- | web_src/js/features/repo-migration.ts | 8 |
4 files changed, 18 insertions, 5 deletions
diff --git a/modules/git/attribute/attribute.go b/modules/git/attribute/attribute.go index adf323ef41..9c01cb339e 100644 --- a/modules/git/attribute/attribute.go +++ b/modules/git/attribute/attribute.go @@ -20,6 +20,7 @@ const ( GitlabLanguage = "gitlab-language" Lockable = "lockable" Filter = "filter" + Diff = "diff" ) var LinguistAttributes = []string{ diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index a10da8d5df..a3d2e39948 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -1239,7 +1239,7 @@ func GetDiffForRender(ctx context.Context, repoLink string, gitRepo *git.Reposit return nil, err } - checker, err := attribute.NewBatchChecker(gitRepo, opts.AfterCommitID, []string{attribute.LinguistVendored, attribute.LinguistGenerated, attribute.LinguistLanguage, attribute.GitlabLanguage}) + checker, err := attribute.NewBatchChecker(gitRepo, opts.AfterCommitID, []string{attribute.LinguistVendored, attribute.LinguistGenerated, attribute.LinguistLanguage, attribute.GitlabLanguage, attribute.Diff}) if err != nil { return nil, err } @@ -1248,6 +1248,7 @@ func GetDiffForRender(ctx context.Context, repoLink string, gitRepo *git.Reposit for _, diffFile := range diff.Files { isVendored := optional.None[bool]() isGenerated := optional.None[bool]() + attrDiff := optional.None[string]() attrs, err := checker.CheckPath(diffFile.Name) if err == nil { isVendored, isGenerated = attrs.GetVendored(), attrs.GetGenerated() @@ -1255,6 +1256,7 @@ func GetDiffForRender(ctx context.Context, repoLink string, gitRepo *git.Reposit if language.Has() { diffFile.Language = language.Value() } + attrDiff = attrs.Get(attribute.Diff).ToString() } // Populate Submodule URLs @@ -1276,7 +1278,8 @@ func GetDiffForRender(ctx context.Context, repoLink string, gitRepo *git.Reposit diffFile.Sections = append(diffFile.Sections, tailSection) } - if !setting.Git.DisableDiffHighlight { + shouldFullFileHighlight := !setting.Git.DisableDiffHighlight && attrDiff.Value() == "" + if shouldFullFileHighlight { if limitedContent.LeftContent != nil && limitedContent.LeftContent.buf.Len() < MaxDiffHighlightEntireFileSize { diffFile.highlightedLeftLines = highlightCodeLines(diffFile, true /* left */, limitedContent.LeftContent.buf.String()) } diff --git a/web_src/js/features/repo-issue.ts b/web_src/js/features/repo-issue.ts index bc7d4dee19..213c8fcfad 100644 --- a/web_src/js/features/repo-issue.ts +++ b/web_src/js/features/repo-issue.ts @@ -547,7 +547,12 @@ function initIssueTemplateCommentEditors(commentForm: HTMLFormElement) { // deactivate all markdown editors showElem(commentForm.querySelectorAll('.combo-editor-dropzone .form-field-real')); hideElem(commentForm.querySelectorAll('.combo-editor-dropzone .combo-markdown-editor')); - hideElem(commentForm.querySelectorAll('.combo-editor-dropzone .form-field-dropzone')); + queryElems(commentForm, '.combo-editor-dropzone .form-field-dropzone', (dropzoneContainer) => { + // if "form-field-dropzone" exists, then "dropzone" must also exist + const dropzone = dropzoneContainer.querySelector<HTMLElement>('.dropzone').dropzone; + const hasUploadedFiles = dropzone.files.length !== 0; + toggleElem(dropzoneContainer, hasUploadedFiles); + }); // activate this markdown editor hideElem(fieldTextarea); diff --git a/web_src/js/features/repo-migration.ts b/web_src/js/features/repo-migration.ts index 4914e47267..0b348b45fb 100644 --- a/web_src/js/features/repo-migration.ts +++ b/web_src/js/features/repo-migration.ts @@ -34,8 +34,12 @@ export function initRepoMigration() { elCloneAddr.addEventListener('input', () => { if (repoNameChanged) return; let repoNameFromUrl = elCloneAddr.value.split(/[?#]/)[0]; - repoNameFromUrl = /^(.*\/)?((.+?)\/?)$/.exec(repoNameFromUrl)[3]; - repoNameFromUrl = repoNameFromUrl.split(/[?#]/)[0]; + const parts = /^(.*\/)?((.+?)\/?)$/.exec(repoNameFromUrl); + if (!parts || parts.length < 4) { + elRepoName.value = ''; + return; + } + repoNameFromUrl = parts[3].split(/[?#]/)[0]; elRepoName.value = sanitizeRepoName(repoNameFromUrl); }); } |