我正试图通过Powershell中的git.exe自动从bitbucket中提取最新版本的代码,但我仍在努力解决许多问题。
我在一个任务中有以下代码:
Exec {
&('c:\Program Files\Git\bin\git.exe') pull --progress --no-rebase -v origin
}但我得到了以下错误:
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的时候得到的
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命令行可以很好地运行从任何文件夹调用的命令行:
git clone git@bitbucket.org:myusername/work.git "c:/Work/"
git --git-dir=c:\work\.git --work-tree=c:\work pull origin master以下内容适用于PSake:
Exec {
&('c:\Program Files\Git\bin\git.exe') clone
git@bitbucket.org:myusername/work.git 'C:/Work/'
}但是,当这样称呼时,拉仍然不起作用:
exec {
&('c:\program files\git\bin\git.exe') --git-dir=c:\work\.git
--work-tree=c:\work pull origin master
}我仍然有一个错误:
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不幸的是,这个例外并没有告诉我们太多。
我尝试了各种组合引号/双引号与参数,但没有任何效果。
有什么想法吗?
发布于 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克隆人:
Exec {
&('c:\program files\git\bin\git.exe') clone
git@bitbucket.org:myusername/work.git "C:\Work"
}Git Pull:
exec {
&('c:\program files\git\bin\git.exe') --git-dir="c:/work/.git"
--work-tree="c:/work/" pull origin master
}希望这能帮到别人,不要像我那样浪费时间在一些琐碎但不明显的事情上,除非你意识到了!
https://stackoverflow.com/questions/36853042
复制相似问题