diff options
author | 6543 <6543@obermui.de> | 2019-12-24 03:33:52 +0100 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2019-12-24 10:33:52 +0800 |
commit | 40e99ea010b3b0be241be0e1365a70d33777bcf2 (patch) | |
tree | cc7930e51a8ed41fcb183dae075d7ab211d06834 /modules/repofiles | |
parent | 017f314b5a0f930b477efa1c2a5309f8cdd6d3c3 (diff) | |
download | gitea-40e99ea010b3b0be241be0e1365a70d33777bcf2.tar.gz gitea-40e99ea010b3b0be241be0e1365a70d33777bcf2.zip |
[API] Extend contents with dates (#9464)
* extend CommitTree func
* make sure Date NOT nil
* spell corection
Co-Authored-By: zeripath <art27@cantab.net>
* add TEST
Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'modules/repofiles')
-rw-r--r-- | modules/repofiles/delete.go | 8 | ||||
-rw-r--r-- | modules/repofiles/temp_repo.go | 10 | ||||
-rw-r--r-- | modules/repofiles/update.go | 15 |
3 files changed, 28 insertions, 5 deletions
diff --git a/modules/repofiles/delete.go b/modules/repofiles/delete.go index 95b0804025..43937c49e1 100644 --- a/modules/repofiles/delete.go +++ b/modules/repofiles/delete.go @@ -23,6 +23,7 @@ type DeleteRepoFileOptions struct { SHA string Author *IdentityOptions Committer *IdentityOptions + Dates *CommitDateOptions } // DeleteRepoFile deletes a file in the given repository @@ -168,7 +169,12 @@ func DeleteRepoFile(repo *models.Repository, doer *models.User, opts *DeleteRepo } // Now commit the tree - commitHash, err := t.CommitTree(author, committer, treeHash, message) + var commitHash string + if opts.Dates != nil { + commitHash, err = t.CommitTreeWithDate(author, committer, treeHash, message, opts.Dates.Author, opts.Dates.Committer) + } else { + commitHash, err = t.CommitTree(author, committer, treeHash, message) + } if err != nil { return nil, err } diff --git a/modules/repofiles/temp_repo.go b/modules/repofiles/temp_repo.go index 6bd775d9d2..f9ea4ba155 100644 --- a/modules/repofiles/temp_repo.go +++ b/modules/repofiles/temp_repo.go @@ -188,7 +188,11 @@ func (t *TemporaryUploadRepository) GetLastCommitByRef(ref string) (string, erro // CommitTree creates a commit from a given tree for the user with provided message func (t *TemporaryUploadRepository) CommitTree(author, committer *models.User, treeHash string, message string) (string, error) { - commitTimeStr := time.Now().Format(time.RFC3339) + return t.CommitTreeWithDate(author, committer, treeHash, message, time.Now(), time.Now()) +} + +// CommitTreeWithDate creates a commit from a given tree for the user with provided message +func (t *TemporaryUploadRepository) CommitTreeWithDate(author, committer *models.User, treeHash string, message string, authorDate, committerDate time.Time) (string, error) { authorSig := author.NewGitSig() committerSig := committer.NewGitSig() @@ -201,10 +205,10 @@ func (t *TemporaryUploadRepository) CommitTree(author, committer *models.User, t env := append(os.Environ(), "GIT_AUTHOR_NAME="+authorSig.Name, "GIT_AUTHOR_EMAIL="+authorSig.Email, - "GIT_AUTHOR_DATE="+commitTimeStr, + "GIT_AUTHOR_DATE="+authorDate.Format(time.RFC3339), "GIT_COMMITTER_NAME="+committerSig.Name, "GIT_COMMITTER_EMAIL="+committerSig.Email, - "GIT_COMMITTER_DATE="+commitTimeStr, + "GIT_COMMITTER_DATE="+committerDate.Format(time.RFC3339), ) messageBytes := new(bytes.Buffer) diff --git a/modules/repofiles/update.go b/modules/repofiles/update.go index 4d2f1d5f04..8a95b4422c 100644 --- a/modules/repofiles/update.go +++ b/modules/repofiles/update.go @@ -10,6 +10,7 @@ import ( "fmt" "path" "strings" + "time" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/cache" @@ -31,6 +32,12 @@ type IdentityOptions struct { Email string } +// CommitDateOptions store dates for GIT_AUTHOR_DATE and GIT_COMMITTER_DATE +type CommitDateOptions struct { + Author time.Time + Committer time.Time +} + // UpdateRepoFileOptions holds the repository file update options type UpdateRepoFileOptions struct { LastCommitID string @@ -44,6 +51,7 @@ type UpdateRepoFileOptions struct { IsNewFile bool Author *IdentityOptions Committer *IdentityOptions + Dates *CommitDateOptions } func detectEncodingAndBOM(entry *git.TreeEntry, repo *models.Repository) (string, bool) { @@ -371,7 +379,12 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up } // Now commit the tree - commitHash, err := t.CommitTree(author, committer, treeHash, message) + var commitHash string + if opts.Dates != nil { + commitHash, err = t.CommitTreeWithDate(author, committer, treeHash, message, opts.Dates.Author, opts.Dates.Committer) + } else { + commitHash, err = t.CommitTree(author, committer, treeHash, message) + } if err != nil { return nil, err } |