files

package
v1.24.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 10, 2025 License: MIT Imports: 30 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyDiffPatch added in v1.17.0

ApplyDiffPatch applies a patch to the given repository

func ChangeRepoFiles added in v1.20.0

ChangeRepoFiles adds, updates or removes multiple files in the given repository

func CherryPick added in v1.17.0

func CherryPick(ctx context.Context, repo *repo_model.Repository, doer *user_model.User, revert bool, opts *ApplyDiffPatchOptions) (*structs.FileResponse, error)

CherryPick cherry-picks or reverts a commit to the given repository

func CleanUploadFileName

func CleanUploadFileName(name string) string

CleanUploadFileName Trims a filename and returns empty string if it is a .git directory

func CountDivergingCommits

func CountDivergingCommits(ctx context.Context, repo *repo_model.Repository, branch string) (*git.DivergeObject, error)

CountDivergingCommits determines how many commits a branch is ahead or behind the repository's base branch

func CreateOrUpdateFile added in v1.20.0

func CreateOrUpdateFile(ctx context.Context, t *TemporaryUploadRepository, file *ChangeRepoFile, contentStore *lfs.ContentStore, repoID int64, hasOldBranch bool) error

CreateOrUpdateFile handles creating or updating a file for ChangeRepoFiles

func GetBlobBySHA

func GetBlobBySHA(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository, sha string) (*api.GitBlobResponse, error)

GetBlobBySHA get the GitBlobResponse of a repository using a sha hash.

func GetContents

func GetContents(ctx context.Context, repo *repo_model.Repository, refCommit *utils.RefCommit, treePath string, forList bool) (*api.ContentsResponse, error)

GetContents gets the metadata on a file's contents. Ref can be a branch, commit or tag

func GetContentsListFromTreePaths added in v1.24.0

func GetContentsListFromTreePaths(ctx context.Context, repo *repo_model.Repository, refCommit *utils.RefCommit, treePaths []string) (files []*api.ContentsResponse)

func GetContentsOrList

func GetContentsOrList(ctx context.Context, repo *repo_model.Repository, refCommit *utils.RefCommit, treePath string) (any, error)

GetContentsOrList gets the metadata of a file's contents (*ContentsResponse) if treePath not a tree directory, otherwise a listing of file contents ([]*ContentsResponse). Ref can be a branch, commit or tag

func GetDiffPreview

func GetDiffPreview(ctx context.Context, repo *repo_model.Repository, branch, treePath, content string) (*gitdiff.Diff, error)

GetDiffPreview produces and returns diff result of a file which is not yet committed.

func GetFileCommitResponse

func GetFileCommitResponse(repo *repo_model.Repository, commit *git.Commit) (*api.FileCommitResponse, error)

GetFileCommitResponse Constructs a FileCommitResponse from a Commit object

func GetFileResponseFromFilesResponse added in v1.20.0

func GetFileResponseFromFilesResponse(filesResponse *api.FilesResponse, index int) *api.FileResponse

constructs a FileResponse with the file at the index from FilesResponse

func GetFilesResponseFromCommit added in v1.20.0

func GetFilesResponseFromCommit(ctx context.Context, repo *repo_model.Repository, refCommit *utils.RefCommit, treeNames []string) (*api.FilesResponse, error)

func GetPayloadCommitVerification

func GetPayloadCommitVerification(ctx context.Context, commit *git.Commit) *structs.PayloadCommitVerification

GetPayloadCommitVerification returns the verification information of a commit

func GetTreeBySHA

func GetTreeBySHA(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository, sha string, page, perPage int, recursive bool) (*api.GitTreeResponse, error)

GetTreeBySHA get the GitTreeResponse of a repository using a sha hash.

func IsErrCommitIDDoesNotMatch added in v1.24.0

func IsErrCommitIDDoesNotMatch(err error) bool

IsErrCommitIDDoesNotMatch checks if an error is a ErrCommitIDDoesNotMatch.

func IsErrFilePathInvalid added in v1.24.0

func IsErrFilePathInvalid(err error) bool

IsErrFilePathInvalid checks if an error is an ErrFilePathInvalid.

func IsErrFilenameInvalid added in v1.24.0

func IsErrFilenameInvalid(err error) bool

IsErrFilenameInvalid checks if an error is an ErrFilenameInvalid.

func IsErrRepoFileAlreadyExists added in v1.24.0

