2013-02-22 14 views
6

Próbuję napisać funkcję do wypychania projektu do github bez uprzedniego utworzenia projektu w chmurach. Obecnie możesz to zrobić z wiersza poleceń git w RStudio, korzystając z informacji z this question.przy użyciu polecenia git i curl z linii poleceń

Teraz próbuję zawinąć go do funkcji, które można użyć system do tworzenia repo w chmurach z lokalnego repo. Pracuję nad tym na komputerze z Windows i Linuksem (więc nie jestem pewien jak dobrze to działa na Macu). Oto mój kod do tej pory (wykryć lokalizację 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] 
    } 
} 

I potem spróbować z system:

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

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

Wygląda dobrze. Ale potem spróbować go na prawdziwym kawałkiem kodu:

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

system(cmd1) 

I dostaję komunikat:

> 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 

Jak mogę uruchomić polecenie:

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

Próbowałem też uruchomić bez uprzedniego wprowadzania git z przodu. Obecnie jestem na wygranej 7 maszynie

+2

Czy masz zainstalowany loków? – hadley

+0

Przypuszczam, że robię, jeśli mogę uruchomić RCurl. Nie próbowałem go na Linuksie. Domyślam się, że trink będzie go znaleźć w oknach. –

+0

@hadley Mogę to zrobić za pomocą wiersza poleceń git, więc curl musi być zainstalowany (chociaż nie mogę go zlokalizować). –

Odpowiedz

2

Moim zdaniem wygląda na to, że próbujesz uruchomić curl jako polecenie git system("git curl"), co oczywiście nie zadziała. Myślę, że musisz znaleźć ścieżkę instalacyjną binarnego curl w systemie Windows w sposób podobny do tego, co zrobiłeś z powyższym plikiem wykonywalnym Git. W systemie Mac OS X można uruchomić komendę jak tak ...

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

Pamiętając, aby uniknąć dodatkowych cudzysłowów w ciągu.

Domyślam się, że można po prostu pobrać skompilowany plik binarny z curl i uruchomić go z lokalizacji pobierania? Nie mam dostępu do mojego komputera Win7 w pracy, aby przetestować to uruchamianie z kopiowania i wklejania, ale masz pomysł ...

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

To odpowiada na pytanie, ale nadal nie mogę go uruchomić. Zaznaczam jako poprawną i [zadając bardziej odpowiednie pytanie -tutaj-] (http://stackoverflow.com/questions/15042418/send-to-github-via-curl-command-line) (Nie byłem nawet zadając właściwe pytanie w tym wątku). –

Powiązane problemy