mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
2978 files. The fork is 2026-07-15 (rebrand: gitea.dev -> github.com/hanzoai/git), so 2026 is the year, and "Copyright 2026 Hanzo AI, Inc." was already the form used by the handful of files that had ours. Shape is now: // Copyright 2026 Hanzo AI, Inc. All rights reserved. // Copyright 2015 The Gogs Authors. All rights reserved. // Copyright 2019 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT Ours on top, theirs retained verbatim. Retained because MIT requires it, and separately because they are true — those authors did write that code. Not renamed to "The Git Authors": Git is a different project under a different license, and putting its name here would attribute this code to people who have nothing to do with it. Adding our line is the fix; overwriting theirs would have been both a licence violation and a false statement. gofmt still reports import-order drift in some of these files. It predates this change (verified against a stash) and is left alone rather than burying a one-line-per-file legal change under 3000 files of unrelated reordering. Build clean. Co-authored-by: Hanzo Dev <[email protected]>
68 lines
2.5 KiB
Go
68 lines
2.5 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// Copyright 2025 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package gitdiff
|
|
|
|
import (
|
|
"context"
|
|
"html/template"
|
|
|
|
"github.com/hanzoai/git/modules/base"
|
|
"github.com/hanzoai/git/modules/git"
|
|
"github.com/hanzoai/git/modules/htmlutil"
|
|
"github.com/hanzoai/git/modules/log"
|
|
)
|
|
|
|
type SubmoduleDiffInfo struct {
|
|
SubmoduleName string
|
|
SubmoduleFile *git.CommitSubmoduleFile // it might be nil if the submodule is not found or unable to parse
|
|
NewRefID string
|
|
PreviousRefID string
|
|
}
|
|
|
|
func (si *SubmoduleDiffInfo) PopulateURL(ctx context.Context, repoLink string, gitRepo *git.Repository, diffFile *DiffFile, leftCommit, rightCommit *git.Commit) {
|
|
si.SubmoduleName = diffFile.Name
|
|
submoduleCommit := rightCommit // If the submodule is added or updated, check at the right commit
|
|
if diffFile.IsDeleted {
|
|
submoduleCommit = leftCommit // If the submodule is deleted, check at the left commit
|
|
}
|
|
if submoduleCommit == nil {
|
|
return
|
|
}
|
|
|
|
submoduleFullPath := diffFile.GetDiffFileName()
|
|
submodule, err := submoduleCommit.GetSubModule(ctx, gitRepo, submoduleFullPath)
|
|
if err != nil {
|
|
log.Error("Unable to PopulateURL for submodule %q: GetSubModule: %v", submoduleFullPath, err)
|
|
return // ignore the error, do not cause 500 errors for end users
|
|
}
|
|
if submodule != nil {
|
|
si.SubmoduleFile = git.NewCommitSubmoduleFile(repoLink, submoduleFullPath, submodule.URL, submoduleCommit.ID.String())
|
|
}
|
|
}
|
|
|
|
func (si *SubmoduleDiffInfo) CommitRefIDLinkHTML(ctx context.Context, commitID string) template.HTML {
|
|
webLink := si.SubmoduleFile.SubmoduleWebLinkTree(ctx, commitID)
|
|
if webLink == nil {
|
|
return htmlutil.HTMLFormat("%s", base.ShortSha(commitID))
|
|
}
|
|
return htmlutil.HTMLFormat(`<a href="%s">%s</a>`, webLink.CommitWebLink, base.ShortSha(commitID))
|
|
}
|
|
|
|
func (si *SubmoduleDiffInfo) CompareRefIDLinkHTML(ctx context.Context) template.HTML {
|
|
webLink := si.SubmoduleFile.SubmoduleWebLinkCompare(ctx, si.PreviousRefID, si.NewRefID)
|
|
if webLink == nil {
|
|
return htmlutil.HTMLFormat("%s...%s", base.ShortSha(si.PreviousRefID), base.ShortSha(si.NewRefID))
|
|
}
|
|
return htmlutil.HTMLFormat(`<a href="%s">%s...%s</a>`, webLink.CommitWebLink, base.ShortSha(si.PreviousRefID), base.ShortSha(si.NewRefID))
|
|
}
|
|
|
|
func (si *SubmoduleDiffInfo) SubmoduleRepoLinkHTML(ctx context.Context) template.HTML {
|
|
webLink := si.SubmoduleFile.SubmoduleWebLinkTree(ctx)
|
|
if webLink == nil {
|
|
return htmlutil.HTMLFormat("%s", si.SubmoduleName)
|
|
}
|
|
return htmlutil.HTMLFormat(`<a href="%s">%s</a>`, webLink.RepoWebLink, si.SubmoduleName)
|
|
}
|