aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/git/attribute/attribute.go1
-rw-r--r--services/gitdiff/gitdiff.go7
-rw-r--r--web_src/js/features/repo-issue.ts7
-rw-r--r--web_src/js/features/repo-migration.ts8
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);
});
}