summaryrefslogtreecommitdiffstats
path: root/modules/git
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2019-10-12 01:13:27 +0100
committerLunny Xiao <xiaolunwen@gmail.com>2019-10-12 08:13:27 +0800
commit5e759b60cca3cd8484a6235fcc9120d18e8cd455 (patch)
treeb9932067119f16197f69f12ec9b04aa74f68845a /modules/git
parentac3613b791884f29c386bda2ccaad5c7434d822c (diff)
downloadgitea-5e759b60cca3cd8484a6235fcc9120d18e8cd455.tar.gz
gitea-5e759b60cca3cd8484a6235fcc9120d18e8cd455.zip
Restore functionality for early gits (#7775)
* Change tests to make it possible to run TestGit with 1.7.2 * Make merge run on 1.7.2 * Fix tracking and staging branch name problem * Ensure that git 1.7.2 works on tests * ensure that there is no chance for conflicts * Fix-up missing merge issues * Final rm * Ensure LFS filters run on the tests * Do not sign commits from temp repo * Restore tracking fetch change * Apply suggestions from code review * Update modules/repofiles/temp_repo.go
Diffstat (limited to 'modules/git')
-rw-r--r--modules/git/repo_branch.go2
-rw-r--r--modules/git/repo_tree.go22
2 files changed, 18 insertions, 6 deletions
diff --git a/modules/git/repo_branch.go b/modules/git/repo_branch.go
index 9209f4a764..3e1261d294 100644
--- a/modules/git/repo_branch.go
+++ b/modules/git/repo_branch.go
@@ -165,7 +165,7 @@ func (repo *Repository) AddRemote(name, url string, fetch bool) error {
// RemoveRemote removes a remote from repository.
func (repo *Repository) RemoveRemote(name string) error {
- _, err := NewCommand("remote", "remove", name).RunInDir(repo.Path)
+ _, err := NewCommand("remote", "rm", name).RunInDir(repo.Path)
return err
}
diff --git a/modules/git/repo_tree.go b/modules/git/repo_tree.go
index b31e4330cd..f5262ba81c 100644
--- a/modules/git/repo_tree.go
+++ b/modules/git/repo_tree.go
@@ -6,10 +6,13 @@
package git
import (
+ "bytes"
"fmt"
"os"
"strings"
"time"
+
+ "github.com/mcuadros/go-version"
)
func (repo *Repository) getTree(id SHA1) (*Tree, error) {
@@ -61,6 +64,11 @@ type CommitTreeOpts struct {
// CommitTree creates a commit from a given tree id for the user with provided message
func (repo *Repository) CommitTree(sig *Signature, tree *Tree, opts CommitTreeOpts) (SHA1, error) {
+ binVersion, err := BinVersion()
+ if err != nil {
+ return SHA1{}, err
+ }
+
commitTimeStr := time.Now().Format(time.RFC3339)
// Because this may call hooks we should pass in the environment
@@ -78,20 +86,24 @@ func (repo *Repository) CommitTree(sig *Signature, tree *Tree, opts CommitTreeOp
cmd.AddArguments("-p", parent)
}
- cmd.AddArguments("-m", opts.Message)
+ messageBytes := new(bytes.Buffer)
+ _, _ = messageBytes.WriteString(opts.Message)
+ _, _ = messageBytes.WriteString("\n")
if opts.KeyID != "" {
cmd.AddArguments(fmt.Sprintf("-S%s", opts.KeyID))
}
- if opts.NoGPGSign {
+ if version.Compare(binVersion, "2.0.0", ">=") && opts.NoGPGSign {
cmd.AddArguments("--no-gpg-sign")
}
- res, err := cmd.RunInDirWithEnv(repo.Path, env)
+ stdout := new(bytes.Buffer)
+ stderr := new(bytes.Buffer)
+ err = cmd.RunInDirTimeoutEnvFullPipeline(env, -1, repo.Path, stdout, stderr, messageBytes)
if err != nil {
- return SHA1{}, err
+ return SHA1{}, concatenateError(err, stderr.String())
}
- return NewIDFromString(strings.TrimSpace(res))
+ return NewIDFromString(strings.TrimSpace(stdout.String()))
}