Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        //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();
            }
        }