首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell中的git和psake

Powershell中的git和psake
EN

Stack Overflow用户
提问于 2016-04-25 23:46:09
回答 1查看 311关注 0票数 1

我正试图通过Powershell中的git.exe自动从bitbucket中提取最新版本的代码,但我仍在努力解决许多问题。

我在一个任务中有以下代码:

代码语言:javascript
复制
    Exec {
       &('c:\Program Files\Git\bin\git.exe') pull --progress --no-rebase -v origin
    }

但我得到了以下错误:

代码语言:javascript
复制
Error: 25/04/2016 22:51:02:
At C:\work\mycompany\buildapp\psakefile.ps1:117 char:5 +     
&('c:\Program Files\Git\bin\git.exe') pull --progress --no-rebase -v origin
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
[<<==>>] Exception: From bitbucket.org:mybitbucketusername/work

我想这是因为我不是从我的克隆文件夹中调用git.exe,而是如何做到这一点?是否有办法从我当前的位置调用git并将其应用于特定的克隆文件夹?或者( b)如果a)无法完成,我如何更改文件夹?

假设我可以修复第一个问题,我如何才能找到从git返回的准确错误。只是得到例外:来自bitbucket.org太模糊了。

有更好的方法从bitbucket中提取我的代码吗?我应该使用Powershell中的psake调用git (用于windows)吗?这样更好吗?如果是这样的话,如何使用特定的命令行调用它。

如果你想让我提供更多的信息,请告诉我。

更新1:

这就是我叫git pull的时候得到的

代码语言:javascript
复制
Error: 26/04/2016 15:46:30: 
At C:\work\mycompany\buildapp\psakefile.ps1:120 char:5 +     
&('c:\Program Files\Git\bin\git.exe') pull +
[<<==>>] Exception: There is no tracking information for the current branch.

这是因为c:\work\mycompany\buildapp不是克隆的文件夹。它是克隆文件夹的子文件夹。

我需要能够在c:\work\mycompany\buildapp中调用git (因为我的脚本就是从这里运行的),但是我需要git从c:\work\mycompany\中提取数据。

我希望上述问题能澄清我的问题。

谢谢。

更新2:

以下git命令行可以很好地运行从任何文件夹调用的命令行:

代码语言:javascript
复制
git clone git@bitbucket.org:myusername/work.git "c:/Work/"

git --git-dir=c:\work\.git --work-tree=c:\work pull origin master

以下内容适用于PSake:

代码语言:javascript
复制
 Exec {
   &('c:\Program Files\Git\bin\git.exe') clone
      git@bitbucket.org:myusername/work.git 'C:/Work/'
 }

但是,当这样称呼时,拉仍然不起作用:

代码语言:javascript
复制
 exec {
   &('c:\program files\git\bin\git.exe') --git-dir=c:\work\.git 
      --work-tree=c:\work pull origin master
 }

我仍然有一个错误:

代码语言:javascript
复制
Error: 29/04/2016 10:06:36: 
At C:\temp\buildapp\psakefile.ps1:124 char:8 +        
&('c:\program files\git\bin\git.exe') --git-dir=c:\work\.git - ... +  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
[<<==>>] Exception: From bitbucket.org:myusername/work

不幸的是,这个例外并没有告诉我们太多。

我尝试了各种组合引号/双引号与参数,但没有任何效果。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-01 14:28:59

我将发表我自己的回答,但非常感谢“etanreisner& @spijn”,感谢他们的帮助和建议。

在这个问题上浪费了大量的时间,这只能归结为一件事!直接在ISE中运行我的脚本。在我发布了一份错误报告之后,戴夫·怀亚特( Dave )亲切地向我强调了这一点。下面是他说的话:

这种情况是发生在powershell.exe控制台还是从ISE,还是两者都发生?ISE将任何写入stderr流的控制台应用程序视为异常,但powershell.exe不例外。(这是因为powershell.exe是一个win32控制台应用程序,可以让该子系统处理与其他控制台应用程序的交互。ISE有自己的代码,当它实际上是一个WinForms应用程序时,它可以伪装成控制台,而且它的行为是不同的。我相信微软打算尽快解决这个问题。) 无论如何,git.exe写到stderr的所有地方,这就是为什么我总是保持一个单独的控制台打开时,我想运行git命令(所以我不必一直盯着红色文本。)

下面是我在github上创建的实际问题:当调用git.exe并试图克隆#174时,Psake总是抛出异常

在Powershell而不是ISE中尝试以下操作之后:

Git克隆人:

代码语言:javascript
复制
Exec {
&('c:\program files\git\bin\git.exe') clone
   git@bitbucket.org:myusername/work.git "C:\Work"
}

Git Pull:

代码语言:javascript
复制
exec {
&('c:\program files\git\bin\git.exe') --git-dir="c:/work/.git" 
   --work-tree="c:/work/" pull origin master
}

希望这能帮到别人,不要像我那样浪费时间在一些琐碎但不明显的事情上,除非你意识到了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36853042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档