]> source.dussan.org Git - gitea.git/commitdiff
Update create repo
authorUnknown <joe2010xtmf@163.com>
Tue, 11 Mar 2014 04:53:53 +0000 (00:53 -0400)
committerUnknown <joe2010xtmf@163.com>
Tue, 11 Mar 2014 04:53:53 +0000 (00:53 -0400)
gogs.go
models/repo.go
modules/auth/repo.go
routers/repo/repo.go
serve.go

diff --git a/gogs.go b/gogs.go
index 9ec326bc8e9aa963dc0e0db7f263df9f8b699332..1ea903263233392a0d17c75e8bb8b73b219dbb9e 100644 (file)
--- a/gogs.go
+++ b/gogs.go
@@ -20,7 +20,7 @@ import (
 // Test that go1.1 tag above is included in builds. main.go refers to this definition.
 const go11tag = true
 
-const APP_VER = "0.0.3.0310"
+const APP_VER = "0.0.3.0311"
 
 func init() {
        runtime.GOMAXPROCS(runtime.NumCPU())
index fa4ae0ad5f76e0c22bbb6f9b91081bd4a14028ec..308d5f3bec75bc166b2a339fd4f33dd98a3cb31d 100644 (file)
@@ -12,6 +12,7 @@ import (
        "path/filepath"
        "strings"
        "time"
+       "unicode/utf8"
 
        git "github.com/libgit2/git2go"
 
@@ -59,7 +60,7 @@ func IsRepositoryExist(user *User, repoName string) (bool, error) {
 }
 
 // CreateRepository creates a repository for given user or orgnaziation.
-func CreateRepository(user *User, repoName, desc string, private bool, initReadme bool, repoLang string) (*Repository, error) {
+func CreateRepository(user *User, repoName, desc, repoLang string, private bool, initReadme bool) (*Repository, error) {
        isExist, err := IsRepositoryExist(user, repoName)
        if err != nil {
                return nil, err
@@ -67,11 +68,6 @@ func CreateRepository(user *User, repoName, desc string, private bool, initReadm
                return nil, ErrRepoAlreadyExist
        }
 
-       f := RepoPath(user.Name, repoName)
-       err = initRepository(f, initReadme, repoLang)
-       if err != nil {
-               return nil, err
-       }
        repo := &Repository{
                OwnerId:     user.Id,
                Name:        repoName,
@@ -79,6 +75,11 @@ func CreateRepository(user *User, repoName, desc string, private bool, initReadm
                Description: desc,
                Private:     private,
        }
+
+       f := RepoPath(user.Name, repoName)
+       if err = initRepository(f, user, repo, initReadme, repoLang); err != nil {
+               return nil, err
+       }
        session := orm.NewSession()
        defer session.Close()
        session.Begin()
@@ -127,30 +128,35 @@ func CreateRepository(user *User, repoName, desc string, private bool, initReadm
        return repo, nil
 }
 
-var (
-       defaultREADME = "readme first"
-)
-
 // InitRepository initializes README and .gitignore if needed.
-func initRepository(f string, initReadme bool, repoLang string) error {
-       readme := "README"
-       workdir := os.TempDir()
+func initRepository(f string, user *User, repo *Repository, initReadme bool, repoLang string) error {
+       fileName := map[string]string{
+               "readme": "README.md",
+               "gitign": ".gitignore",
+       }
+       workdir := os.TempDir() + fmt.Sprintf("%d", time.Now().Nanosecond())
 
        sig := &git.Signature{
-               Name:  "Rand Om Hacker",
-               Email: "random@hacker.com",
+               Name:  user.Name,
+               Email: user.Email,
                When:  time.Now(),
        }
 
        // README
-       err := ioutil.WriteFile(filepath.Join(workdir, readme),
-               []byte(defaultREADME), 0644)
-       if err != nil {
+       defaultReadme := repo.Name + "\n" + strings.Repeat("=",
+               utf8.RuneCountInString(repo.Name)) + "\n\n" + repo.Description
+       if err := ioutil.WriteFile(filepath.Join(workdir, fileName["readme"]),
+               []byte(defaultReadme), 0644); err != nil {
                return err
        }
 
        // .gitignore
-       // TODO:
+       // if err := ioutil.WriteFile(filepath.Join(workdir, gitIgn),
+       //      []byte(defaultREADME), 0644); err != nil {
+       //      return err
+       // }
+
+       // LICENSE
 
        rp, err := git.InitRepository(f, true)
        if err != nil {
@@ -163,8 +169,7 @@ func initRepository(f string, initReadme bool, repoLang string) error {
                return err
        }
 
-       err = idx.AddByPath(readme)
-       if err != nil {
+       if err = idx.AddByPath(fileName["readme"]); err != nil {
                return err
        }
 
@@ -173,14 +178,13 @@ func initRepository(f string, initReadme bool, repoLang string) error {
                return err
        }
 
-       message := "add readme"
+       message := "Init commit"
        tree, err := rp.LookupTree(treeId)
        if err != nil {
                return err
        }
 
-       _, err = rp.CreateCommit("HEAD", sig, sig, message, tree)
-       if err != nil {
+       if _, err = rp.CreateCommit("HEAD", sig, sig, message, tree); err != nil {
                return err
        }
 
index 6656654f5635e5d37445013312428bd6ba1426c7..e55ccb2894a7b6a3c04b5ef17b1e235ddbb83642 100644 (file)
@@ -18,7 +18,7 @@ import (
 
 type CreateRepoForm struct {
        UserId      int64  `form:"userId"`
-       RepoName    string `form:"repo" binding:"Required"`
+       RepoName    string `form:"repo" binding:"Required;AlphaDash"`
        Visibility  string `form:"visibility"`
        Description string `form:"desc" binding:"MaxSize(100)"`
        Language    string `form:"language"`
index 0e9ced4262b108367293fd054c1f166f9d364ced..221d4ba1f3b8855cce5d03f08dc7df007c6ed424 100644 (file)
@@ -42,11 +42,11 @@ func Create(form auth.CreateRepoForm, req *http.Request, r render.Render, data b
                        return
                }
        }
-       fmt.Println(models.RepoPath(user.Name, form.RepoName))
+
        if err == nil {
                if _, err = models.CreateRepository(user,
-                       form.RepoName, form.Description, form.Visibility == "private",
-                       form.InitReadme == "true", form.Language); err == nil {
+                       form.RepoName, form.Description, form.Language,
+                       form.Visibility == "private", form.InitReadme == "true"); err == nil {
                        if err == nil {
                                data["RepoName"] = user.Name + "/" + form.RepoName
                                r.HTML(200, "repo/created", data)
index 83ce06e882dc1beae1c5a36a8d161c70ae54e2ac..8ef5690b98c6a0671f7bb33add5e9a01b10a0f2f 100644 (file)
--- a/serve.go
+++ b/serve.go
@@ -123,7 +123,7 @@ func runServ(*cli.Context) {
                        println("Repository", user.Name+"/"+repoName, "is not exist")
                        return
                } else if isWrite {
-                       _, err := models.CreateRepository(user, repoName, "", false, true, "")
+                       _, err := models.CreateRepository(user, repoName, "", "", false, true)
                        if err != nil {
                                println("Create repository failed")
                                return