2013-02-22 10 views
6

Sto provando a scrivere una funzione per inviare un progetto a github senza prima creare il progetto tra le nuvole. Attualmente puoi farlo dalla riga di comando git in RStudio usando le informazioni da this question.utilizzando la riga di comando git and curl

Ora sto cercando di riassumere in una funzione che posso utilizzare system per creare il repository nei cloud da un repository locale. Sto lavorando su questo su una macchina Windows e Linux (quindi non sono sicuro di quanto bene funzioni su mac ancora). Ecco il mio codice finora (rilevare la posizione 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] 
    } 
} 

Ho poi provare con system:

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

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

sembra buono. Ma poi ho provato su un vero e proprio pezzo di codice:

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

system(cmd1) 

e ottenere il messaggio:

> 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 

Come posso eseguire questo comando:

curl -u 'USER:PASS' https://api.github.com/user/repos -d '{"name":"REPO"}' dalla console.

Ho anche provato a correre senza mettere git di fronte prima. Sono attualmente su una macchina vincente 7

+2

Avete arricciatura installato? – hadley

+0

Suppongo di farlo se posso eseguire RCurl. Non l'ho provato su linux. Immagino che il trucco sarà trovarlo su Windows. –

+0

@hadley Sono in grado di farlo con la riga di comando git, quindi è necessario installare Curl (anche se non riesco a trovarlo). –

risposta

2

A mio avviso sembra che tu stia cercando di eseguire curl come comando git system("git curl") che ovviamente non funzionerà. Penso che tu abbia bisogno di trovare il percorso di installazione di curl binary su Windows in un modo simile a quello che hai fatto con l'eseguibile Git sopra. Su Mac OS X puoi eseguire il comando in questo modo ...

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

Ricordarsi di sfuggire alle virgolette nella stringa.

Immagino che potresti anche solo scaricare il file binario compilato di arricciatura ed eseguirlo dal percorso di download? Non ho avuto accesso alla mia casella Win7 al lavoro per testare questo funziona da copia e incolla ma si ottiene l'idea ...

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

Questo ha risposto alla domanda, ma non riesco ancora a farlo funzionare. Sto marcando come corretto e [chiedendo una domanda più appropriata -qui-] (http://stackoverflow.com/questions/15042418/send-to-github-via-curl-commandline) (non ero nemmeno ponendo la domanda giusta in questa discussione). –

Problemi correlati