2013-02-22 9 views
6

Я пытаюсь написать функцию, чтобы подтолкнуть проект к github без предварительного создания проекта в облаках. В настоящее время вы можете сделать это из командной строки git в RStudio, используя информацию от this question.с использованием командной строки 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. Думаю, trink будет найти его на окнах. –

+0

@hadley Я могу сделать это с помощью командной строки git, поэтому нужно установить завиток (хотя я не могу его найти). –

ответ

2

На мой взгляд, похоже, что вы пытаетесь запустить завиток как команду git system("git curl"), которая, очевидно, не будет работать. Я думаю, вам нужно найти путь установки двоичного файла curl в Windows таким же образом, как и с исполняемым выше Git. В 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\"}\'")) 
+0

Это ответ на вопрос, но я до сих пор не могу заставить его работать. Я правильно указываю и [задаю более подходящий вопрос -здесь] (http://stackoverflow.com/questions/15042418/send-to-github-via-curl-command-line) (я даже не был задавая правильный вопрос в этой теме). –

Смежные вопросы