VS 2015 + Bower:在防火墙后面不起作用

时间:2015-02-25 17:31:24

标签: git bower firewall visual-studio-2015 git-config

问题

在Visual Studio 2015中,使用bower,我的包恢复在防火墙后面失败,错误类似于:

  

ECMDERR无法执行“git ls-remote --tags --heads git://github.com/jzaefferer/jquery-validation.git”,退出代码#-532462766

我已将git配置更新为使用http而不是git。当我从命令行运行时,命令成功:

enter image description here

但无论如何,Visual Studio或其中一个组件似乎都在使用git而不是http

背景&第一次尝试解决

使用Visual Studio 2015和Bower进行包管理。当它不在防火墙后面时效果很好,但是在防火墙后面我不能使用git://协议。

在SO(example)的许多其他地方记录的解决方案是运行:

git config --global url."http://".insteadOf git://

我这样做了,现在我的git config -l看起来像是:

ore.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=Sean Killeen
user.email=SeanKilleen@gmail.com
url.http://.insteadof=git://

但是尽管如此,Visual Studio / npm还是不尊重我的配置,或者使用旧的缓存版本。

第二次尝试解决

Per this thread on npm issue,我看到npm(可能是bower在VS中使用的)使用git@语法。虽然这不是我在输出中看到的,但我想我会试一试。

我跑了:

git config --global url."https://github.com/".insteadOf git@github.com:

然后我重新启动了Visual Studio,但问题仍然存在。我读到的修复可能永远不适用。

关于如何修复的任何想法?

12 个答案:

答案 0 :(得分:61)

使用VS 2015的同样问题,我的解决方法:

  1. 安装Git

    http://git-scm.com/

  2. 配置Git使用http代替git://和Git Bash

    git config --global url。“http://”.insteadOf git://

    编辑(正如g.pickardou指出的那样)您可以使用https更加安全:

    git config --global url。“ https ://”.insteadOf git://

  3. 配置VS以使用新安装的Git over VS Git

    右键单击Bower文件夹(在Dependencies下),然后选择“Configure external tools”

    取消选中“$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External \ git”

    使用“C:\ Program Files(x86)\ Git \ bin”添加新节点

  4. 希望这会对某人有所帮助,

    罗热

答案 1 :(得分:13)

微软安装的git版本(至少使用VS2015 Update 1) 支持.gitconfig文件,但默认情况下安装的工具不会给你一种操作方法(像所有其他答案显示使用git配置来解决问题)。