func IsErrRepoFileAlreadyExists(err error) bool

IsErrRepoFileAlreadyExists checks if an error is a ErrRepoFileAlreadyExists.

func IsErrRepoFileDoesNotExist added in v1.24.0

func IsErrRepoFileDoesNotExist(err error) bool

IsErrRepoFileDoesNotExist checks if an error is a ErrRepoDoesNotExist.

func IsErrSHANotFound added in v1.24.0

func IsErrSHANotFound(err error) bool

IsErrSHANotFound checks if an error is a ErrSHANotFound.

func IsErrSHAOrCommitIDNotProvided added in v1.24.0

func IsErrSHAOrCommitIDNotProvided(err error) bool

IsErrSHAOrCommitIDNotProvided checks if an error is a ErrSHAOrCommitIDNotProvided.

func IsErrUserCannotCommit added in v1.24.0

func IsErrUserCannotCommit(err error) bool

IsErrUserCannotCommit checks if an error is an ErrUserCannotCommit.

func UploadRepoFiles

func UploadRepoFiles(ctx context.Context, repo *repo_model.Repository, doer *user_model.User, opts *UploadRepoFileOptions) error

UploadRepoFiles uploads files to the given repository

func VerifyBranchProtection

func VerifyBranchProtection(ctx context.Context, repo *repo_model.Repository, doer *user_model.User, branchName string, treePaths []string) error

VerifyBranchProtection verify the branch protection for modifying the given treePath on the given branch

Types

type ApplyDiffPatchOptions added in v1.17.0

type ApplyDiffPatchOptions struct {
	LastCommitID string
	OldBranch    string
	NewBranch    string
	Message      string
	Content      string
	SHA          string
	Author       *IdentityOptions
	Committer    *IdentityOptions
	Dates        *CommitDateOptions
	Signoff      bool
}

ApplyDiffPatchOptions holds the repository diff patch update options

func (*ApplyDiffPatchOptions) Validate added in v1.17.0

func (opts *ApplyDiffPatchOptions) Validate(ctx context.Context, repo *repo_model.Repository, doer *user_model.User) error

Validate validates the provided options

type ChangeRepoFile added in v1.20.0

type ChangeRepoFile struct {
	Operation     string
	TreePath      string
	FromTreePath  string
	ContentReader io.ReadSeeker
	SHA           string
	Options       *RepoFileOptions
}

type ChangeRepoFilesOptions added in v1.20.0

type ChangeRepoFilesOptions struct {
	LastCommitID string
	OldBranch    string
	NewBranch    string
	Message      string
	Files        []*ChangeRepoFile
	Author       *IdentityOptions
	Committer    *IdentityOptions
	Dates        *CommitDateOptions
	Signoff      bool
}

ChangeRepoFilesOptions holds the repository files update options

type CommitDateOptions

type CommitDateOptions struct {
	Author    time.Time
	Committer time.Time
}

CommitDateOptions store dates for GIT_AUTHOR_DATE and GIT_COMMITTER_DATE

type CommitTreeUserOptions added in v1.24.0

type CommitTreeUserOptions struct {
	ParentCommitID string
	TreeHash       string
	CommitMessage  string
	SignOff        bool

	DoerUser *user_model.User

	AuthorIdentity    *IdentityOptions // if nil, use doer
	AuthorTime        *time.Time       // if nil, use now
	CommitterIdentity *IdentityOptions
	CommitterTime     *time.Time
}

type ContentType

type ContentType string

ContentType repo content type

const (
	ContentTypeRegular   ContentType = "file"      // regular content type (file)
	ContentTypeDir       ContentType = "dir"       // dir content type (dir)
	ContentTypeLink      ContentType = "symlink"   // link content type (symlink)
	ContentTypeSubmodule ContentType = "submodule" // submodule content type (submodule)
)

The string representations of different content types

func GetObjectTypeFromTreeEntry added in v1.17.4

func GetObjectTypeFromTreeEntry(entry *git.TreeEntry) ContentType

GetObjectTypeFromTreeEntry check what content is behind it

func (*ContentType) String

func (ct *ContentType) String() string

String gets the string of ContentType

type ErrCommitIDDoesNotMatch added in v1.24.0

type ErrCommitIDDoesNotMatch struct {
	GivenCommitID   string
	CurrentCommitID string
}

