| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // Copyright 2025 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package gitcmd
-
- import (
- "fmt"
- "os/exec"
-
- "code.gitea.io/gitea/modules/log"
- "code.gitea.io/gitea/modules/setting"
- )
-
- var GitExecutable = "git" // the command name of git, will be updated to an absolute path during initialization
-
- // SetExecutablePath changes the path of git executable and checks the file permission and version.
- func SetExecutablePath(path string) error {
- // If path is empty, we use the default value of GitExecutable "git" to search for the location of git.
- if path != "" {
- GitExecutable = path
- }
- absPath, err := exec.LookPath(GitExecutable)
- if err != nil {
- return fmt.Errorf("git not found: %w", err)
- }
- GitExecutable = absPath
- return nil
- }
-
- // HomeDir is the home dir for git to store the global config file used by Gitea internally
- func HomeDir() string {
- if setting.Git.HomePath == "" {
- // strict check, make sure the git module is initialized correctly.
- // attention: when the git module is called in gitea sub-command (serv/hook), the log module might not obviously show messages to users/developers.
- // for example: if there is gitea git hook code calling NewCommand before git.InitXxx, the integration test won't show the real failure reasons.
- log.Fatal("Unable to init Git's HomeDir, incorrect initialization of the setting and git modules")
- return ""
- }
- return setting.Git.HomePath
- }
|