2012-09-17 72 views
2

我嘗試從R控制檯調用git命令,但卡住了。 我在MINGW32中使用git bash 1.7.11版,路徑是C:\ Windows \ SysWOW64 \ cmd.exe/c「」C:\ Program Files(x86)\ Git \ bin \ sh.exe「--login - 我」 .. 操作系統是Windows 7從R調用git

script <- "C:\\Users\\Kay\\Dropbox\\R-Scripts\\test.R" 
system(paste("git add", script), intern=TRUE) 
system(paste('"C:\\Program Files (x86)\\Git\\bin\\sh.exe\"', 
      'cd theBioBucket-Archives'), intern=TRUE) 
system(paste('"C:\\Program Files (x86)\\Git\\bin\\sh.exe\"', 
      'git add', script), intern=TRUE) 
system(paste("git commit -a -m", "'", "autocommit", "'"), intern=TRUE) 

[1] "/usr/bin/sh: cd: No such file or directory" 
attr(,"status") 
[1] 127 
Warnmeldung: 
Ausführung von Kommando '"C:\Program Files (x86)\Git\bin\sh.exe" cd theBioBucket-Archives' ergab Status 127 

我也試過:

system("C:\\Windows\\SysWOW64\\cmd.exe /c \"\"C:\\Program Files (x86)\\Git\\bin\\sh.exe\" git status", intern=TRUE) 
[1] "Der Befehl \"\"C:\\Program Files (x86)\\Git\\bin\\sh.exe git status\" ist entweder falsch geschrieben oder" 
[2] "konnte nicht gefunden werden."                    
attr(,"status") 
[1] 1 
Warnmeldung: 
Ausführung von Kommando 'C:\Windows\SysWOW64\cmd.exe /c ""C:\Program Files (x86)\Git\bin\sh.exe" git status' ergab Status 1 

,沒有運氣,無論是..

編輯2012年9月19日,我的環境:

> Sys.getenv("PATH") 
[1] "C:\\Program Files (x86)\\AMD APP\\bin\\x86_64;C:\\Program Files (x86)\\AMD APP\\bin\\x86;C:\\Program Files\\Common Files\\Microsoft Shared\\Windows Live;C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Windows Live;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files (x86)\\Windows Live\\Shared;C:\\Program Files (x86)\\ATI Technologies\\ATI.ACE\\Core-Static;C:\\Program Files\\MiKTex\\miktex\\bin\\" 
> normalizePath(R.home("bin")) 
[1] "C:\\Program Files\\R\\R-2.15.1\\bin\\x64" 
> shell("R --version") 
Der Befehl "R" ist entweder falsch geschrieben oder 
konnte nicht gefunden werden. 
Warnmeldungen: 
1: Ausführung von Kommando 'C:\Windows\system32\cmd.exe /c R --version' ergab Status 1 
2: In shell("R --version") : 
    'R --version' Ausführung mit Fehlerkode 1 fehlgeschlagen 

回答

2

我不認爲創建一個子shell可以工作。 Plus「cd: No such file or directory」表示所述外殼沒有適當的路徑集。

這將是更好地設置了正確的道路(如果需要,如git-cmd.bat做其他環境變量),以下this R script的例子,看看到git指令直接調用工作即可。

的OP提到yihui script

## put R's bin path to the system PATH variable under Windows 
R.bin = normalizePath(R.home("bin")) 
sys.path = Sys.getenv("PATH") 
if ((shell("R --version") != 0) || !grepl(R.bin, sys.path, fixed = TRUE)) { 
    system(paste("setx PATH \"", R.bin, ";", sys.path, "\"", sep = "")) 
} 

,並確認其與右PATH工作(見 「How To Use Environment Variables in Windows XP」):

我被一輝所使用的腳本和我PATH現在包含飯桶。 。第一次嘗試顯示現在可以調用git了!

+0

你的意思是這個腳本 - https://github.com/yihui/lyx/blob/master/add-R-path-win.R? – Kay

+0

@這似乎是另一種技巧。我參考的腳本至少應該改變R腳本執行中的PATH,這足以讓你的git命令起作用(並且你需要完成你的PATH:它不引用git安裝目錄) – VonC

+0

sry,我不會沒有辦法從引用的帖子到我的問題調整方法 - 有沒有機會獲得更具體的建議? – Kay