要解决问题而不需要任何额外的安装和诸如此类的东西,只需在C:\ Users \ YourUserName中创建一个.gitconfig文件并将此内容放在那里(这是git config --global将要执行的内容,但是因为你不这样做有一个可以更改配置的git.exe,如果不安装其他你不需要的东西就不能使用它。


    [url "https://github.com/"]
        insteadOf = git@github.com:
    [url "https://"]
        insteadOf = git://

答案 2 :(得分:7)

VS2015 Release对我有用的解决方案是:

  1. 安装git命令行工具。
  2. 修改文件C:\ Program Files(x86)\ Microsoft Visual Studio 带有此内容的14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Web Tools \ External \ bower.cmd:

    set PATH=C:\Program Files (x86)\Git\bin\;%PATH%
    git config --global url."http://".insteadOf git://
    git config -l
    @"%~dp0\node\node" "%~dp0\bower\node_modules\bower\bin\bower" %*
    

答案 3 :(得分:6)

我遇到了同样的问题。显然,VS2015 CTP附带的Git.exe不使用.gitconfig。但是如果你在其他地方安装了git命令行工具,你可以手动修复它。

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External中,您需要修改文件bower.cmd

评论第4和第5行:

rem -- set GIT_PATH=%~dp0\git
rem -- set PATH=%GIT_PATH%;%PATH%`

这将触发命令以使用您已安装的Git,这将获取本地.gitconfig。

确保您已设置适当的git设置:

git config --global url."http://".insteadOf git://

答案 4 :(得分:6)

使用VS 2015,Update 2:只需安装Git

http://git-scm.com/

答案 5 :(得分:4)

我在Visual Studio 2015 RC(而不是CTP)中遇到了同样的问题并得到了解决。

2015 RC中的bower.cmd运行不正常,所以我需要在我的VS中禁用它并使用我的PC上安装的官方版本。只需右键单击项目中的“Bower”文件夹并选择“配置外部工具”,然后取消选中“$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External \ git”部分即可轻松完成。

您可能还需要更改“.bowerrc”文件,以使GIT在您项目的正确路径中工作。

完成此操作后,一切都按预期工作。

答案 6 :(得分:3)

绝对有效的最简单答案就在这里。我对此问题感到非常头痛。 只需下载git并安装它。 安装时选择此选项。 Run Git from the windows command prompt

答案 7 :(得分:2)

我在Visual Studio 2015 RC(而不是CTP)中遇到了同样的问题。由于这是我在任何地方找到的唯一相关主题,因此我想在这里添加我的2c。

扩展@MathMau的回答,bower.cmd中的行引用了2015 RC中的不存在,所以我采用了不同的方法并设置了PATH env变量,以便我的整个bower.cmd文件现在看起来像这样:

set PATH=C:\Program Files (x86)\Git\bin\;%PATH%
@"%~dp0\node\node" "%~dp0\bower\node_modules\bower\bin\bower" %*

请注意,第一行是我添加的,第二行是现有内容。

我第一次这样做时,Visual Studio在程序包恢复期间崩溃,但似乎在重新启动VS后工作。

答案 8 :(得分:1)

设置正确的代理设置真是太痛苦了。 我分享我的解决方案。

我使用Visual Studio 2015在Windows 10上工作。 我必须在工作时设置代理设置并在家中将其删除。

要实现这一目标,您有两种解决方案。

  1. 配置Visual Studio外部工具以使用适当的设置
  2. 在您的计算机上安装工具(node,npm,bower)并使用它们(您可以设置Visual Studio选项以使用它们)
  3. 解决方案1(配置VS外部工具)

    1. 配置Npm。在管理员提示中执行以下cmd。

      > cd "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External"
      > npm.cmd config set --global http_proxy http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
      > npm.cmd config set --global http_proxy http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
      
    2. 配置Git。添加位于C:\ Windows \ Users \%USERNAME%的.gitconfig文件。然后添加以下键/值。

      [http]
          proxy = http://proxyuser:proxypwd@proxy.server.com:8080
      [https]
          proxy = http://proxyuser:proxypwd@proxy.server.com:8080
      
    3. 配置Bower。添加位于C:\ Windows \ Users \%USERNAME%的.bowerrc文件。然后添加以下键/值。

      {
        "proxy": "http://proxyuser:proxypwd@proxy.server.com:8080",
        "https-proxy": "http://proxyuser:proxypwd@proxy.server.com:8080"
      }
      
    4. 警告:如果您的代理密码中包含特殊字符,则必须对代理网址进行编码。例如:

      EtVoilà:)

      解决方案2(在您的机器上安装工具)

      我在我的机器上全局安装了node.js,npm,git和bower(因为我需要更多的控制权,而不仅仅是VS中可用的外部/工具)。

      1. 安装Node.js:NodeJS Website
      2. 安装Npm 注意:Npm由Node.js自动安装。 (换句话说,让node.js为你安装)
      3. 安装Git:Git Website请务必在Windows提示符screen shot git installation
      4. 中选中此选项以运行Git命令
      5. 安装Bower(globalement):npm install -g bower
      6. 配置Visual Studio工具以使用安装的新工具。为此,启动Visual Studio =>工具=>选项=>开放节点“项目和解决方案”=>打开外部Web工具=>取消选中“$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External \ git”。添加新的“C:\ Program Files(x86)\ Git \ bin”
      7. 设置代理设置。在 PowerShell 中的脚本下方运行管理员
      8. 我为Windows创建了2个powershell脚本来设置/取消设置代理设置(在Windows 10上测试过)。

        • 工作,我需要设置代理设置。

          在PowerShell中运行> ./proxy.ps1

        • 主页,我必须删除代理设置。

          在PowerShell中运行> ./proxy.disabled.ps1

        proxy.ps1

        # System Environment variable
        $env:HTTP_PROXY = "http://proxyuser:proxypwd@proxy.server.com:8080"
        $env:HTTPS_PROXY = "http://proxyuser:proxypwd@proxy.server.com:8080"
        # Fix (some tools uses lowercase env variables)
        $env:http_proxy = "http://proxyuser:proxypwd@proxy.server.com:8080"
        $env:https_proxy = "http://proxyuser:proxypwd@proxy.server.com:8080"
        # Git config
        git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
        git config --global https.proxy http://proxyuser:proxypwd@proxy.server.com:8080
        # Npm config
        npm config set proxy http://proxyuser:proxypwd@proxy.server.com:8080
        npm config set https-proxy http://proxyuser:proxypwd@proxy.server.com:8080
        # Restart Windows
        Restart-Computer -Confirm
        

        proxy.disabled.ps1

        # Delete System Environment variable
        Remove-Item env:\HTTP_PROXY
        Remove-Item env:\HTTPS_PROXY
        Remove-Item env:\http_proxy
        Remove-Item env:\https_proxy
        # Reset Git Config
        git config --global --unset http.proxy
        git config --global --unset https.proxy
        # Reset Npm Config
        npm config --global delete proxy
        npm config --global delete https-proxy
        # Restart Windows
        Restart-Computer -Confirm
        

        警告:如果您的代理密码中包含特殊字符,则必须对代理网址进行编码。例如:

        警告:UNSET PROXY =>某些bower设置可以在位于C:\ Users \%USERNAME%的 .bowerrc 文件中覆盖。换句话说,如果它不起作用,请检查您是否有.bowerrc文件。然后删除以下密钥(如果存在):

        {
          ...
          "proxy": "http://proxyuser:proxypwd@proxy.server.com:8080",
          "https-proxy": "http://proxyuser:proxypwd@proxy.server.com:8080",
           ...
        }
        

        警告:UNSET PROXY =>某些nmp / node设置可以覆盖在位于C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Web Tools \ External \ node \的 npmrc 文件中。等等换句话说,如果它不起作用,请检查您是否有npmrc文件。然后删除以下密钥(如果存在):

        http_proxy="http://proxyuser:proxypwd@proxy.server.com:8080"
        https_proxy="http://proxyuser:proxypwd@proxy.server.com:8080"
        

        EtVoilà:)

答案 9 :(得分:0)

如果您有一个友好的防火墙管理员,请让他通过定义以下防火墙策略来允许访问外部git存储库:

TCP 9418(不需要UDP)

答案 10 :(得分:0)

从命令行运行VS&#BOW,映射的主文件夹

@Rogerio Soares给出的答案很好,我想很多人会发现它非常有用(包括我自己)。

那就是说,在这里工作,我可以安装的工具非常非常有限(意味着我无法在没有获得许多人的许可的情况下安装另一个版本的Bower),而且我的主目录被映射到一个策略在z:\的网络共享。每次我发出git config --global配置git时,配置设置都会放在z:\.gitconfig中。使用成熟的Git SCM可以很好地使用这个配置文件。但是,显然,libgit2sharp(由嵌入Visual Studio 2015的Git版本使用)需要此文件位于c:\username\.gitconfig

因此,在将.gitconfig文件从z:\复制到c:\username\之后,我就可以直接从命令行运行Visual Studio的版本的bower。

答案 11 :(得分:0)

如果您想要全球解决方案

警告:它可以通过不同的应用程序影响多个代理设置,但它肯定是你想要的:)

注意 如果您的用户名中包含特殊字符:代理设置中的密码,则需要对其进行URLENCOD。示例:http://DOMAIN%5Cuser+name%3AP%40%24%24w0rd@proxy.server.com:8080

您必须添加2个环境变量。

要在Windows 10上执行此操作:

  1. START
  2. 搜索"编辑系统环境变量"
  3. (在系统属性的高级选项卡中)点击"环境变量...)
  4. (在系统变量中)点击"新..."
  5. 创建变量(变量名称:HTTP_PROXY,变量值:http://proxyuser:proxypwd@proxy.server.com:8080
  6. 创建变量(变量名称:HTTPS_PROXY,变量值:http://proxyuser:proxypwd@proxy.server.com:8080
  7. 重新启动Windows