mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 12:53:43 +01:00 
			
		
		
		
	go-version constraints ignore pre-releases (#13234)
Go-version constraints ignore pre-releases. Rather than change the library further this PR simply changes the git version comparison to use simple version compare ignoring the issue of pre-releases. Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		
							parent
							
								
									53359b1861
								
							
						
					
					
						commit
						de6e427a01
					
				@ -477,7 +477,7 @@ func (c *Commit) GetBranchName() (string, error) {
 | 
				
			|||||||
	args := []string{
 | 
						args := []string{
 | 
				
			||||||
		"name-rev",
 | 
							"name-rev",
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if CheckGitVersionConstraint(">= 2.13.0") == nil {
 | 
						if CheckGitVersionAtLeast("2.13.0") == nil {
 | 
				
			||||||
		args = append(args, "--exclude", "refs/tags/*")
 | 
							args = append(args, "--exclude", "refs/tags/*")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	args = append(args, "--name-only", "--no-undefined", c.ID.String())
 | 
						args = append(args, "--name-only", "--no-undefined", c.ID.String())
 | 
				
			||||||
 | 
				
			|||||||
@ -150,13 +150,13 @@ func Init(ctx context.Context) error {
 | 
				
			|||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if CheckGitVersionConstraint(">= 2.10") == nil {
 | 
						if CheckGitVersionAtLeast("2.10") == nil {
 | 
				
			||||||
		if err := checkAndSetConfig("receive.advertisePushOptions", "true", true); err != nil {
 | 
							if err := checkAndSetConfig("receive.advertisePushOptions", "true", true); err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if CheckGitVersionConstraint(">= 2.18") == nil {
 | 
						if CheckGitVersionAtLeast("2.18") == nil {
 | 
				
			||||||
		if err := checkAndSetConfig("core.commitGraph", "true", true); err != nil {
 | 
							if err := checkAndSetConfig("core.commitGraph", "true", true); err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -173,17 +173,17 @@ func Init(ctx context.Context) error {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CheckGitVersionConstraint check version constrain against local installed git version
 | 
					// CheckGitVersionAtLeast check git version is at least the constraint version
 | 
				
			||||||
func CheckGitVersionConstraint(constraint string) error {
 | 
					func CheckGitVersionAtLeast(atLeast string) error {
 | 
				
			||||||
	if err := LoadGitVersion(); err != nil {
 | 
						if err := LoadGitVersion(); err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	check, err := version.NewConstraint(constraint)
 | 
						atLeastVersion, err := version.NewVersion(atLeast)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !check.Check(gitVersion) {
 | 
						if gitVersion.Compare(atLeastVersion) < 0 {
 | 
				
			||||||
		return fmt.Errorf("installed git binary  %s does not satisfy version constraint %s", gitVersion.Original(), constraint)
 | 
							return fmt.Errorf("installed git binary version %s is not at least %s", gitVersion.Original(), atLeast)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -40,7 +40,7 @@ func (repo *Repository) CheckAttribute(opts CheckAttributeOpts) (map[string]map[
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// git check-attr --cached first appears in git 1.7.8
 | 
						// git check-attr --cached first appears in git 1.7.8
 | 
				
			||||||
	if opts.CachedOnly && CheckGitVersionConstraint(">= 1.7.8") == nil {
 | 
						if opts.CachedOnly && CheckGitVersionAtLeast("1.7.8") == nil {
 | 
				
			||||||
		cmdArgs = append(cmdArgs, "--cached")
 | 
							cmdArgs = append(cmdArgs, "--cached")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -469,7 +469,7 @@ func (repo *Repository) getCommitsBeforeLimit(id SHA1, num int) (*list.List, err
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (repo *Repository) getBranches(commit *Commit, limit int) ([]string, error) {
 | 
					func (repo *Repository) getBranches(commit *Commit, limit int) ([]string, error) {
 | 
				
			||||||
	if CheckGitVersionConstraint(">= 2.7.0") == nil {
 | 
						if CheckGitVersionAtLeast("2.7.0") == nil {
 | 
				
			||||||
		stdout, err := NewCommand("for-each-ref", "--count="+strconv.Itoa(limit), "--format=%(refname:strip=2)", "--contains", commit.ID.String(), BranchPrefix).RunInDir(repo.Path)
 | 
							stdout, err := NewCommand("for-each-ref", "--count="+strconv.Itoa(limit), "--format=%(refname:strip=2)", "--contains", commit.ID.String(), BranchPrefix).RunInDir(repo.Path)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return nil, err
 | 
								return nil, err
 | 
				
			||||||
 | 
				
			|||||||
@ -89,11 +89,11 @@ func (repo *Repository) CommitTree(author *Signature, committer *Signature, tree
 | 
				
			|||||||
	_, _ = messageBytes.WriteString(opts.Message)
 | 
						_, _ = messageBytes.WriteString(opts.Message)
 | 
				
			||||||
	_, _ = messageBytes.WriteString("\n")
 | 
						_, _ = messageBytes.WriteString("\n")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if CheckGitVersionConstraint(">= 1.7.9") == nil && (opts.KeyID != "" || opts.AlwaysSign) {
 | 
						if CheckGitVersionAtLeast("1.7.9") == nil && (opts.KeyID != "" || opts.AlwaysSign) {
 | 
				
			||||||
		cmd.AddArguments(fmt.Sprintf("-S%s", opts.KeyID))
 | 
							cmd.AddArguments(fmt.Sprintf("-S%s", opts.KeyID))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if CheckGitVersionConstraint(">= 2.0.0") == nil && opts.NoGPGSign {
 | 
						if CheckGitVersionAtLeast("2.0.0") == nil && opts.NoGPGSign {
 | 
				
			||||||
		cmd.AddArguments("--no-gpg-sign")
 | 
							cmd.AddArguments("--no-gpg-sign")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -214,7 +214,7 @@ func (t *TemporaryUploadRepository) CommitTreeWithDate(author, committer *models
 | 
				
			|||||||
	args := []string{"commit-tree", treeHash, "-p", "HEAD"}
 | 
						args := []string{"commit-tree", treeHash, "-p", "HEAD"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Determine if we should sign
 | 
						// Determine if we should sign
 | 
				
			||||||
	if git.CheckGitVersionConstraint(">= 1.7.9") == nil {
 | 
						if git.CheckGitVersionAtLeast("1.7.9") == nil {
 | 
				
			||||||
		sign, keyID, signer, _ := t.repo.SignCRUDAction(author, t.basePath, "HEAD")
 | 
							sign, keyID, signer, _ := t.repo.SignCRUDAction(author, t.basePath, "HEAD")
 | 
				
			||||||
		if sign {
 | 
							if sign {
 | 
				
			||||||
			args = append(args, "-S"+keyID)
 | 
								args = append(args, "-S"+keyID)
 | 
				
			||||||
@ -231,7 +231,7 @@ func (t *TemporaryUploadRepository) CommitTreeWithDate(author, committer *models
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
				committerSig = signer
 | 
									committerSig = signer
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else if git.CheckGitVersionConstraint(">= 2.0.0") == nil {
 | 
							} else if git.CheckGitVersionAtLeast("2.0.0") == nil {
 | 
				
			||||||
			args = append(args, "--no-gpg-sign")
 | 
								args = append(args, "--no-gpg-sign")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -335,7 +335,7 @@ func (t *TemporaryUploadRepository) CheckAttribute(attribute string, args ...str
 | 
				
			|||||||
	cmdArgs := []string{"check-attr", "-z", attribute}
 | 
						cmdArgs := []string{"check-attr", "-z", attribute}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// git check-attr --cached first appears in git 1.7.8
 | 
						// git check-attr --cached first appears in git 1.7.8
 | 
				
			||||||
	if git.CheckGitVersionConstraint(">= 1.7.8") == nil {
 | 
						if git.CheckGitVersionAtLeast("1.7.8") == nil {
 | 
				
			||||||
		cmdArgs = append(cmdArgs, "--cached")
 | 
							cmdArgs = append(cmdArgs, "--cached")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	cmdArgs = append(cmdArgs, "--")
 | 
						cmdArgs = append(cmdArgs, "--")
 | 
				
			||||||
 | 
				
			|||||||
@ -131,7 +131,7 @@ func initRepoCommit(tmpPath string, repo *models.Repository, u *models.User, def
 | 
				
			|||||||
		"-m", "Initial commit",
 | 
							"-m", "Initial commit",
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if git.CheckGitVersionConstraint(">= 1.7.9") == nil {
 | 
						if git.CheckGitVersionAtLeast("1.7.9") == nil {
 | 
				
			||||||
		sign, keyID, signer, _ := models.SignInitialCommit(tmpPath, u)
 | 
							sign, keyID, signer, _ := models.SignInitialCommit(tmpPath, u)
 | 
				
			||||||
		if sign {
 | 
							if sign {
 | 
				
			||||||
			args = append(args, "-S"+keyID)
 | 
								args = append(args, "-S"+keyID)
 | 
				
			||||||
@ -141,7 +141,7 @@ func initRepoCommit(tmpPath string, repo *models.Repository, u *models.User, def
 | 
				
			|||||||
				committerName = signer.Name
 | 
									committerName = signer.Name
 | 
				
			||||||
				committerEmail = signer.Email
 | 
									committerEmail = signer.Email
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else if git.CheckGitVersionConstraint(">= 2.0.0") == nil {
 | 
							} else if git.CheckGitVersionAtLeast("2.0.0") == nil {
 | 
				
			||||||
			args = append(args, "--no-gpg-sign")
 | 
								args = append(args, "--no-gpg-sign")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -74,7 +74,7 @@ func newGit() {
 | 
				
			|||||||
		log.Fatal("Error retrieving git version: %v", err)
 | 
							log.Fatal("Error retrieving git version: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if git.CheckGitVersionConstraint(">= 2.9") == nil {
 | 
						if git.CheckGitVersionAtLeast("2.9") == nil {
 | 
				
			||||||
		// Explicitly disable credential helper, otherwise Git credentials might leak
 | 
							// Explicitly disable credential helper, otherwise Git credentials might leak
 | 
				
			||||||
		git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "credential.helper=")
 | 
							git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "credential.helper=")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -82,7 +82,7 @@ func newGit() {
 | 
				
			|||||||
	var format = "Git Version: %s"
 | 
						var format = "Git Version: %s"
 | 
				
			||||||
	var args = []interface{}{version.Original()}
 | 
						var args = []interface{}{version.Original()}
 | 
				
			||||||
	// Since git wire protocol has been released from git v2.18
 | 
						// Since git wire protocol has been released from git v2.18
 | 
				
			||||||
	if Git.EnableAutoGitWireProtocol && git.CheckGitVersionConstraint(">= 2.18") == nil {
 | 
						if Git.EnableAutoGitWireProtocol && git.CheckGitVersionAtLeast("2.18") == nil {
 | 
				
			||||||
		git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "protocol.version=2")
 | 
							git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "protocol.version=2")
 | 
				
			||||||
		format += ", Wire Protocol %s Enabled"
 | 
							format += ", Wire Protocol %s Enabled"
 | 
				
			||||||
		args = append(args, "Version 2") // for focus color
 | 
							args = append(args, "Version 2") // for focus color
 | 
				
			||||||
 | 
				
			|||||||
@ -96,7 +96,7 @@ func CheckLFSVersion() {
 | 
				
			|||||||
			log.Fatal("Error retrieving git version: %v", err)
 | 
								log.Fatal("Error retrieving git version: %v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if git.CheckGitVersionConstraint(">= 2.1.2") != nil {
 | 
							if git.CheckGitVersionAtLeast("2.1.2") != nil {
 | 
				
			||||||
			LFS.StartServer = false
 | 
								LFS.StartServer = false
 | 
				
			||||||
			log.Error("LFS server support needs at least Git v2.1.2")
 | 
								log.Error("LFS server support needs at least Git v2.1.2")
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
 | 
				
			|||||||
@ -584,7 +584,7 @@ func LFSPointerFiles(ctx *context.Context) {
 | 
				
			|||||||
	go createPointerResultsFromCatFileBatch(catFileBatchReader, &wg, pointerChan, ctx.Repo.Repository, ctx.User)
 | 
						go createPointerResultsFromCatFileBatch(catFileBatchReader, &wg, pointerChan, ctx.Repo.Repository, ctx.User)
 | 
				
			||||||
	go pipeline.CatFileBatch(shasToBatchReader, catFileBatchWriter, &wg, basePath)
 | 
						go pipeline.CatFileBatch(shasToBatchReader, catFileBatchWriter, &wg, basePath)
 | 
				
			||||||
	go pipeline.BlobsLessThan1024FromCatFileBatchCheck(catFileCheckReader, shasToBatchWriter, &wg)
 | 
						go pipeline.BlobsLessThan1024FromCatFileBatchCheck(catFileCheckReader, shasToBatchWriter, &wg)
 | 
				
			||||||
	if git.CheckGitVersionConstraint(">= 2.6.0") != nil {
 | 
						if git.CheckGitVersionAtLeast("2.6.0") != nil {
 | 
				
			||||||
		revListReader, revListWriter := io.Pipe()
 | 
							revListReader, revListWriter := io.Pipe()
 | 
				
			||||||
		shasToCheckReader, shasToCheckWriter := io.Pipe()
 | 
							shasToCheckReader, shasToCheckWriter := io.Pipe()
 | 
				
			||||||
		wg.Add(2)
 | 
							wg.Add(2)
 | 
				
			||||||
 | 
				
			|||||||
@ -46,7 +46,7 @@ func remoteAddress(repoPath string) (string, error) {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return "", err
 | 
							return "", err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if git.CheckGitVersionConstraint(">= 2.7") == nil {
 | 
						if git.CheckGitVersionAtLeast("2.7") == nil {
 | 
				
			||||||
		cmd = git.NewCommand("remote", "get-url", "origin")
 | 
							cmd = git.NewCommand("remote", "get-url", "origin")
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		cmd = git.NewCommand("config", "--get", "remote.origin.url")
 | 
							cmd = git.NewCommand("config", "--get", "remote.origin.url")
 | 
				
			||||||
 | 
				
			|||||||
@ -155,7 +155,7 @@ func rawMerge(pr *models.PullRequest, doer *models.User, mergeStyle models.Merge
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var gitConfigCommand func() *git.Command
 | 
						var gitConfigCommand func() *git.Command
 | 
				
			||||||
	if git.CheckGitVersionConstraint(">= 1.8.0") == nil {
 | 
						if git.CheckGitVersionAtLeast("1.8.0") == nil {
 | 
				
			||||||
		gitConfigCommand = func() *git.Command {
 | 
							gitConfigCommand = func() *git.Command {
 | 
				
			||||||
			return git.NewCommand("config", "--local")
 | 
								return git.NewCommand("config", "--local")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -214,14 +214,14 @@ func rawMerge(pr *models.PullRequest, doer *models.User, mergeStyle models.Merge
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Determine if we should sign
 | 
						// Determine if we should sign
 | 
				
			||||||
	signArg := ""
 | 
						signArg := ""
 | 
				
			||||||
	if git.CheckGitVersionConstraint(">= 1.7.9") == nil {
 | 
						if git.CheckGitVersionAtLeast("1.7.9") == nil {
 | 
				
			||||||
		sign, keyID, signer, _ := pr.SignMerge(doer, tmpBasePath, "HEAD", trackingBranch)
 | 
							sign, keyID, signer, _ := pr.SignMerge(doer, tmpBasePath, "HEAD", trackingBranch)
 | 
				
			||||||
		if sign {
 | 
							if sign {
 | 
				
			||||||
			signArg = "-S" + keyID
 | 
								signArg = "-S" + keyID
 | 
				
			||||||
			if pr.BaseRepo.GetTrustModel() == models.CommitterTrustModel || pr.BaseRepo.GetTrustModel() == models.CollaboratorCommitterTrustModel {
 | 
								if pr.BaseRepo.GetTrustModel() == models.CommitterTrustModel || pr.BaseRepo.GetTrustModel() == models.CollaboratorCommitterTrustModel {
 | 
				
			||||||
				committer = signer
 | 
									committer = signer
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else if git.CheckGitVersionConstraint(">= 2.0.0") == nil {
 | 
							} else if git.CheckGitVersionAtLeast("2.0.0") == nil {
 | 
				
			||||||
			signArg = "--no-gpg-sign"
 | 
								signArg = "--no-gpg-sign"
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user