mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 13:28:25 +00:00 
			
		
		
		
	Mirror updates
This commit is contained in:
		@@ -120,7 +120,10 @@ func NewEngine() (err error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
type Statistic struct {
 | 
					type Statistic struct {
 | 
				
			||||||
	Counter struct {
 | 
						Counter struct {
 | 
				
			||||||
		User, PublicKey, Repo, Watch, Action, Access int64
 | 
							User, PublicKey, Repo,
 | 
				
			||||||
 | 
							Watch, Action, Access,
 | 
				
			||||||
 | 
							Issue, Comment,
 | 
				
			||||||
 | 
							Mirror, Oauth, Release int64
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -131,5 +134,10 @@ func GetStatistic() (stats Statistic) {
 | 
				
			|||||||
	stats.Counter.Watch, _ = orm.Count(new(Watch))
 | 
						stats.Counter.Watch, _ = orm.Count(new(Watch))
 | 
				
			||||||
	stats.Counter.Action, _ = orm.Count(new(Action))
 | 
						stats.Counter.Action, _ = orm.Count(new(Action))
 | 
				
			||||||
	stats.Counter.Access, _ = orm.Count(new(Access))
 | 
						stats.Counter.Access, _ = orm.Count(new(Access))
 | 
				
			||||||
 | 
						stats.Counter.Issue, _ = orm.Count(new(Issue))
 | 
				
			||||||
 | 
						stats.Counter.Comment, _ = orm.Count(new(Comment))
 | 
				
			||||||
 | 
						stats.Counter.Mirror, _ = orm.Count(new(Mirror))
 | 
				
			||||||
 | 
						stats.Counter.Oauth, _ = orm.Count(new(Oauth2))
 | 
				
			||||||
 | 
						stats.Counter.Release, _ = orm.Count(new(Release))
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,6 +66,7 @@ func NewRepoContext() {
 | 
				
			|||||||
type Repository struct {
 | 
					type Repository struct {
 | 
				
			||||||
	Id              int64
 | 
						Id              int64
 | 
				
			||||||
	OwnerId         int64 `xorm:"unique(s)"`
 | 
						OwnerId         int64 `xorm:"unique(s)"`
 | 
				
			||||||
 | 
						Owner           *User `xorm:"-"`
 | 
				
			||||||
	ForkId          int64
 | 
						ForkId          int64
 | 
				
			||||||
	LowerName       string `xorm:"unique(s) index not null"`
 | 
						LowerName       string `xorm:"unique(s) index not null"`
 | 
				
			||||||
	Name            string `xorm:"index not null"`
 | 
						Name            string `xorm:"index not null"`
 | 
				
			||||||
@@ -364,24 +365,21 @@ func initRepoCommit(tmpPath string, sig *git.Signature) (err error) {
 | 
				
			|||||||
	var stderr string
 | 
						var stderr string
 | 
				
			||||||
	if _, stderr, err = com.ExecCmdDir(tmpPath, "git", "add", "--all"); err != nil {
 | 
						if _, stderr, err = com.ExecCmdDir(tmpPath, "git", "add", "--all"); err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						} else if strings.Contains(stderr, "fatal:") {
 | 
				
			||||||
	if len(stderr) > 0 {
 | 
							return errors.New("git add: " + stderr)
 | 
				
			||||||
		log.Trace("stderr(1): %s", stderr)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if _, stderr, err = com.ExecCmdDir(tmpPath, "git", "commit", fmt.Sprintf("--author='%s <%s>'", sig.Name, sig.Email),
 | 
						if _, stderr, err = com.ExecCmdDir(tmpPath, "git", "commit", fmt.Sprintf("--author='%s <%s>'", sig.Name, sig.Email),
 | 
				
			||||||
		"-m", "Init commit"); err != nil {
 | 
							"-m", "Init commit"); err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						} else if strings.Contains(stderr, "fatal:") {
 | 
				
			||||||
	if len(stderr) > 0 {
 | 
							return errors.New("git commit: " + stderr)
 | 
				
			||||||
		log.Trace("stderr(2): %s", stderr)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if _, stderr, err = com.ExecCmdDir(tmpPath, "git", "push", "origin", "master"); err != nil {
 | 
						if _, stderr, err = com.ExecCmdDir(tmpPath, "git", "push", "origin", "master"); err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						} else if strings.Contains(stderr, "fatal:") {
 | 
				
			||||||
	if len(stderr) > 0 {
 | 
							return errors.New("git push: " + stderr)
 | 
				
			||||||
		log.Trace("stderr(3): %s", stderr)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -439,9 +437,8 @@ func initRepository(f string, user *User, repo *Repository, initReadme bool, rep
 | 
				
			|||||||
	_, stderr, err := com.ExecCmd("git", "clone", repoPath, tmpDir)
 | 
						_, stderr, err := com.ExecCmd("git", "clone", repoPath, tmpDir)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						} else if strings.Contains(stderr, "fatal:") {
 | 
				
			||||||
	if len(stderr) > 0 {
 | 
							return errors.New("git clone: " + stderr)
 | 
				
			||||||
		log.Trace("repo.initRepository(git clone): %s", stderr)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// README
 | 
						// README
 | 
				
			||||||
@@ -725,6 +722,13 @@ func GetRepositories(user *User, private bool) ([]Repository, error) {
 | 
				
			|||||||
	return repos, err
 | 
						return repos, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GetRecentUpdatedRepositories returns the list of repositories that are recently updated.
 | 
				
			||||||
 | 
					func GetRecentUpdatedRepositories() (repos []*Repository, err error) {
 | 
				
			||||||
 | 
						err = orm.Where("is_private=?", false).Limit(5).Desc("updated").Find(&repos)
 | 
				
			||||||
 | 
						return repos, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GetRepositoryCount returns the total number of repositories of user.
 | 
				
			||||||
func GetRepositoryCount(user *User) (int64, error) {
 | 
					func GetRepositoryCount(user *User) (int64, error) {
 | 
				
			||||||
	return orm.Count(&Repository{OwnerId: user.Id})
 | 
						return orm.Count(&Repository{OwnerId: user.Id})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,9 +37,9 @@ type OauthInfo struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Oauther represents oauth service.
 | 
					// Oauther represents oauth service.
 | 
				
			||||||
type Oauther struct {
 | 
					type Oauther struct {
 | 
				
			||||||
	GitHub, Google, Tencent bool
 | 
						GitHub, Google, Tencent,
 | 
				
			||||||
	Twitter, Weibo          bool
 | 
						Twitter, Weibo bool
 | 
				
			||||||
	OauthInfos              map[string]*OauthInfo
 | 
						OauthInfos map[string]*OauthInfo
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@
 | 
				
			|||||||
package routers
 | 
					package routers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/gogits/gogs/models"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/base"
 | 
						"github.com/gogits/gogs/modules/base"
 | 
				
			||||||
	"github.com/gogits/gogs/modules/middleware"
 | 
						"github.com/gogits/gogs/modules/middleware"
 | 
				
			||||||
	"github.com/gogits/gogs/routers/user"
 | 
						"github.com/gogits/gogs/routers/user"
 | 
				
			||||||
@@ -23,6 +24,11 @@ func Home(ctx *middleware.Context) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						repos, _ := models.GetRecentUpdatedRepositories()
 | 
				
			||||||
 | 
						for _, repo := range repos {
 | 
				
			||||||
 | 
							repo.Owner, _ = models.GetUserById(repo.OwnerId)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						ctx.Data["Repos"] = repos
 | 
				
			||||||
	ctx.Data["PageIsHome"] = true
 | 
						ctx.Data["PageIsHome"] = true
 | 
				
			||||||
	ctx.HTML(200, "home")
 | 
						ctx.HTML(200, "home")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <div class="panel-body">
 | 
					            <div class="panel-body">
 | 
				
			||||||
                Gogs database has <b>{{.Stats.Counter.User}}</b> users, <b>{{.Stats.Counter.PublicKey}}</b> SSH keys, <b>{{.Stats.Counter.Repo}}</b> repositories, <b>{{.Stats.Counter.Watch}}</b> watches, <b>{{.Stats.Counter.Action}}</b> actions, and <b>{{.Stats.Counter.Access}}</b> accesses.
 | 
					                Gogs database has <b>{{.Stats.Counter.User}}</b> users, <b>{{.Stats.Counter.PublicKey}}</b> SSH keys, <b>{{.Stats.Counter.Repo}}</b> repositories, <b>{{.Stats.Counter.Watch}}</b> watches, <b>{{.Stats.Counter.Action}}</b> actions, <b>{{.Stats.Counter.Access}}</b> accesses, <b>{{.Stats.Counter.Issue}}</b> issues, <b>{{.Stats.Counter.Comment}}</b> comments, <b>{{.Stats.Counter.Mirror}}</b> mirrors, <b>{{.Stats.Counter.Oauth}}</b> oauthes, <b>{{.Stats.Counter.Release}}</b> releases.
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,7 @@
 | 
				
			|||||||
		<meta name="keywords" content="go, git">
 | 
							<meta name="keywords" content="go, git">
 | 
				
			||||||
		<meta name="_csrf" content="{{.CsrfToken}}" />
 | 
							<meta name="_csrf" content="{{.CsrfToken}}" />
 | 
				
			||||||
		{{if .Repository.IsGoget}}<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">{{end}}
 | 
							{{if .Repository.IsGoget}}<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">{{end}}
 | 
				
			||||||
 | 
							<meta property="qc:admins" content="34543312371436727" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		 <!-- Stylesheets -->
 | 
							 <!-- Stylesheets -->
 | 
				
			||||||
		{{if IsProdMode}}
 | 
							{{if IsProdMode}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,27 @@
 | 
				
			|||||||
{{template "base/head" .}}
 | 
					{{template "base/head" .}}
 | 
				
			||||||
{{template "base/navbar" .}}
 | 
					{{template "base/navbar" .}}
 | 
				
			||||||
<div id="body" class="container">
 | 
					<div id="body" class="container">
 | 
				
			||||||
 | 
						{{if not .Repos}}
 | 
				
			||||||
	<h4>Hey there, welcome to the land of Gogs!</h4>
 | 
						<h4>Hey there, welcome to the land of Gogs!</h4>
 | 
				
			||||||
	<p>If you just get your Gogs server running, go <a href="/install">install</a> guide page will help you setup things for your first-time run.</p>
 | 
						<p>If you just get your Gogs server running, go <a href="/install">install</a> guide page will help you setup things for your first-time run.</p>
 | 
				
			||||||
	<img src="http://gowalker.org/public/gogs_demo.gif">
 | 
						<img src="http://gowalker.org/public/gogs_demo.gif">
 | 
				
			||||||
 | 
						{{else}}
 | 
				
			||||||
 | 
						<h4>Hey there, welcome to the land of Gogs!</h4>
 | 
				
			||||||
 | 
						<h5>Here are some recent updated repositories:</h5>
 | 
				
			||||||
 | 
					    <div class="tab-pane active">
 | 
				
			||||||
 | 
					        <ul class="list-unstyled repo-list">
 | 
				
			||||||
 | 
					        {{range .Repos}}
 | 
				
			||||||
 | 
					            <li>
 | 
				
			||||||
 | 
					                <div class="meta pull-right"><!-- <i class="fa fa-star"></i> {{.NumStars}} --> <i class="fa fa-code-fork"></i> {{.NumForks}}</div>
 | 
				
			||||||
 | 
					                <h4>
 | 
				
			||||||
 | 
					                    <a href="/{{.Owner.Name}}/{{.Name}}">{{.Name}}</a>
 | 
				
			||||||
 | 
					                </h4>
 | 
				
			||||||
 | 
					                <p class="desc">{{.Description}}</p>
 | 
				
			||||||
 | 
					                <div class="info">Last updated {{.Updated|TimeSince}}</div>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					        {{end}}
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
						{{end}}
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
{{template "base/footer" .}}
 | 
					{{template "base/footer" .}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,14 +58,13 @@
 | 
				
			|||||||
                </ul>
 | 
					                </ul>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            {{else}}
 | 
					            {{else}}
 | 
				
			||||||
            {{$owner := .Owner}}
 | 
					 | 
				
			||||||
            <div class="tab-pane active">
 | 
					            <div class="tab-pane active">
 | 
				
			||||||
                <ul class="list-unstyled repo-list">
 | 
					                <ul class="list-unstyled repo-list">
 | 
				
			||||||
                {{range .Repos}}
 | 
					                {{range .Repos}}
 | 
				
			||||||
                    <li>
 | 
					                    <li>
 | 
				
			||||||
                        <div class="meta pull-right"><!-- <i class="fa fa-star"></i> {{.NumStars}} --> <i class="fa fa-code-fork"></i> {{.NumForks}}</div>
 | 
					                        <div class="meta pull-right"><!-- <i class="fa fa-star"></i> {{.NumStars}} --> <i class="fa fa-code-fork"></i> {{.NumForks}}</div>
 | 
				
			||||||
                        <h4>
 | 
					                        <h4>
 | 
				
			||||||
                            <a href="/{{$owner.Name}}/{{.Name}}">{{.Name}}{{if .IsPrivate}} <span class="label label-default">Private</span>{{end}}</a>
 | 
					                            <a href="/{{$.Owner.Name}}/{{.Name}}">{{.Name}}{{if .IsPrivate}} <span class="label label-default">Private</span>{{end}}</a>
 | 
				
			||||||
                        </h4>
 | 
					                        </h4>
 | 
				
			||||||
                        <p class="desc">{{.Description}}</p>
 | 
					                        <p class="desc">{{.Description}}</p>
 | 
				
			||||||
                        <div class="info">Last updated {{.Updated|TimeSince}}</div>
 | 
					                        <div class="info">Last updated {{.Updated|TimeSince}}</div>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user