6

最初にクラウドにプロジェクトを作成せずに、プロジェクトをgithubにプッシュする関数を作成しようとしています。現在、この質問の情報を使用して、RStudioのgitコマンドラインからこれを行うことができます。

今、私はそれを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を前に置かずに実行してみました。私は現在、Win7マシンを使用しています

4

1 に答える 1

2

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

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

文字列内の余分な引用符をエスケープすることを忘れないでください。

コンパイルされたcurlのバイナリをダウンロードして、ダウンロード場所から実行することもできると思いますか?コピーアンドペーストからこの実行をテストするために、職場で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\"}\'") )
于 2013-02-23T08:00:16.300 に答える