Запуск «Git-Clone» из Powershell выдает ошибки, даже когда кажется, что работает - PullRequest
0 голосов
/ 25 января 2019

Как мне интерпретировать ошибки, возникающие в этом скрипте PowerShell, который вызывает «Git Clone» (фактически использующий GitLab).И можно ли клонировать пустой каталог и заставить его работать без ошибок?

$path1 = "d:\GitPath" 
$path2 = "${path1}\mycompany-mygroup-nealtestautomation01-map"
$gitLabHttp = "http://git.mycompany.com/MyGroup/nealtestscriptaddedproject.git"
$gitLabHttp = "http://git.mycompany.com/MyGroup/mycompany-gwcustomers-nealtestautomation01-map.git" 
rd $path2 
cd $path1
git clone $gitLabHttp --local --verbose

Вывод:

git : Cloning into 'mycompany-mygroup-nealtestautomation01210-map'...
At D:\Scripts\GitCloneTest.ps1:7 char:1
+ git clone $gitLabHttp --local --verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Cloning into '...mation01-map'...:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

warning: --local is ignored
warning: You appear to have cloned an empty repository.

Любой больший скрипт, где я хочу использовать этот код, я включаю в него:

$ErrorActionPreference = "Stop"  #Special Poweshell Syntax to Stop on First Error 

, чтобы он останавливался напервая ошибка.

Даже когда я запускаю его в непустом проекте, я вижу красный и ошибки, похожие на описанные выше (сняли --local и --verbose с этого запуска):

git : Cloning into 'xxx.yyy.CanInvToOutZZZ210.Map'...
At D:\Scripts\GitCloneTest2.ps1:5 char:1
+ git clone $gitLabHttp
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Cloning into 'E...Intl210.Map'...:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

Если я запускаю из командной строки Windows, он работает хорошо с некоторой статистикой:

D:\GitGWCustomerMaps\Test2>git clone myrealurlhidden 
Cloning into 'XXX.YYY.CanInvToOutZZZZ210.Map'...
remote: Counting objects: 29, done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 29 (delta 9), reused 0 (delta 0)
Unpacking objects: 100% (29/29), done.

1 Ответ

0 голосов
/ 11 февраля 2019

Как я упоминал в « PowerShell Capture Git Output », поскольку команда Git может выводить информационное сообщение на stderr ( вместо stdout ), попробуйте (с Gti 2.16 +)

set GIT_REDIRECT_STDERR=2>&1

(или адаптировать эту переменную к вашему сценарию)

Это может помешать вашему скрипту остановиться на первой "ошибке", которая на самом деле не является ошибкой

OP NealWalters добавляет в комментарии :

Я закончил тем, что использовал функцию-обертку Invoke-Git из " Git clone: ​​перенаправьте stderr в stdout, но сохраняйте ошибки записи в stderr "

...