| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | // Copyright 2015 The Gogs Authors. All rights reserved.// Use of this source code is governed by a MIT-style// license that can be found in the LICENSE file.package gitimport (	"fmt"	"strings"	"time")const _VERSION = "0.6.3"func Version() string {	return _VERSION}var (	// Debug enables verbose logging on everything.	// This should be false in case Gogs starts in SSH mode.	Debug  = false	Prefix = "[git-module] ")func log(format string, args ...interface{}) {	if !Debug {		return	}	fmt.Print(Prefix)	if len(args) == 0 {		fmt.Println(format)	} else {		fmt.Printf(format+"\n", args...)	}}var gitVersion string// Version returns current Git version from shell.func BinVersion() (string, error) {	if len(gitVersion) > 0 {		return gitVersion, nil	}	stdout, err := NewCommand("version").Run()	if err != nil {		return "", err	}	fields := strings.Fields(stdout)	if len(fields) < 3 {		return "", fmt.Errorf("not enough output: %s", stdout)	}	// Handle special case on Windows.	i := strings.Index(fields[2], "windows")	if i >= 1 {		gitVersion = fields[2][:i-1]		return gitVersion, nil	}	gitVersion = fields[2]	return gitVersion, nil}func init() {	BinVersion()}// Fsck verifies the connectivity and validity of the objects in the databasefunc Fsck(repoPath string, timeout time.Duration, args ...string) error {	// Make sure timeout makes sense.	if timeout <= 0 {		timeout = -1	}	_, err := NewCommand("fsck").AddArguments(args...).RunInDirTimeout(timeout, repoPath)	return err}
 |