2017-03-22 4 views
1

Ich habe ein Problem mit exec.Command mit .Dir zugewiesen. Wenn ich einen Befehl von der App aus starte, erhalte ich einen Fehler. aber wenn ich es von der Shell aus starte, funktioniert derselbe Befehl gut.Golang exec.Command in verschiedenen Ordner

command := exec.Command("git", "rev-parse", "--verify", "tags/v1.0.0^{commit}") 
command.Dir = "sub/subdir" 
out, err := command.CombinedOutput() 
fmt.Printf("Executed command [%s] %s\nErrorCode = %s\nOutput = %s\n", command.Dir, command.Args, err, out) 

Der Ausgang:

Executed command [sub/subdir] [git rev-parse --verify tags/v1.0.0^{commit}] 
ErrorCode = exit status 128 
Output = fatal: Needed a single revision 

Shell-Befehl:

$ (cd sub/subdir; git rev-parse --verify tags/v1.0.0^{commit}) 
c1f3b8707ac001dab875781def3c729e3ed6de2c 

Was habe ich falsch gemacht?

Antwort

0

Verwenden Sie einen absoluten Pfad. Auschecken filepath.Abs

+0

Oder noch besser, versuchen Sie mit ['filepath.Abs'] (https://golang.org/pkg/path/filepath/#Abs) den absoluten Pfad zu erstellen. Drucken Sie diesen Wert, um sicherzustellen, dass Sie den erwarteten Pfad verwenden. – cd1

+0

Es hat nicht geholfen - das gleiche Ergebnis. – Michael

Verwandte Themen