Browse Source

Work on #476

tags/v0.9.99
Unknwon 9 years ago
parent
commit
0d9c41be7d
7 changed files with 78 additions and 17 deletions
  1. 1
    1
      README.md
  2. 1
    1
      README_ZH.md
  3. 1
    1
      gogs.go
  4. 7
    2
      models/repo.go
  5. 8
    0
      modules/git/repo_commit.go
  6. 59
    11
      modules/git/version.go
  7. 1
    1
      templates/.VERSION

+ 1
- 1
README.md View File

@@ -5,7 +5,7 @@ Gogs(Go Git Service) is a painless self-hosted Git Service written in Go.

![Demo](https://gowalker.org/public/gogs_demo.gif)

##### Current version: 0.5.0 Beta
##### Current version: 0.5.2 Beta

### NOTICES


+ 1
- 1
README_ZH.md View File

@@ -5,7 +5,7 @@ Gogs(Go Git Service) 是一个基于 Go 语言的自助 Git 服务。

![Demo](https://gowalker.org/public/gogs_demo.gif)

##### 当前版本:0.5.1 Beta
##### 当前版本:0.5.2 Beta

## 开发目的


+ 1
- 1
gogs.go View File

@@ -17,7 +17,7 @@ import (
"github.com/gogits/gogs/modules/setting"
)

const APP_VER = "0.5.1.0916 Beta"
const APP_VER = "0.5.2.0916 Beta"

func init() {
runtime.GOMAXPROCS(runtime.NumCPU())

+ 7
- 2
models/repo.go View File

@@ -95,8 +95,13 @@ func NewRepoContext() {
if err != nil {
log.Fatal(4, "Fail to get Git version: %v", err)
}
if ver.Major < 2 && ver.Minor < 8 {
log.Fatal(4, "Gogs requires Git version greater or equal to 1.8.0")

reqVer, err := git.ParseVersion("1.7.1")
if err != nil {
log.Fatal(4, "Fail to parse required Git version: %v", err)
}
if ver.Compare(reqVer) == -1 {
log.Fatal(4, "Gogs requires Git version greater or equal to 1.7.1")
}

// Check if server has basic git setting and set if not.

+ 8
- 0
modules/git/repo_commit.go View File

@@ -137,6 +137,14 @@ func (repo *Repository) GetCommit(commitId string) (*Commit, error) {
}

func (repo *Repository) commitsCount(id sha1) (int, error) {
if gitVer.Compare(MustParseVersion("1.8.0")) == -1 {
stdout, stderr, err := com.ExecCmdDirBytes(repo.Path, "git", "log", "--pretty=format:''", id.String())
if err != nil {
return 0, errors.New(string(stderr))
}
return len(bytes.Split(stdout, []byte("\n"))), nil
}

stdout, stderr, err := com.ExecCmdDir(repo.Path, "git", "rev-list", "--count", id.String())
if err != nil {
return 0, errors.New(stderr)

+ 59
- 11
modules/git/version.go View File

@@ -11,25 +11,24 @@ import (
"github.com/Unknwon/com"
)

var (
// Cached Git version.
gitVer *Version
)

// Version represents version of Git.
type Version struct {
Major, Minor, Patch int
}

// GetVersion returns current Git version installed.
func GetVersion() (Version, error) {
stdout, stderr, err := com.ExecCmd("git", "version")
if err != nil {
return Version{}, errors.New(stderr)
}

infos := strings.Split(stdout, " ")
func ParseVersion(verStr string) (*Version, error) {
infos := strings.Split(verStr, ".")
if len(infos) < 3 {
return Version{}, errors.New("not enough output")
return nil, errors.New("incorrect version input")
}

v := Version{}
for i, s := range strings.Split(strings.TrimSpace(infos[2]), ".") {
v := &Version{}
for i, s := range infos {
switch i {
case 0:
v.Major, _ = com.StrTo(s).Int()
@@ -41,3 +40,52 @@ func GetVersion() (Version, error) {
}
return v, nil
}

func MustParseVersion(verStr string) *Version {
v, _ := ParseVersion(verStr)
return v
}

// Compare compares two versions,
// it returns 1 if original is greater, 1 if original is smaller, 0 if equal.
func (v *Version) Compare(that *Version) int {
if v.Major > that.Major {
return 1
} else if v.Major < that.Major {
return -1
}

if v.Minor > that.Minor {
return 1
} else if v.Minor < that.Minor {
return -1
}

if v.Patch > that.Patch {
return 1
} else if v.Patch < that.Patch {
return -1
}

return 0
}

// GetVersion returns current Git version installed.
func GetVersion() (*Version, error) {
if gitVer != nil {
return gitVer, nil
}

stdout, stderr, err := com.ExecCmd("git", "version")
if err != nil {
return nil, errors.New(stderr)
}

infos := strings.Split(stdout, " ")
if len(infos) < 3 {
return nil, errors.New("not enough output")
}

gitVer, err = ParseVersion(infos[2])
return gitVer, err
}

+ 1
- 1
templates/.VERSION View File

@@ -1 +1 @@
0.5.1.0916 Beta
0.5.2.0916 Beta

Loading…
Cancel
Save