我正在尝试使用 git.exe 通过 Powershell 中的 psake 自动从 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 但我该怎么做呢?有没有办法 a) 从我当前的位置调用 git 并将其应用于特定的克隆文件夹?或b)如果a)无法完成,我该如何更改psake中的文件夹?
假设我可以解决第一个问题,我怎样才能找出从 git 返回的确切错误。刚刚得到 Exception: From bitbucket.org 太模糊了。
有没有更好的方法从 bitbucket 中提取我的代码?我应该使用 Powershell 中的 psake 调用 git bash(对于 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 不是克隆文件夹。它是克隆文件夹的子文件夹。
我需要能够在其中调用 git c:\work\mycompany\buildapp
(因为这是我的脚本运行的地方),但我需要 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/'
}
但是当以这种方式调用时,pull 仍然不起作用:
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
不幸的是,这个例外并没有告诉我们太多。
我尝试了各种带有引号/双引号和参数的组合,但无济于事。
有任何想法吗?