2013-02-22 13 views
6

私はプロジェクトをgithubにプッシュする機能を、クラウドで最初にプロジェクトを作成することなく作成しようとしています。現在は、this questionの情報を使ってRStudioのgitコマンドラインからこれを行うことができます。gitとcurlのコマンドラインを使用

今私はsystemを使用してローカルリポジトリからクラウド内のレポを作成できる機能にまとめようとしています。私はこれをWindowsとLinuxマシン上で動作させています(これはMac上でどれくらいうまく動作しているかわかりません)。ここに私のコードは、(Gitの位置を検出)これまでです:

gitpath <- NULL 
    repo <- "New" 
    user <- "CantPostThat" 
    password <- "blargcats" 


if (Sys.info()["sysname"] != "Windows") { 
    gitpath <- "git" 
} else { 
    if (is.null(gitpath)){ 
     test <- c(file.exists("C:\\Program Files (x86)\\Git\\bin\\git.exe"), 
      file.exists("C:\\Program Files\\Git\\bin\\git.exe")) 
     if (sum(test) == 0) { 
      stop("Git not found. Supply path to 'gitpath'")  
     } 
     gitpath <- c("\"C:\\Program Files (x86)\\Git\\bin\\git\"", 
      "\"C:\\Program Files\\Git\\bin\\git\"")[test][1] 
    } 
} 

私はその後、systemでそれを試してみてください。

system(paste(gitpath, "--version")) 

> system(paste(gitpath, "--version")) 
git version 1.7.11.msysgit.1 

がよさそうです。しかし、私は実際のコードの塊でそれを試してみてください。

cmd1 <- paste(gitpath, paste0("curl -u '", user, ":", password, 
    "' https://api.github.com/user/repos -d '{\"name\":\"", repo, "\"}'")) 

system(cmd1) 

とメッセージが出ます:

> system(cmd1) 
git: 'curl' is not a git command. See 'git --help'. 

Did you mean this? 
    pull 
Warning message: 
running command '"C:\Program Files (x86)\Git\bin\git" curl -u ' trinker : PASSWORD ' https://api.github.com/user/repos -d '{"name":" three "}'' had status 1 

は、どのように私は、このコマンドを実行できます。

curl -u 'USER:PASS' https://api.github.com/user/repos -d '{"name":"REPO"}' コンソールから。

gitを先に入れずに実行してみました。私は現在勝利7マシンです。

+2

カールがインストールされていますか? – hadley

+0

私はRCurlを走らせることができると思います。 Linuxで試してみませんか?私はウィンドウ上でそれを見つけることがトリックだと思う。 –

+0

@hadley私はgitコマンドラインでそれを行うことができるので、curlをインストールする必要があります(私はそれを見つけることはできません)。 –

答えて

2

私の考えでは、gitコマンドとしてカールを実行しようとしているようです。system("git curl")明らかにうまくいかないでしょう。 Windows上で上記のGit実行可能ファイルと同様の方法でカールバイナリのインストールパスを探す必要があると思います。 Mac OS Xでは、次のようにコマンドを実行できます。

system("curl -u \'USER:PASS\' https://api.github.com/user/repos -d \'{\"name\":\"REPO\"}\'") 

文字列に余分な引用符をエスケープするのを覚えておいてください。

私はあなたがカールのコンパイルされたバイナリをダウンロードして、ダウンロード場所から実行することもできると思いますか?私はWin7ボックスにアクセスできないが、コピー&ペーストから実行するかどうかをテストするが、あなたはそのアイデアを得る...

url <- "http://curl.askapache.com/download/curl-7.23.1-win64-ssl-sspi.zip" 
tmp <- tempfile(fileext = ".zip") 
download.file(url,tmp) 
unzip(tmp) 
system(paste0(tempdir(),"/curl", " -u \'USER:PASS\' https://api.github.com/user/repos -d \'{\"name\":\"REPO\"}\'")) 
+0

これは質問に答えましたが、私はまだそれを動作させることができません。私は正しいと印をつけている[より適切な質問をどこかに尋ねる](http://stackoverflow.com/questions/15042418/send-to-github-via-curl-commandline)(私はこのスレッドで正しい質問をしています)。 –

関連する問題