mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			928 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			928 B
		
	
	
	
		
			Go
		
	
	
	
	
	
//go:build !windows
 | 
						|
// +build !windows
 | 
						|
 | 
						|
package gitutil
 | 
						|
 | 
						|
import (
 | 
						|
	"os"
 | 
						|
	"os/exec"
 | 
						|
	"path/filepath"
 | 
						|
 | 
						|
	"github.com/moby/sys/mountinfo"
 | 
						|
)
 | 
						|
 | 
						|
func gitPath(wd string) (string, error) {
 | 
						|
	// On WSL2 we need to check if the current working directory is mounted on
 | 
						|
	// a Windows drive and if so, we need to use the Windows git executable.
 | 
						|
	if os.Getenv("WSL_DISTRO_NAME") != "" && wd != "" {
 | 
						|
		// ensure any symlinks are resolved
 | 
						|
		wdPath, err := filepath.EvalSymlinks(wd)
 | 
						|
		if err != nil {
 | 
						|
			return "", err
 | 
						|
		}
 | 
						|
		mi, err := mountinfo.GetMounts(mountinfo.ParentsFilter(wdPath))
 | 
						|
		if err != nil {
 | 
						|
			return "", err
 | 
						|
		}
 | 
						|
		// find the longest mount point
 | 
						|
		var idx, maxlen int
 | 
						|
		for i := range mi {
 | 
						|
			if len(mi[i].Mountpoint) > maxlen {
 | 
						|
				maxlen = len(mi[i].Mountpoint)
 | 
						|
				idx = i
 | 
						|
			}
 | 
						|
		}
 | 
						|
		if mi[idx].FSType == "9p" {
 | 
						|
			if p, err := exec.LookPath("git.exe"); err == nil {
 | 
						|
				return p, nil
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return exec.LookPath("git")
 | 
						|
}
 |