]> source.dussan.org Git - gitea.git/commitdiff
Got the fork count working
authorevolvedlight <steve@evolvedlight.co.uk>
Thu, 9 Oct 2014 23:21:36 +0000 (00:21 +0100)
committerevolvedlight <steve@evolvedlight.co.uk>
Thu, 9 Oct 2014 23:21:36 +0000 (00:21 +0100)
models/repo.go
routers/repo/repo.go

index 34b7cd83521af44d3b412d2bffb9ca9d5c581930..2019542102d9e14d30b1bc1dc9ecd3111f1adc32 100644 (file)
@@ -1307,9 +1307,7 @@ func ForkRepository(u *User, oldRepo *Repository) (*Repository, error) {
             }
         }
     
-        if err = sess.Commit(); err != nil {
-            return nil, err
-        }
+        
     
         if u.IsOrganization() {
             t, err := u.GetOwnerTeam()
@@ -1335,7 +1333,16 @@ func ForkRepository(u *User, oldRepo *Repository) (*Repository, error) {
         if err = NewRepoAction(u, repo); err != nil {
             log.Error(4, "NewRepoAction: %v", err)
         }
-   
+        
+        if _, err = sess.Exec(
+            "UPDATE `repository` SET num_forks = num_forks + 1 WHERE id = ?", oldRepo.Id); err != nil {
+            sess.Rollback()
+            return nil, err
+        }
+        
+        if err = sess.Commit(); err != nil {
+            return nil, err
+        }
     
         repoPath := RepoPath(u.Name, repo.Name)
         _, stderr, err := process.ExecTimeout(10*time.Minute,
@@ -1350,5 +1357,6 @@ func ForkRepository(u *User, oldRepo *Repository) (*Repository, error) {
         }
     
         return repo, nil
+   
 
 }
index dac0c48b36e0bb44fb75b1b69a0a92886afa8aa9..8b18eb25bf324cbcb4ef9c3bbde8b6f27e3550c9 100644 (file)
@@ -219,11 +219,17 @@ func Action(ctx *middleware.Context) {
                err = models.StarRepo(ctx.User.Id, ctx.Repo.Repository.Id, false)
         case "fork":
                 repo, error := models.ForkRepository(ctx.User, ctx.Repo.Repository)
-                log.Info("Tried to fork a repo!")
-                log.Info("Repo thing is " + repo.Name)
                 if error != nil {
+                    log.Error(4, "Action(%s): %v", ctx.Params(":action"), error)
+                    ctx.JSON(200, map[string]interface{}{
+                        "ok":  false,
+                        "err": error.Error(),
+                    })
+                    return
+                }
+                if error == nil {
+                        ctx.Redirect(setting.AppSubUrl + "/" + repo.Owner.Name + "/" + repo.Name)
                         
-                        ctx.Redirect(setting.AppSubUrl + "/" + ctx.User.Name + "/" + repo.Name)
                         return
                 }
        case "desc":