2016-10-26 7 views
0

私がgo-LANGアプリを書いていますし、私のことを行う必要がありますしてみました兄弟ディレクトリ へGolangクローンプライベートgithubのリポジトリ

  1. ゴー:

    exec.Command("/bin/sh", "-c", "cd ..").Output()

  2. とクローン/ GitHubリポジトリを更新する: git clone .... GitHubリポジトリ

これらのタスクはどちらも達成できません。 私はGitHub/libgit2/git2goを試しましたが、Ubuntuで16.04 libgit2はhttpsを理解できません。

ありがとうございました。

+0

:-) @JimBしています。また、 'git'を直接呼び出すだけではどうですか? – JimB

+0

申し訳ありませんが、ダミーの質問を再び投稿するために、私は "/ generator"内にmain.go を実行していますが、兄弟のディレクトリに移動する必要があります。または /home/svitlana/go/src/realsiter/realster git pull https:// github – Svitlana

+1

新しいシェルを実行し、_its_ディレクトリを変更することは何もしません。あなたのプロセスの作業ディレクトリを変更したい場合は、 'os.Chdir'を使用することができます。しかし、やはり、さまざまなlibgit2バインディングを使用しようとするのではなく、単に 'git pull 'を直接実行するのはなぜですか? – JimB

答えて

0

クレジット `/ binに/ sh`の別のインスタンス内のディレクトリを変更すると、作業ディレクトリを変更しない

func update_ghub(wg *sync.WaitGroup) { 
    var (
     cmdOut []byte 
     err error 
    ) 
    err = os.Chdir("/home/svitlana/go/src/realsiter/realster") 
    if err != nil { 
     log.Fatalln(err) 
    } 

    cmdName := "git" 
    cmdArgs := []string{"pull"} 

    if cmdOut, err = exec.Command(cmdName, cmdArgs...).Output(); err != nil { 
     fmt.Fprintln(os.Stderr, "There was an error running git rev-parse command: ", err) 
     os.Exit(1) 
    } 
    sha := string(cmdOut) 
    fmt.Println("Response:", sha) 
    wg.Done() 
} 
関連する問題