aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2015-11-03 17:25:39 -0500
committerUnknwon <u@gogs.io>2015-11-03 17:25:39 -0500
commit25ec20d5251511ebd0b9e6b963e189b860c39704 (patch)
tree7c771f0a8403fd62811fdadcbe8d118d89edec20 /models
parent8e262f3ec4c961487fe56b6b64573a2f9b928c70 (diff)
downloadgitea-25ec20d5251511ebd0b9e6b963e189b860c39704.tar.gz
gitea-25ec20d5251511ebd0b9e6b963e189b860c39704.zip
#1838 update merge base before generate new patch
Diffstat (limited to 'models')
-rw-r--r--models/git_diff.go4
-rw-r--r--models/pull.go24
2 files changed, 22 insertions, 6 deletions
diff --git a/models/git_diff.go b/models/git_diff.go
index 3bf938ae40..c1568a5759 100644
--- a/models/git_diff.go
+++ b/models/git_diff.go
@@ -97,7 +97,7 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
var i int
for scanner.Scan() {
line := scanner.Text()
- // fmt.Println(i, line)
+
if strings.HasPrefix(line, "+++ ") || strings.HasPrefix(line, "--- ") {
continue
}
@@ -180,8 +180,6 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
b = b[1 : len(b)-1]
}
- fmt.Println(a, b)
-
curFile = &DiffFile{
Name: a,
Index: len(diff.Files) + 1,
diff --git a/models/pull.go b/models/pull.go
index 0300c083d7..56af5f828d 100644
--- a/models/pull.go
+++ b/models/pull.go
@@ -385,16 +385,18 @@ func (pr *PullRequest) UpdateCols(cols ...string) error {
var PullRequestQueue = NewUniqueQueue(setting.Repository.PullRequestQueueLength)
// UpdatePatch generates and saves a new patch.
-func (pr *PullRequest) UpdatePatch() error {
- if err := pr.GetHeadRepo(); err != nil {
+func (pr *PullRequest) UpdatePatch() (err error) {
+ if err = pr.GetHeadRepo(); err != nil {
return fmt.Errorf("GetHeadRepo: %v", err)
} else if pr.HeadRepo == nil {
log.Trace("PullRequest[%d].UpdatePatch: ignored cruppted data", pr.ID)
return nil
}
- if err := pr.GetBaseRepo(); err != nil {
+ if err = pr.GetBaseRepo(); err != nil {
return fmt.Errorf("GetBaseRepo: %v", err)
+ } else if err = pr.BaseRepo.GetOwner(); err != nil {
+ return fmt.Errorf("GetOwner: %v", err)
}
headRepoPath, err := pr.HeadRepo.RepoPath()
@@ -407,6 +409,22 @@ func (pr *PullRequest) UpdatePatch() error {
return fmt.Errorf("OpenRepository: %v", err)
}
+ // Add a temporary remote.
+ tmpRemote := com.ToStr(time.Now().UnixNano())
+ if err = headGitRepo.AddRemote(tmpRemote, RepoPath(pr.BaseRepo.Owner.Name, pr.BaseRepo.Name)); err != nil {
+ return fmt.Errorf("AddRemote: %v", err)
+ }
+ defer func() {
+ headGitRepo.RemoveRemote(tmpRemote)
+ }()
+ remoteBranch := "remotes/" + tmpRemote + "/" + pr.BaseBranch
+ pr.MergeBase, err = headGitRepo.GetMergeBase(remoteBranch, pr.HeadBranch)
+ if err != nil {
+ return fmt.Errorf("GetMergeBase: %v", err)
+ } else if err = pr.Update(); err != nil {
+ return fmt.Errorf("Update: %v", err)
+ }
+
patch, err := headGitRepo.GetPatch(pr.MergeBase, pr.HeadBranch)
if err != nil {
return fmt.Errorf("GetPatch: %v", err)