]> source.dussan.org Git - gitea.git/commitdiff
Fix #186
authorUnknown <joe2010xtmf@163.com>
Fri, 16 May 2014 17:41:08 +0000 (13:41 -0400)
committerUnknown <joe2010xtmf@163.com>
Fri, 16 May 2014 17:41:08 +0000 (13:41 -0400)
README.md
README_ZH.md
cmd/web.go
gogs.go
models/repo.go
routers/repo/download.go
templates/release/list.tmpl

index 650946db4db9a2088a08e0d9fc41610056a00397..080bced08d0aa372782147e79dc0de230f71e78e 100644 (file)
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@ Gogs(Go Git Service) is a Self Hosted Git Service in the Go Programming Language
 
 ![Demo](http://gowalker.org/public/gogs_demo.gif)
 
-##### Current version: 0.3.4 Alpha
+##### Current version: 0.3.5 Alpha
 
 ### NOTICES
 
index 18fa0acf3189bca962edb34889563aca89e162d0..65e7baa402d329db2cf1a720f87914ef6e0edbc8 100644 (file)
@@ -5,7 +5,7 @@ Gogs(Go Git Service) 是一个由 Go 语言编写的自助 Git 托管服务。
 
 ![Demo](http://gowalker.org/public/gogs_demo.gif)
 
-##### 当前版本:0.3.4 Alpha
+##### 当前版本:0.3.5 Alpha
 
 ## 开发目的
 
index 5a0bd167e18ee82bb4c265f25d3eb179eb10b0af..2eeca9fa31d699dc5b1c01950fc720913614f74f 100644 (file)
@@ -218,6 +218,7 @@ func runWeb(*cli.Context) {
                r.Get("/commit/:branchname/**", repo.Diff)
                r.Get("/releases", repo.Releases)
                r.Get("/archive/:branchname/:reponame.zip", repo.ZipDownload)
+               r.Get("/archive/:branchname/:reponame.tar.gz", repo.TarGzDownload)
        }, ignSignIn, middleware.RepoAssignment(true, true))
 
        m.Group("/:username", func(r martini.Router) {
diff --git a/gogs.go b/gogs.go
index cb0989392924c8d5a0a839fa88c7de979792f76d..a21d8eae00b1dad096ab1ef28434515aacc5e242 100644 (file)
--- a/gogs.go
+++ b/gogs.go
@@ -17,7 +17,7 @@ import (
        "github.com/gogits/gogs/modules/base"
 )
 
-const APP_VER = "0.3.4.0515 Alpha"
+const APP_VER = "0.3.5.0516 Alpha"
 
 func init() {
        base.AppVer = APP_VER
index 0594c6c6f309901e7433f435793ae2958ccc0b2f..7f13940be8d2bdc227d0cd9d9ba3564aaa097862 100644 (file)
@@ -125,8 +125,8 @@ func (repo *Repository) GetOwner() (err error) {
 }
 
 // IsRepositoryExist returns true if the repository with given name under user has already existed.
-func IsRepositoryExist(user *User, repoName string) (bool, error) {
-       repo := Repository{OwnerId: user.Id}
+func IsRepositoryExist(u *User, repoName string) (bool, error) {
+       repo := Repository{OwnerId: u.Id}
        has, err := orm.Where("lower_name = ?", strings.ToLower(repoName)).Get(&repo)
        if err != nil {
                return has, err
@@ -134,7 +134,7 @@ func IsRepositoryExist(user *User, repoName string) (bool, error) {
                return false, nil
        }
 
-       return com.IsDir(RepoPath(user.Name, repoName)), nil
+       return com.IsDir(RepoPath(u.Name, repoName)), nil
 }
 
 var (
index 017d957155856407ba22fd0dcdf2d6b6f983b59d..d94e47665da75bca9b580a372f5e76fd0126f243 100644 (file)
@@ -11,6 +11,8 @@ import (
        "github.com/Unknwon/com"
        "github.com/go-martini/martini"
 
+       "github.com/gogits/git"
+
        "github.com/gogits/gogs/modules/base"
        "github.com/gogits/gogs/modules/middleware"
 )
@@ -43,7 +45,7 @@ func SingleDownload(ctx *middleware.Context, params martini.Params) {
 
 func ZipDownload(ctx *middleware.Context, params martini.Params) {
        commitId := ctx.Repo.CommitId
-       archivesPath := filepath.Join(ctx.Repo.GitRepo.Path, "archives")
+       archivesPath := filepath.Join(ctx.Repo.GitRepo.Path, "archives/zip")
        if !com.IsDir(archivesPath) {
                if err := os.Mkdir(archivesPath, 0755); err != nil {
                        ctx.Handle(404, "ZipDownload -> os.Mkdir(archivesPath)", err)
@@ -51,18 +53,44 @@ func ZipDownload(ctx *middleware.Context, params martini.Params) {
                }
        }
 
-       zipPath := filepath.Join(archivesPath, commitId+".zip")
+       archivePath := filepath.Join(archivesPath, commitId+".zip")
+
+       if com.IsFile(archivePath) {
+               ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".zip")
+               return
+       }
+
+       err := ctx.Repo.Commit.CreateArchive(archivePath, git.AT_ZIP)
+       if err != nil {
+               ctx.Handle(404, "ZipDownload -> CreateArchive "+archivePath, err)
+               return
+       }
+
+       ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".zip")
+}
+
+func TarGzDownload(ctx *middleware.Context, params martini.Params) {
+       commitId := ctx.Repo.CommitId
+       archivesPath := filepath.Join(ctx.Repo.GitRepo.Path, "archives/targz")
+       if !com.IsDir(archivesPath) {
+               if err := os.Mkdir(archivesPath, 0755); err != nil {
+                       ctx.Handle(404, "TarGzDownload -> os.Mkdir(archivesPath)", err)
+                       return
+               }
+       }
+
+       archivePath := filepath.Join(archivesPath, commitId+".tar.gz")
 
-       if com.IsFile(zipPath) {
-               ctx.ServeFile(zipPath, ctx.Repo.Repository.Name+".zip")
+       if com.IsFile(archivePath) {
+               ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".tar.gz")
                return
        }
 
-       err := ctx.Repo.Commit.CreateArchive(zipPath)
+       err := ctx.Repo.Commit.CreateArchive(archivePath, git.AT_TARGZ)
        if err != nil {
-               ctx.Handle(404, "ZipDownload -> CreateArchive "+zipPath, err)
+               ctx.Handle(404, "TarGzDownload -> CreateArchive "+archivePath, err)
                return
        }
 
-       ctx.ServeFile(zipPath, ctx.Repo.Repository.Name+".zip")
+       ctx.ServeFile(archivePath, ctx.Repo.Repository.Name+".tar.gz")
 }
index 11f96aa5489bf56fccd44fbdd052091ee39fa16c..31387795925435a525e8c9ca2681463932bcf2c1 100644 (file)
@@ -31,7 +31,7 @@
                     </div>
                     <p class="download">
                         <a class="btn btn-default" href="{{$.RepoLink}}/archive/{{.TagName}}/{{$.Repository.Name}}.zip" rel="nofollow"><i class="fa fa-download"></i>Source Code (ZIP)</a>
-                        <!-- <a class="btn btn-default" href="{release_download_link}"><i class="fa fa-download"></i>Source Code (TAR.GZ)</a> -->
+                        <a class="btn btn-default" href="{{$.RepoLink}}/archive/{{.TagName}}/{{$.Repository.Name}}.tar.gz"><i class="fa fa-download"></i>Source Code (TAR.GZ)</a>
                     </p>
                     <span class="dot">&nbsp;</span>
                 </div>