diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/forms/repo_form.go | 3 | ||||
-rw-r--r-- | modules/repofiles/delete.go | 5 | ||||
-rw-r--r-- | modules/repofiles/temp_repo.go | 13 | ||||
-rw-r--r-- | modules/repofiles/update.go | 5 | ||||
-rw-r--r-- | modules/repofiles/upload.go | 3 | ||||
-rw-r--r-- | modules/structs/repo_file.go | 2 |
6 files changed, 23 insertions, 8 deletions
diff --git a/modules/forms/repo_form.go b/modules/forms/repo_form.go index 4a478c7d35..4d37ab072b 100644 --- a/modules/forms/repo_form.go +++ b/modules/forms/repo_form.go @@ -698,6 +698,7 @@ type EditRepoFileForm struct { CommitChoice string `binding:"Required;MaxSize(50)"` NewBranchName string `binding:"GitRefName;MaxSize(100)"` LastCommit string + Signoff bool } // Validate validates the fields @@ -733,6 +734,7 @@ type UploadRepoFileForm struct { CommitChoice string `binding:"Required;MaxSize(50)"` NewBranchName string `binding:"GitRefName;MaxSize(100)"` Files []string + Signoff bool } // Validate validates the fields @@ -766,6 +768,7 @@ type DeleteRepoFileForm struct { CommitChoice string `binding:"Required;MaxSize(50)"` NewBranchName string `binding:"GitRefName;MaxSize(100)"` LastCommit string + Signoff bool } // Validate validates the fields diff --git a/modules/repofiles/delete.go b/modules/repofiles/delete.go index 8343776c47..2b8ddf3cc2 100644 --- a/modules/repofiles/delete.go +++ b/modules/repofiles/delete.go @@ -25,6 +25,7 @@ type DeleteRepoFileOptions struct { Author *IdentityOptions Committer *IdentityOptions Dates *CommitDateOptions + Signoff bool } // DeleteRepoFile deletes a file in the given repository @@ -199,9 +200,9 @@ func DeleteRepoFile(repo *models.Repository, doer *models.User, opts *DeleteRepo // Now commit the tree var commitHash string if opts.Dates != nil { - commitHash, err = t.CommitTreeWithDate(author, committer, treeHash, message, opts.Dates.Author, opts.Dates.Committer) + commitHash, err = t.CommitTreeWithDate(author, committer, treeHash, message, opts.Signoff, opts.Dates.Author, opts.Dates.Committer) } else { - commitHash, err = t.CommitTree(author, committer, treeHash, message) + commitHash, err = t.CommitTree(author, committer, treeHash, message, opts.Signoff) } if err != nil { return nil, err diff --git a/modules/repofiles/temp_repo.go b/modules/repofiles/temp_repo.go index a02bba65e9..99c62a16c6 100644 --- a/modules/repofiles/temp_repo.go +++ b/modules/repofiles/temp_repo.go @@ -185,12 +185,12 @@ 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) { - return t.CommitTreeWithDate(author, committer, treeHash, message, time.Now(), time.Now()) +func (t *TemporaryUploadRepository) CommitTree(author, committer *models.User, treeHash string, message string, signoff bool) (string, error) { + return t.CommitTreeWithDate(author, committer, treeHash, message, signoff, 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) { +func (t *TemporaryUploadRepository) CommitTreeWithDate(author, committer *models.User, treeHash string, message string, signoff bool, authorDate, committerDate time.Time) (string, error) { authorSig := author.NewGitSig() committerSig := committer.NewGitSig() @@ -236,6 +236,13 @@ func (t *TemporaryUploadRepository) CommitTreeWithDate(author, committer *models } } + if signoff { + // Signed-off-by + _, _ = messageBytes.WriteString("\n") + _, _ = messageBytes.WriteString("Signed-off-by: ") + _, _ = messageBytes.WriteString(committerSig.String()) + } + env = append(env, "GIT_COMMITTER_NAME="+committerSig.Name, "GIT_COMMITTER_EMAIL="+committerSig.Email, diff --git a/modules/repofiles/update.go b/modules/repofiles/update.go index a1a9c624d7..0ee1ada34c 100644 --- a/modules/repofiles/update.go +++ b/modules/repofiles/update.go @@ -51,6 +51,7 @@ type UpdateRepoFileOptions struct { Author *IdentityOptions Committer *IdentityOptions Dates *CommitDateOptions + Signoff bool } func detectEncodingAndBOM(entry *git.TreeEntry, repo *models.Repository) (string, bool) { @@ -417,9 +418,9 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up // Now commit the tree var commitHash string if opts.Dates != nil { - commitHash, err = t.CommitTreeWithDate(author, committer, treeHash, message, opts.Dates.Author, opts.Dates.Committer) + commitHash, err = t.CommitTreeWithDate(author, committer, treeHash, message, opts.Signoff, opts.Dates.Author, opts.Dates.Committer) } else { - commitHash, err = t.CommitTree(author, committer, treeHash, message) + commitHash, err = t.CommitTree(author, committer, treeHash, message, opts.Signoff) } if err != nil { return nil, err diff --git a/modules/repofiles/upload.go b/modules/repofiles/upload.go index e3ec48ec0f..c261e188c1 100644 --- a/modules/repofiles/upload.go +++ b/modules/repofiles/upload.go @@ -24,6 +24,7 @@ type UploadRepoFileOptions struct { TreePath string Message string Files []string // In UUID format. + Signoff bool } type uploadInfo struct { @@ -143,7 +144,7 @@ func UploadRepoFiles(repo *models.Repository, doer *models.User, opts *UploadRep committer := doer // Now commit the tree - commitHash, err := t.CommitTree(author, committer, treeHash, opts.Message) + commitHash, err := t.CommitTree(author, committer, treeHash, opts.Message, opts.Signoff) if err != nil { return err } diff --git a/modules/structs/repo_file.go b/modules/structs/repo_file.go index c34923e389..71733c90e7 100644 --- a/modules/structs/repo_file.go +++ b/modules/structs/repo_file.go @@ -17,6 +17,8 @@ type FileOptions struct { Author Identity `json:"author"` Committer Identity `json:"committer"` Dates CommitDateOptions `json:"dates"` + // Add a Signed-off-by trailer by the committer at the end of the commit log message. + Signoff bool `json:"signoff"` } // CreateFileOptions options for creating files |