2016-10-01 1 views
1

In einer Devops Perspektive versuche ich ein Git Repository (von Gitlab mit Authentifizierung) mit PowerShell und der Bibliothek zu klonen.Wie mit LibGit2Sharp von Powershell klonen?

So ich instaliert Desktop für den Versuch, diese Bibliothek auf diese Weise zu verwenden (git-clone method). Dies ist der aktuelle Status meines Codes mit 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) 

Ich bin kein .NET-Experte und ich verstehe nicht, warum es nicht funktioniert. Danke für jede Hilfe.

Antwort

0

So etwas sollte Ihnen den Anfang machen.

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

Vielen Dank, es funktioniert perfekt, nach einigem Test es aussieht wie nur zwei Bibliothek für meine Zwecke benötigt werden: GIT2-e0902fb.dll, LibGit2Sharp.dll – Patrick

Verwandte Themen