ErrCommitIDDoesNotMatch represents a "CommitIDDoesNotMatch" kind of error.

func (ErrCommitIDDoesNotMatch) Error added in v1.24.0

func (err ErrCommitIDDoesNotMatch) Error() string

type ErrFilePathInvalid added in v1.24.0

type ErrFilePathInvalid struct {
	Message string
	Path    string
	Name    string
	Type    git.EntryMode
}

ErrFilePathInvalid represents a "FilePathInvalid" kind of error.

func (ErrFilePathInvalid) Error added in v1.24.0

func (err ErrFilePathInvalid) Error() string

func (ErrFilePathInvalid) Unwrap added in v1.24.0

func (err ErrFilePathInvalid) Unwrap() error

type ErrFilenameInvalid added in v1.24.0

type ErrFilenameInvalid struct {
	Path string
}

ErrFilenameInvalid represents a "FilenameInvalid" kind of error.

func (ErrFilenameInvalid) Error added in v1.24.0

func (err ErrFilenameInvalid) Error() string

func (ErrFilenameInvalid) Unwrap added in v1.24.0

func (err ErrFilenameInvalid) Unwrap() error

type ErrRepoFileAlreadyExists added in v1.24.0

type ErrRepoFileAlreadyExists struct {
	Path string
}

ErrRepoFileAlreadyExists represents a "RepoFileAlreadyExist" kind of error.

func (ErrRepoFileAlreadyExists) Error added in v1.24.0

func (err ErrRepoFileAlreadyExists) Error() string

func (ErrRepoFileAlreadyExists) Unwrap added in v1.24.0

func (err ErrRepoFileAlreadyExists) Unwrap() error

type ErrRepoFileDoesNotExist added in v1.24.0

type ErrRepoFileDoesNotExist struct {
	Path string
	Name string
}

ErrRepoFileDoesNotExist represents a "RepoFileDoesNotExist" kind of error.

func (ErrRepoFileDoesNotExist) Error added in v1.24.0

func (err ErrRepoFileDoesNotExist) Error() string

func (ErrRepoFileDoesNotExist) Unwrap added in v1.24.0

func (err ErrRepoFileDoesNotExist) Unwrap() error

type ErrSHANotFound added in v1.24.0

type ErrSHANotFound struct {
	SHA string
}

ErrSHANotFound represents a "SHADoesNotMatch" kind of error.

func (ErrSHANotFound) Error added in v1.24.0

func (err ErrSHANotFound) Error() string

func (ErrSHANotFound) Unwrap added in v1.24.0

func (err ErrSHANotFound) Unwrap() error

type ErrSHAOrCommitIDNotProvided added in v1.24.0

type ErrSHAOrCommitIDNotProvided struct{}

ErrSHAOrCommitIDNotProvided represents a "SHAOrCommitIDNotProvided" kind of error.

func (ErrSHAOrCommitIDNotProvided) Error added in v1.24.0

func (err ErrSHAOrCommitIDNotProvided) Error() string

type ErrUserCannotCommit added in v1.24.0

type ErrUserCannotCommit struct {
	UserName string
}

ErrUserCannotCommit represents "UserCannotCommit" kind of error.

func (ErrUserCannotCommit) Error added in v1.24.0

func (err ErrUserCannotCommit) Error() string

func (ErrUserCannotCommit) Unwrap added in v1.24.0

func (err ErrUserCannotCommit) Unwrap() error

type IdentityOptions

type IdentityOptions struct {
	GitUserName  string // to match "git config user.name"
	GitUserEmail string // to match "git config user.email"
}

IdentityOptions for a person's identity like an author or committer

type RepoFileOptions added in v1.20.0

type RepoFileOptions struct {
	// contains filtered or unexported fields
}

type TemporaryUploadRepository

type TemporaryUploadRepository struct {
	// contains filtered or unexported fields
}

TemporaryUploadRepository is a type to wrap our upload repositories as a shallow clone

func NewTemporaryUploadRepository

func NewTemporaryUploadRepository(repo *repo_model.Repository) (*TemporaryUploadRepository, error)

NewTemporaryUploadRepository creates a new temporary upload repository

func (*TemporaryUploadRepository) AddObjectToIndex

func (t *TemporaryUploadRepository) AddObjectToIndex(ctx context.Context, mode, objectHash, objectPath string) error

AddObjectToIndex adds the provided object hash to the index with the provided mode and path

