2013-02-21 41 views
2

我想從R內使用git通過curl向github發送命令(即,我試圖使this question作爲R函數工作)。如果我能找到git.exe的位置,我可以完成此操作。我以爲我可以使用Sys.which但它不起作用。找到git.exe的位置

> Sys.which("git") 
git 
"" 

但我知道文件是存在的,當我做:

> system('"C:\\Program Files (x86)\\Git\\bin\\git" --version') 
git version 1.7.11.msysgit.1 

我如何才能找到在Windows git.exe? (也許是我要去了解整個問題錯了,因爲發生在我身上here

+1

'which'是一個* nix命令。 Windows上的Sys.which只會查看環境路徑,所以它不會奇蹟般地找到文件。你是否希望在git安裝在不同地方的機器上執行此操作? – 2013-02-21 05:41:03

+0

也許看看hadley在'devtools'中做了些什麼:https://github.com/hadley/devtools/blob/master/R/install-git.r。檢查底部的'git_path'函數。 – Marius 2013-02-21 05:42:15

+0

@Andrew Mao很可能會出現在'Program Files'或'Programs Files(x86)'中,但無法確定用戶是否已將文件放置在那裏。也許一個'if'' else'先搜索這兩個地方,然後如果沒有找到搜索其他地方,但如果它不在這兩個地方之一,我不知道如何找到它。 – 2013-02-21 05:45:52

回答

5

可以配置list.files()通過最有可能的文件夾做一個遞歸搜索:

list.files(
    path=c("c:/program files", "c:/program files (x86)"), 
    pattern="git.exe", 
    full.names=TRUE, 
    recursive=TRUE 
) 

在我的機器,這導致:

[1] "c:/program files (x86)/Git/bin/git.exe"    
[2] "c:/program files (x86)/Git/cmd/git.exe"    
[3] "c:/program files (x86)/Git/libexec/git-core/git.exe" 
+1

如果git存儲'「c:/Git/bin/git.exe」' – 2013-02-21 06:52:26

+1

@TylerRinker,這裏的關鍵短語*最有可能的文件夾*,我懷疑這將是你必須採取的方法,除非你想要搜索所有驅動器和目錄的性能命中。對於Windows(我認爲XP和以上版本),你也可以考慮使用'intern = TRUE'對'wmic product get/format:csv'進行系統調用,對其執行'read.csv',並用' grep'和朋友。但是,如果沒有找到Git(比如[昨天演示](http://stackoverflow.com/a/14971683/1270695)),那麼檢查可能的位置並集成用戶提示可能會比較慢 – A5C1D2H2I1M1N2O1R2T1 2013-02-21 08:53:15

0

嘿不知道是否有人會需要這個,現在已經有一段時間了。我從谷歌搜索中蹣跚前行,發現類似的痛點。

但是,我找到了路徑。這有點棘手。我想我安裝了這個新的GitHub軟件包,它將exe放在了一個不同於我預期的路徑中。

C:\用戶\ your_user_name_here \應用程序數據\本地\ GitHub的\ PortableGit_c7e0cbde92ba565cb218a521411d0e854079a28c \ CMD \ git.exe

  • 這裏唯一的CAVET是我加的是git.exe,因爲它只會顯示的圖像和cmd,所以只需知道它是一個應用程序,只需在路徑中的git旁邊添加.exe文件,然後單擊PHP Storm中的測試或您正在使用的任何IDE即可。

希望這可以幫助別人!