summaryrefslogtreecommitdiffstats
path: root/modules/repofiles
diff options
context:
space:
mode:
authora1012112796 <1012112796@qq.com>2021-01-29 16:57:45 +0800
committerGitHub <noreply@github.com>2021-01-29 16:57:45 +0800
commitf19da14c34f3a86a77b45de77f48109fa5edcf78 (patch)
tree4fff1a4533cebf812334327e2bfaf9743a90bb64 /modules/repofiles
parentf761c82c94f27193bfb6cd0648e11e491eda4880 (diff)
downloadgitea-f19da14c34f3a86a77b45de77f48109fa5edcf78.tar.gz
gitea-f19da14c34f3a86a77b45de77f48109fa5edcf78.zip
enhancement: add signoff option in commit form (#14516)
Signed-off-by: a1012112796 <1012112796@qq.com>
Diffstat (limited to 'modules/repofiles')
-rw-r--r--modules/repofiles/delete.go5
-rw-r--r--modules/repofiles/temp_repo.go13
-rw-r--r--modules/repofiles/update.go5
-rw-r--r--modules/repofiles/upload.go3
4 files changed, 18 insertions, 8 deletions
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
}