func (*TemporaryUploadRepository) Clone

func (t *TemporaryUploadRepository) Clone(ctx context.Context, branch string, bare bool) error

Clone the base repository to our path and set branch as the HEAD

func (*TemporaryUploadRepository) Close

func (t *TemporaryUploadRepository) Close()

Close the repository cleaning up all files

func (*TemporaryUploadRepository) CommitTree

CommitTree creates a commit from a given tree for the user with provided message

func (*TemporaryUploadRepository) DiffIndex

DiffIndex returns a Diff of the current index to the head

func (*TemporaryUploadRepository) GetBranchCommit

func (t *TemporaryUploadRepository) GetBranchCommit(branch string) (*git.Commit, error)

GetBranchCommit Gets the commit object of the given branch

func (*TemporaryUploadRepository) GetCommit

func (t *TemporaryUploadRepository) GetCommit(commitID string) (*git.Commit, error)

GetCommit Gets the commit object of the given commit ID

func (*TemporaryUploadRepository) GetLastCommit

func (t *TemporaryUploadRepository) GetLastCommit(ctx context.Context) (string, error)

GetLastCommit gets the last commit ID SHA of the repo

func (*TemporaryUploadRepository) GetLastCommitByRef

func (t *TemporaryUploadRepository) GetLastCommitByRef(ctx context.Context, ref string) (string, error)

GetLastCommitByRef gets the last commit ID SHA of the repo by ref

func (*TemporaryUploadRepository) HashObject

func (t *TemporaryUploadRepository) HashObject(ctx context.Context, content io.Reader) (string, error)

HashObject writes the provided content to the object db and returns its hash

func (*TemporaryUploadRepository) Init added in v1.17.0

func (t *TemporaryUploadRepository) Init(ctx context.Context, objectFormatName string) error

Init the repository

func (*TemporaryUploadRepository) LsFiles

func (t *TemporaryUploadRepository) LsFiles(ctx context.Context, filenames ...string) ([]string, error)

LsFiles checks if the given filename arguments are in the index

func (*TemporaryUploadRepository) Push

func (t *TemporaryUploadRepository) Push(ctx context.Context, doer *user_model.User, commitHash, branch string) error

Push the provided commitHash to the repository branch by the provided user

func (*TemporaryUploadRepository) RefreshIndex added in v1.21.5

func (t *TemporaryUploadRepository) RefreshIndex(ctx context.Context) error

RefreshIndex looks at the current index and checks to see if merges or updates are needed by checking stat() information.

func (*TemporaryUploadRepository) RemoveFilesFromIndex

func (t *TemporaryUploadRepository) RemoveFilesFromIndex(ctx context.Context, filenames ...string) error

RemoveFilesFromIndex removes the given files from the index

func (*TemporaryUploadRepository) SetDefaultIndex

func (t *TemporaryUploadRepository) SetDefaultIndex(ctx context.Context) error

SetDefaultIndex sets the git index to our HEAD

func (*TemporaryUploadRepository) WriteTree

func (t *TemporaryUploadRepository) WriteTree(ctx context.Context) (string, error)

WriteTree writes the current index as a tree to the object db and returns its hash

type TreeViewNode added in v1.24.0

type TreeViewNode struct {
	EntryName     string        `json:"entryName"`
	EntryMode     string        `json:"entryMode"`
	EntryIcon     template.HTML `json:"entryIcon"`
	EntryIconOpen template.HTML `json:"entryIconOpen,omitempty"`

	SymLinkedToMode string `json:"symLinkedToMode,omitempty"` // TODO: for the EntryMode="symlink"

	FullPath     string          `json:"fullPath"`
	SubmoduleURL string          `json:"submoduleUrl,omitempty"`
	Children     []*TreeViewNode `json:"children,omitempty"`
}

func GetTreeViewNodes added in v1.24.0

func GetTreeViewNodes(ctx context.Context, renderedIconPool *fileicon.RenderedIconPool, commit *git.Commit, treePath, subPath string) ([]*TreeViewNode, error)

type UploadRepoFileOptions

type UploadRepoFileOptions struct {
	LastCommitID string
	OldBranch    string
	NewBranch    string
	TreePath     string
	Message      string
	Files        []string // In UUID format.
	Signoff      bool
	Author       *IdentityOptions
	Committer    *IdentityOptions
}

UploadRepoFileOptions contains the uploaded repository file options

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL