2016-10-01 1 views
1

В перспективе devops я пытаюсь клонировать git-репозиторий (из gitlab с аутентификацией) с помощью PowerShell и библиотеки .Как клонировать, используя LibGit2Sharp от Powershell?

Итак, я установил Рабочий стол для этой библиотеки (git-clone method). Это фактическое состояние моего кода с помощью somme '???'.

$mylib = [Reflection.Assembly]::LoadFile("C:\Users\Administrator\AppData\Local\GitHub\PortableGit_284a859b0e6deba86edc624fef1e4db2aa8241a9\usr\share\git-tfs\LibGit2Sharp.dll") 
$url="https://github.com/libgit2/libgit2sharp.git" 
$dir="C:\Windows\Temp" 

$upc = new-object LibGit2Sharp.UsernamePasswordCredentials 
$upc.Username = "" 
$upc.Password = "" 

$co = new-object LibGit2Sharp.CloneOptions 
$co.BranchName = "master" 
$co.CredentialsProvider = $upc 

[LibGit2Sharp.Repository].Clone($url,$dir,$co) 

Я не эксперт .NET, и я не понимаю, почему это не работает. Спасибо за любую помощь.

ответ

0

Что-то вроде этого должно вас начать.

function Clone($url, $path, $login, $password) { 

    $authCallback = { 
    Param (
     [String] $url, 
     [String] $usernameFromUrl, 
     [LibGit2Sharp.SupportedCredentialTypes] $types 
    ) 

    Write-Host -ForegroundColor "Green" "Authenticating login '$login'..." 

    $creds = New-Object LibGit2Sharp.UsernamePasswordCredentials 
    $creds.Username = $login 
    $creds.Password = $password 

    return [LibGit2Sharp.Credentials]$creds 
    } 

    $transferCallback = { 
    Param (
     [LibGit2Sharp.TransferProgress] $progress 
    ) 

    $ratio = [Int32](100 * $progress.IndexedObjects/$progress.TotalObjects) 

    Write-Progress -Activity "Transfering..." -status "$ratio% Complete" -PercentComplete $ratio 

    return [bool]$true 
    } 

    $options = New-Object LibGit2Sharp.CloneOptions 

    $options.CredentialsProvider = $authCallback -as [LibGit2Sharp.Handlers.CredentialsHandler] 
    $options.OnTransferProgress = $transferCallback -as [LibGit2Sharp.Handlers.TransferProgressHandler] 

    Write-Host -ForegroundColor "Green" "Cloning $url in `"$path`"..." 

    [LibGit2Sharp.Repository]::Clone($url, $path, $options) | Out-Null 

    Write-Progress -Activity "Transfering..." -Completed 

    Write-Host "Done." 
} 
+0

Большое спасибо, это работает отлично, после некоторого испытания он выглядит, как только две библиотеки необходимы для моих целей: git2-e0902fb.dll, LibGit2Sharp.dll – Patrick

Смежные вопросы