From 922a189f4061796b0d4afeeb45e508c36cc5e7fc Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 28 Mar 2014 10:48:36 +0800 Subject: [PATCH] bug fixed --- update.go | 55 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/update.go b/update.go index 39729937e1..1c14c33d78 100644 --- a/update.go +++ b/update.go @@ -40,24 +40,33 @@ func runUpdate(c *cli.Context) { log.SetOutput(w) args := c.Args() + //log.Info(args) if len(args) != 3 { log.Error("received less 3 parameters") return } refName := args[0] + if refName == "" { + log.Error("refName is empty, shouldn't use") + return + } oldCommitId := args[1] newCommitId := args[2] + isNew := strings.HasPrefix(oldCommitId, "0000000") + if isNew && + strings.HasPrefix(newCommitId, "0000000") { + log.Error("old rev and new rev both 000000") + return + } + userName := os.Getenv("userName") userId := os.Getenv("userId") //repoId := os.Getenv("repoId") repoName := os.Getenv("repoName") - log.Info("username", userName) - log.Info("repoName", repoName) f := models.RepoPath(userName, repoName) - log.Info("f", f) gitUpdate := exec.Command("git", "update-server-info") gitUpdate.Dir = f @@ -69,24 +78,6 @@ func runUpdate(c *cli.Context) { return } - ref, err := repo.LookupReference(refName) - if err != nil { - log.Error("runUpdate.Ref repoId: %v", err) - return - } - - oldOid, err := git.NewOidFromString(oldCommitId) - if err != nil { - log.Error("runUpdate.Ref repoId: %v", err) - return - } - - oldCommit, err := repo.LookupCommit(oldOid) - if err != nil { - log.Error("runUpdate.Ref repoId: %v", err) - return - } - newOid, err := git.NewOidFromString(newCommitId) if err != nil { log.Error("runUpdate.Ref repoId: %v", err) @@ -101,11 +92,25 @@ func runUpdate(c *cli.Context) { var l *list.List // if a new branch - if strings.HasPrefix(oldCommitId, "0000000") { - l, err = ref.AllCommits() - + if isNew { + l, err = repo.CommitsBefore(newCommit.Id()) + if err != nil { + log.Error("Find CommitsBefore erro:", err) + return + } } else { - l = ref.CommitsBetween(newCommit, oldCommit) + oldOid, err := git.NewOidFromString(oldCommitId) + if err != nil { + log.Error("runUpdate.Ref repoId: %v", err) + return + } + + oldCommit, err := repo.LookupCommit(oldOid) + if err != nil { + log.Error("runUpdate.Ref repoId: %v", err) + return + } + l = repo.CommitsBetween(newCommit, oldCommit) } if err != nil {