无法执行 - Git P4 克隆失败

11
在安装了git之后,我尝试克隆一个已有的p4分支,但是失败了,并显示以下信息:
c:\P4_GIT\DT>git p4 clone //depot/CTAT/Windows/OneP/
fatal: 'p4' appears to be a git command, but we were not
able to execute it. Maybe git-p4 is broken?
5个回答

18

我在Git for Windows 2.16.1.4中看到了这个问题,并通过替换"C:\Program Files\Git\mingw64\libexec\git-core\git-p4"中的shebang来修复它。

我进行了以下替换:

#!/usr/bin/python2

随着:

#!/usr/bin/env python

注意:根据git的安装方式,该文件可能会在其他地方。

C:\Users\[USERNAME]\AppData\Local\Programs\Git\mingw64\libexec\git-core

1
刚刚自己解决了这个问题,可惜没看到你的答案。+1 - Yitzchak

8

对我来说,Gabriel Morin的答案是最好的,但它还不完整:

  1. gitconfig位于C:\Program Files\Git\mingw64\etc中。
  2. 如果你得到了 python.exe 'c:\program files\Git\mingw64\libexec\git-core\git-p4': python.exe: command not found 的错误提示信息,你可能需要将Python添加到PATH中或者完全指定你机器上的python.exe路径,像这样:
[alias]
    p4 = !'C:\\Program Files\\Python27\\python.exe' 'c:\\program files\\Git\\mingw64\\libexec\\git-core\\git-p4'
  1. 即使如此,您可能会看到像这样的错误信息:访问仓库失败:无法连接。这可能是因为您使用了交互式的p4接口,但您没有设置允许您从命令行连接到Perforce的环境变量(请尝试使用p4 sync查看是否可以正常工作),请设置:
p4 set P4PORT=<server>:1666
p4 set P4USER=<user>
p4 set P4PASSWD=<password>
p4 set P4CLIENT=<some name>

  1. git-p4.py不支持Python 3.0。您需要安装Python 2.7.3或更高版本。

1
感谢您添加这些细节,我的回答假设您对所有三个工具都有一定的熟悉度,而我还没有尝试过Python 3。 gitconfig可以在三个不同的级别上设置,即系统级别、全局级别或仓库级别。使用git config --edit命令和适当的参数来编辑您想要的配置文件:https://git-scm.com/docs/git-config 对于p4,除了环境变量之外,您还可以使用p4 -p <server:port> -c <workspace> login连接,并且如果需要,所有p4命令都可以加上这些选项前缀。 - Gabriel Morin
1
找到正确的配置路径是我的问题。对于其他读者,可以使用以下git命令查找git配置路径。 git config --list --show-origin --show-scope - Per Svensson

6

其实并不是很复杂,至少截止到2017年10月:

我安装了Windows版本的Python 2.7.x、Windows版本的Git 2.14.2以及Perforce命令行工具。我把这三个工具都加入环境变量中,并测试了能否从命令行调用pythongitp4。然后我就可以在我的git配置文件中添加以下内容:

[alias]
    p4 = !python.exe 'c:\\program files\\Git\\mingw64\\libexec\\git-core\\git-p4'

然后从命令行使用git p4就可以了。


2

我从未遇到过带有Python支持的Windows版git(这是git p4所需的)。但也许我错过了什么。每次在Windows上使用git p4时,会出现以下情况:

> git p4
basename: too many arguments
Try `basename --help' for more information.
fatal: git was built without support for  (NO_PYTHON=YesPlease).

这也得到了这里的确认。

但是你的错误信息不同,所以可能你确实有支持Python的git。不确定...


有人知道如何检查Python支持吗? --git新手 - Mark Storer

1
我曾经在Linux上更成功地从github下载了一个git-p4分支,并直接调用它(git-p4),而不是通过git p4。也许这会对你有帮助?

好的,我下载了 git-p4.py 并将其保存在以下位置: c:\Program Files\Git\bin\git-p4.py并且在 .gitConfig 中添加了以下行 [alias] p4 = !'c:\Program Files\Git\bin\git-p4.py'但现在出现了另一个问题:| >git p4 /usr/bin/env: python: 没有那个文件或目录fatal: 在扩展别名 'p4' 时:''c:\Program Files\Git\bin\git-p4.py'': 没有那个文件或目录 - Ulysses
我猜那意味着它找不到Python。 - Douglas Leeder
也许可以显式地使用 git-p4.py 作为第一个参数来调用 Python? - Douglas Leeder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接