mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 09:44:21 +00:00 
			
		
		
		
	bug fixed
This commit is contained in:
		
							
								
								
									
										147
									
								
								serve.go
									
									
									
									
									
								
							
							
						
						
									
										147
									
								
								serve.go
									
									
									
									
									
								
							@@ -131,6 +131,7 @@ func runServ(k *cli.Context) {
 | 
			
		||||
	// access check
 | 
			
		||||
	switch {
 | 
			
		||||
	case isWrite:
 | 
			
		||||
		println(user.Name, repoName, models.AU_WRITABLE)
 | 
			
		||||
		has, err := models.HasAccess(user.Name, repoName, models.AU_WRITABLE)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			println("Inernel error:", err)
 | 
			
		||||
@@ -165,48 +166,14 @@ func runServ(k *cli.Context) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	var rep *git.Repository
 | 
			
		||||
	repoPath := models.RepoPath(user.Name, repoName)
 | 
			
		||||
	if !isExist {
 | 
			
		||||
		if isWrite {
 | 
			
		||||
			_, err = models.CreateRepository(user, repoName, "", "", "", false, true)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				println("Create repository failed")
 | 
			
		||||
				log.Error(err.Error())
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
		rep, err = git.OpenRepository(repoPath)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			println("OpenRepository failed:", err.Error())
 | 
			
		||||
			log.Error(err.Error())
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	refs, err := rep.AllReferencesMap()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		println("Get All References failed:", err.Error())
 | 
			
		||||
		log.Error(err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
	// for update use
 | 
			
		||||
	os.Setenv("userName", user.Name)
 | 
			
		||||
	os.Setenv("userId", strconv.Itoa(int(user.Id)))
 | 
			
		||||
	//os.Setenv("repoId", repoId)
 | 
			
		||||
	os.Setenv("repoName", repoName)
 | 
			
		||||
 | 
			
		||||
	gitcmd := exec.Command(verb, rRepo)
 | 
			
		||||
	gitcmd.Dir = base.RepoRootPath
 | 
			
		||||
 | 
			
		||||
	//var s string
 | 
			
		||||
	//b := bytes.NewBufferString(s)
 | 
			
		||||
 | 
			
		||||
	gitcmd.Stdout = os.Stdout
 | 
			
		||||
	//gitcmd.Stdin = io.MultiReader(os.Stdin, b)
 | 
			
		||||
	gitcmd.Stdin = os.Stdin
 | 
			
		||||
	gitcmd.Stderr = os.Stderr
 | 
			
		||||
 | 
			
		||||
@@ -215,114 +182,4 @@ func runServ(k *cli.Context) {
 | 
			
		||||
		log.Error(err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//if isRead {
 | 
			
		||||
	//	return
 | 
			
		||||
	//}
 | 
			
		||||
 | 
			
		||||
	// find push reference name
 | 
			
		||||
	//var t = "ok refs/heads/"
 | 
			
		||||
	//var i int
 | 
			
		||||
	//var refname string
 | 
			
		||||
	/*for {
 | 
			
		||||
		l, err := b.ReadString('\n')
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
		i = i + 1
 | 
			
		||||
		l = l[:len(l)-1]
 | 
			
		||||
		idx := strings.Index(l, t)
 | 
			
		||||
		if idx > 0 {
 | 
			
		||||
			refname = l[idx+len(t):]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	*/
 | 
			
		||||
 | 
			
		||||
	/*refs2, err := rep.AllReferencesMap()
 | 
			
		||||
	for name, ref := range refs2 {
 | 
			
		||||
		if ref2, ok := refs[name]; ok {
 | 
			
		||||
			if ref.Oid.Equal(ref2.Oid) {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		refname = name
 | 
			
		||||
		break
 | 
			
		||||
	}
 | 
			
		||||
	if refname == "" {
 | 
			
		||||
		println("No find any reference name:", s)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var ref *git.Reference
 | 
			
		||||
	var ok bool
 | 
			
		||||
	var l *list.List
 | 
			
		||||
	//log.Info("----", refname, "-----")
 | 
			
		||||
	if ref, ok = refs[refname]; !ok {
 | 
			
		||||
		// for new branch
 | 
			
		||||
		refs, err = rep.AllReferencesMap()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			println("Get All References failed:", err.Error())
 | 
			
		||||
			log.Error(err.Error())
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		if ref, ok = refs[refname]; !ok {
 | 
			
		||||
			log.Error("unknow reference name -", refname, "-", b.String())
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		l, err = ref.AllCommits()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			println("Get All Commits failed:", err.Error())
 | 
			
		||||
			log.Error(err.Error())
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		//log.Info("----", ref, "-----")
 | 
			
		||||
		var last *git.Commit
 | 
			
		||||
		//log.Info("00000", ref.Oid.String())
 | 
			
		||||
		last, err = ref.LastCommit()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			println("Get last commit failed:", err.Error())
 | 
			
		||||
			log.Error(err.Error())
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ref2, err := rep.LookupReference(ref.Name)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			println("look up reference failed:", err.Error())
 | 
			
		||||
			log.Error(err.Error())
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		//log.Info("11111", ref2.Oid.String())
 | 
			
		||||
		before, err := ref2.LastCommit()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			println("Get last commit failed:", err.Error())
 | 
			
		||||
			log.Error(err.Error())
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		//log.Info("----", before.Id(), "-----", last.Id())
 | 
			
		||||
		l = ref.CommitsBetween(before, last)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	commits := make([][]string, 0)
 | 
			
		||||
	var maxCommits = 3
 | 
			
		||||
	for e := l.Front(); e != nil; e = e.Next() {
 | 
			
		||||
		commit := e.Value.(*git.Commit)
 | 
			
		||||
		commits = append(commits, []string{commit.Id().String(), commit.Message()})
 | 
			
		||||
		if len(commits) >= maxCommits {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err = models.CommitRepoAction(user.Id, user.Name,
 | 
			
		||||
		repo.Id, repoName, refname, &base.PushCommits{l.Len(), commits}); err != nil {
 | 
			
		||||
		log.Error("runUpdate.models.CommitRepoAction: %v", err, commits)
 | 
			
		||||
	} else {
 | 
			
		||||
		c := exec.Command("git", "update-server-info")
 | 
			
		||||
		c.Dir = repoPath
 | 
			
		||||
		err := c.Run()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Error("update-server-info: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
	}*/
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -58,7 +58,9 @@ func runUpdate(c *cli.Context) {
 | 
			
		||||
	repoName := os.Getenv("repoName")
 | 
			
		||||
 | 
			
		||||
	log.Info("username", userName)
 | 
			
		||||
	log.Info("repoName", repoName)
 | 
			
		||||
	f := models.RepoPath(userName, repoName)
 | 
			
		||||
	log.Debug("f", f)
 | 
			
		||||
 | 
			
		||||
	gitUpdate := exec.Command("git", "update-server-info")
 | 
			
		||||
	gitUpdate.Dir = f
 | 
			
		||||
@@ -140,7 +142,5 @@ func runUpdate(c *cli.Context) {
 | 
			
		||||
	if err = models.CommitRepoAction(int64(sUserId), userName,
 | 
			
		||||
		repos.Id, repoName, refName, &base.PushCommits{l.Len(), commits}); err != nil {
 | 
			
		||||
		log.Error("runUpdate.models.CommitRepoAction: %v", err)
 | 
			
		||||
	} else {
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user