static string CloneLibGit2(Repository repo, string repoPath) { //var cloneOptions = new CloneOptions() //{ // IsBare = false, // Checkout = true, // OnCheckoutProgress = (path, completedSteps, totalSteps) => // { // //Log.Message("checkout progress ({0}/{1})", completedSteps, // // totalSteps); // }, // OnTransferProgress = progress => // { // //Log.Message("transfer progress ({0}/{1})", progress.ReceivedObjects, // // progress.TotalObjects); // return true; // }, //}; //var clonedRepo = LibGit2Sharp.Repository.Clone(repo.URL, repoPath, cloneOptions); //return clonedRepo; return string.Empty; }
//void FetchRepo(LibGit2Sharp.IRepository localRepo) //{ // var options = new FetchOptions // { // OnProgress = output => // { // Log.Message("Fetch progress: {0}", output); // return true; // }, // OnTransferProgress = progress => // { // Log.Message("Fetch transfer progress ({0}/{1})", // progress.ReceivedObjects, progress.TotalObjects); // return true; // }, // OnUpdateTips = (name, id, newId) => // { // Log.Message("Fetch updated '{0}' from {1} to {2}", name, // id, newId); // return true; // } // }; // localRepo.Fetch("origin", options); //} void CloneRepo(Repository repo, string repoPath) { try { if (Directory.Exists(repoPath)) Directory.Delete(repoPath, true); } catch (Exception ex) { Log.Error("Could not delete repository: {0}", ex.ToString()); throw; } Log.Message("Cloning the repository for project '{0}...", Build.Project.Name); using (var process = new Process { StartInfo = { WorkingDirectory = Directory.GetParent(repoPath).FullName, FileName = @"git.exe", Arguments = string.Format("clone {0} {1}", repo.URL, repoPath), UseShellExecute = false, RedirectStandardError = true, CreateNoWindow = true }}) { process.Start(); process.WaitForExit(); process.Close(); } }