【问题标题】:find location of git.exe找到 git.exe 的位置
【发布时间】:2013-02-21 05:37:39
【问题描述】:

我正在尝试使用 R 中的 git 通过 curl 向 github 发送命令(即,我正在尝试使 this question 作为 R 函数工作)。如果我能找到 git.exe 的位置,我就可以做到这一点。我以为我可以使用Sys.which,但它不起作用。

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

但是当我这样做时,我知道文件在那里:

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

如何在 Windows 上找到 git.exe? (或者我可能把整个问题都搞错了,就像发生在我身上的那样here

【问题讨论】:

  • which 是一个 *nix 命令。 Windows 上的Sys.which 只会查看环境路径,因此不会神奇地找到文件。您是否希望在 git 安装在不同位置的机器上执行此操作?
  • 也许看看 hadley 在 devtools: github.com/hadley/devtools/blob/master/R/install-git.r 中做了什么。检查底部的git_path函数。
  • 如果你总是想找到它,把bin目录路径放在%PATH%中(可能在启动链接中)。这甚至是可移植的,因为那时您实际上可以使用Sys.which。您还可以寻找最常见安装(Github fW、msysgit、Git for Windows)的注册表项。
  • 一般来说,正确设置路径是用户的责任 - 如果您尝试手动执行此操作,您将进入一个受伤的世界。有时这是值得的,但真的很难。例如,阅读 devtools 用于在 Windows 上查找 Rtools 的近 260 行代码:github.com/hadley/devtools/blob/master/R/rtools.r
  • @Hadley 我认为你的建议很好。每个人都提到了这一点,但你站出来说:-)

标签: r git


【解决方案1】:

您可以配置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"

【讨论】:

  • 如果git存储了"c:/Git/bin/git.exe"
  • @TylerRinker,这里的关键词是最有可能的文件夹,我怀疑这是你必须采取的方法,除非你想遭受搜索所有驱动器的性能损失和目录。对于 Windows(我认为是 XP 及更高版本),您还可以考虑使用intern = TRUE 对类似wmic product get /format:csv 的系统调用,在其上执行read.csv,然后使用grep 和朋友找到Git。但这可能比检查可能的位置并在未找到 Git 时集成用户提示要慢(比如我 demonstrated yesterday
【解决方案2】:

嘿,现在已经有一段时间了,不确定是否有人需要这个。我从谷歌搜索中偶然发现了一个类似的痛点。

但是,我找到了路径。这有点棘手。我想我安装了这个新的 GitHub 软件包,它把 exe 放在了与我预期不同的路径中。

C:\Users\your_user_name_here\AppData\Local\GitHub\PortableGit_c7e0cbde92ba565cb218a521411d0e854079a28c\cmd\git.exe

  • 这里唯一需要注意的是我添加了 git.exe,因为它只会显示图像和 cmd,所以只要知道它是一个应用程序,只需在路径中的 git 旁边添加 .exe,然后单击 PHP 中的测试Storm 或您正在使用的任何 IDE。

希望这对某人有所帮助!

【讨论】:

    猜你喜欢
    • 2021-01-28
    • 1970-01-01
    • 2020-05-04
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2015-11-17
    相关资源
    最近更新 更多