2016-10-01 34 views
1

在devops透視圖中,我嘗試使用PowerShell和庫來克隆git存儲庫(通過帶驗證的gitlab)。如何使用Powershell中的LibGit2Sharp進行克隆?

所以我安裝了桌面試圖使用這種庫這種方式(git-clone method)。這是我的索姆'???'代碼的實際狀態。

$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