2013-02-22 31 views
6

Tôi đang cố gắng viết một hàm để đẩy một dự án vào github mà không cần tạo dự án trong các đám mây. Hiện tại bạn có thể thực hiện điều này từ dòng lệnh git trong RStudio bằng cách sử dụng thông tin từ this question.sử dụng lệnh git và curl dòng lệnh

Bây giờ tôi đang cố gắng kết hợp nó thành một hàm mà tôi có thể sử dụng system để tạo repo trong các đám mây từ repo cục bộ. Tôi đang làm việc thông qua điều này trên một máy tính Windows và Linux (vì vậy không chắc chắn như thế nào này hoạt động trên mac nào được nêu ra). Dưới đây là mã của tôi vậy, đến nay (phát hiện vị trí 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] 
    } 
} 

sau đó tôi thử nó với system:

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

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

Trông tốt. Nhưng sau đó tôi thử nó trên một đoạn mã thực:

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

system(cmd1) 

Và nhận được thông báo:

> 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 

Làm thế nào tôi có thể chạy lệnh này:

curl -u 'USER:PASS' https://api.github.com/user/repos -d '{"name":"REPO"}' từ giao diện điều khiển.

Tôi cũng đã thử chạy mà không đặt git ở phía trước đầu tiên. Tôi hiện đang sử dụng máy 7 thắng

+2

Bạn đã cài đặt curl chưa? – hadley

+0

Tôi cho rằng mình sẽ làm nếu tôi có thể chạy RCurl. Đã không thử nó trên Linux. Tôi đoán cái bẫy sẽ tìm thấy nó trên cửa sổ. –

+0

@hadley Tôi có thể làm điều đó với dòng lệnh git để curl phải được cài đặt (mặc dù tôi không thể định vị nó). –

Trả lời

2

Tôi nghĩ rằng bạn đang cố chạy curl như lệnh git system("git curl"), điều này rõ ràng sẽ không hoạt động. Tôi nghĩ rằng bạn cần phải tìm đường dẫn cài đặt của nhị phân curl trên Windows theo cách tương tự như những gì bạn đã làm với Git thực thi ở trên. Trên Mac OS X, bạn có thể chạy lệnh của mình như vậy ...

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

Nhớ để thoát dấu ngoặc kép thêm trong chuỗi.

Tôi đoán bạn thậm chí có thể tải xuống tệp nhị phân curl đã biên dịch và chạy nó từ vị trí tải xuống? Tôi đã không có quyền truy cập vào hộp Win7 của tôi tại nơi làm việc để kiểm tra điều này chạy từ sao chép và dán nhưng bạn có ý tưởng ...

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

Điều này đã trả lời câu hỏi nhưng tôi vẫn không thể làm cho nó hoạt động. Tôi đang đánh dấu là chính xác và [hỏi một câu hỏi thích hợp hơn-] (http://stackoverflow.com/questions/15042418/send-to-github-via-curl-command-line) (Tôi thậm chí không đặt câu hỏi đúng trong chuỗi này). –

Các vấn đề liên quan