当前位置: 首页>>代码示例>>C#>>正文


C# SparkleGit.Start方法代码示例

本文整理汇总了C#中SparkleGit.Start方法的典型用法代码示例。如果您正苦于以下问题:C# SparkleGit.Start方法的具体用法?C# SparkleGit.Start怎么用?C# SparkleGit.Start使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SparkleGit的用法示例。


在下文中一共展示了SparkleGit.Start方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: SparkleRepo

        public SparkleRepo(string path)
            : base(path)
        {
            SparkleGit git = new SparkleGit (LocalPath, "config --get filter.bin.clean");
            git.Start ();
            git.WaitForExit ();

            this.use_git_bin = (git.ExitCode == 0);
        }
开发者ID:neiljbrookes,项目名称:SparkleShare,代码行数:9,代码来源:SparkleRepoGit.cs

示例2: SparkleRepo

        public SparkleRepo(string path, SparkleConfig config)
            : base(path, config)
        {
            SparkleGit git = new SparkleGit (LocalPath, "config --get filter.bin.clean");
            git.Start ();
            git.WaitForExit ();

            this.use_git_bin = (git.ExitCode == 0);

            string rebase_apply_path = SparkleHelpers.CombineMore (LocalPath, ".git", "rebase-apply");

            if (Directory.Exists (rebase_apply_path)) {
                git = new SparkleGit (LocalPath, "rebase --abort");
                git.StartAndWaitForExit ();
            }
        }
开发者ID:Mullaly,项目名称:SparkleShare,代码行数:16,代码来源:SparkleRepoGit.cs

示例3: InstallConfiguration

        private void InstallConfiguration()
        {
            string [] settings = new string [] {
                "core.quotepath false", // Don't quote "unusual" characters in path names
                "core.ignorecase false", // Be case sensitive explicitly to work on Mac
                "core.filemode false", // Ignore permission changes
                "core.autocrlf false", // Don't change file line endings
                "core.precomposedunicode true", // Use the same Unicode form on all filesystems
                "core.safecrlf false",
                "core.packedGitLimit 128m", // Some memory limiting options
                "core.packedGitWindowSize 128m",
                "pack.deltaCacheSize 128m",
                "pack.packSizeLimit 128m",
                "pack.windowMemory 128m"
            };

            foreach (string setting in settings) {
                SparkleGit git_config = new SparkleGit (TargetFolder, "config " + setting);
                git_config.Start ();
                git_config.WaitForExit ();
            }

            if (this.use_git_bin)
                InstallGitBinConfiguration ();
        }
开发者ID:blakeeb,项目名称:SparkleShare,代码行数:25,代码来源:SparkleFetcherGit.cs

示例4: Rebase

        // Merges the fetched changes
        private void Rebase()
        {
            DisableWatching ();

            if (HasLocalChanges) {
                Add ();

                string commit_message = FormatCommitMessage ();
                Commit (commit_message);
            }

            SparkleGit git = new SparkleGit (LocalPath, "rebase FETCH_HEAD");
            git.StartInfo.RedirectStandardOutput = false;

            git.Start ();
            git.WaitForExit ();

            if (git.ExitCode != 0) {
                SparkleHelpers.DebugInfo ("Git", "[" + Name + "] Conflict detected. Trying to get out...");

                while (HasLocalChanges)
                    ResolveConflict ();

                SparkleHelpers.DebugInfo ("Git", "[" + Name + "] Conflict resolved.");
                OnConflictResolved ();
            }

            EnableWatching ();
        }
开发者ID:salehqt,项目名称:SparkleShare,代码行数:30,代码来源:SparkleRepoGit.cs

示例5: SparkleGit

        // Removes unneeded objects
        /*        private void CollectGarbage ()
        {
            SparkleGit git = new SparkleGit (LocalPath, "gc");
            git.Start ();
            git.WaitForExit ();

            SparkleHelpers.DebugInfo ("Git", "[" + Name + "] Garbage collected.");
        } */
        // Commits the made changes
        private void Commit(string message)
        {
            SparkleGit git = new SparkleGit (LocalPath,
                "commit -m \"" + message + "\" " +
                "--author=\"" + SparkleConfig.DefaultConfig.User.Name +
                " <" + SparkleConfig.DefaultConfig.User.Email + ">\"");

            git.Start ();
            git.StandardOutput.ReadToEnd ();
            git.WaitForExit ();

            SparkleHelpers.DebugInfo ("Commit", "[" + Name + "] " + message);
        }
开发者ID:salehqt,项目名称:SparkleShare,代码行数:23,代码来源:SparkleRepoGit.cs

示例6: SyncUp

        public override bool SyncUp()
        {
            if (HasLocalChanges) {
                Add ();

                string message = FormatCommitMessage ();
                Commit (message);
            }

            SparkleGit git = new SparkleGit (LocalPath,
                "push --progress " + // Redirects progress stats to standarderror
                Url + " master");

            git.StartInfo.RedirectStandardError = true;
            git.Start ();

            double percentage = 1.0;
            Regex progress_regex = new Regex (@"([0-9]+)%", RegexOptions.Compiled);

            while (!git.StandardError.EndOfStream) {
                string line   = git.StandardError.ReadLine ();
                Match match   = progress_regex.Match (line);
                string speed  = "";
                double number = 0.0;

                if (match.Success) {
                    number = double.Parse (match.Groups [1].Value);

                    // The pushing progress consists of two stages: the "Compressing
                    // objects" stage which we count as 20% of the total progress, and
                    // the "Writing objects" stage which we count as the last 80%
                    if (line.StartsWith ("Compressing")) {
                        // "Compressing objects" stage
                        number = (number / 100 * 20);

                    } else {
                        if (line.StartsWith ("ERROR: QUOTA EXCEEDED")) {
                            int quota_limit = int.Parse (line.Substring (21).Trim ());
                            throw new QuotaExceededException ("Quota exceeded", quota_limit);
                        }

                        // "Writing objects" stage
                        number = (number / 100 * 80 + 20);

                        if (line.Contains ("|")) {
                            speed = line.Substring (line.IndexOf ("|") + 1).Trim ();
                            speed = speed.Replace (", done.", "").Trim ();
                            speed = speed.Replace ("i", "");
                            speed = speed.Replace ("KB/s", "ᴋʙ/s");
                            speed = speed.Replace ("MB/s", "ᴍʙ/s");
                        }
                    }
                }

                if (number >= percentage) {
                    percentage = number;
                    base.OnProgressChanged (percentage, speed);
                }
            }

            git.WaitForExit ();

            UpdateSizes ();

            if (git.ExitCode == 0)
                return true;
            else
                return false;
        }
开发者ID:salehqt,项目名称:SparkleShare,代码行数:69,代码来源:SparkleRepoGit.cs

示例7: GetChangeSets

        // Returns a list of the latest change sets
        public override List<SparkleChangeSet> GetChangeSets(int count)
        {
            if (count < 1)
                count = 30;

            List <SparkleChangeSet> change_sets = new List <SparkleChangeSet> ();

            // Console.InputEncoding  = System.Text.Encoding.Unicode;
            // Console.OutputEncoding = System.Text.Encoding.Unicode;

            SparkleGit git_log = new SparkleGit (LocalPath,
                "log -" + count + " --raw -M --date=iso --format=medium --no-color");
            git_log.Start ();

            // Reading the standard output HAS to go before
            // WaitForExit, or it will hang forever on output > 4096 bytes
            string output = git_log.StandardOutput.ReadToEnd ();
            git_log.WaitForExit ();

            string [] lines       = output.Split ("\n".ToCharArray ());
            List <string> entries = new List <string> ();

            int line_number = 0;
            bool first_pass = true;
            string entry = "", last_entry = "";
            foreach (string line in lines) {
                if (line.StartsWith ("commit") && !first_pass) {
                    entries.Add (entry);
                    entry = "";
                    line_number = 0;

                } else {
                    first_pass = false;
                }

                // Only parse 250 files to prevent memory issues
                if (line_number < 254) {
                    entry += line + "\n";
                    line_number++;
                }

                last_entry = entry;
            }

            entries.Add (last_entry);

            Regex merge_regex = new Regex (@"commit ([a-z0-9]{40})\n" +
                                "Merge: .+ .+\n" +
                                "Author: (.+) <(.+)>\n" +
                                "Date:   ([0-9]{4})-([0-9]{2})-([0-9]{2}) " +
                                "([0-9]{2}):([0-9]{2}):([0-9]{2}) .([0-9]{4})\n" +
                                "*", RegexOptions.Compiled);

            Regex non_merge_regex = new Regex (@"commit ([a-z0-9]{40})\n" +
                                "Author: (.+) <(.+)>\n" +
                                "Date:   ([0-9]{4})-([0-9]{2})-([0-9]{2}) " +
                                "([0-9]{2}):([0-9]{2}):([0-9]{2}) (.[0-9]{4})\n" +
                                "*", RegexOptions.Compiled);

            foreach (string log_entry in entries) {
                Regex regex;
                bool is_merge_commit = false;

                if (log_entry.Contains ("\nMerge: ")) {
                    regex = merge_regex;
                    is_merge_commit = true;
                } else {
                    regex = non_merge_regex;
                }

                Match match = regex.Match (log_entry);

                if (match.Success) {
                    SparkleChangeSet change_set = new SparkleChangeSet ();

                    change_set.Folder    = Name;
                    change_set.Revision  = match.Groups [1].Value;
                    change_set.User      = new SparkleUser (match.Groups [2].Value, match.Groups [3].Value);
                    change_set.IsMagical = is_merge_commit;
                    change_set.Url       = Url;

                    change_set.Timestamp = new DateTime (int.Parse (match.Groups [4].Value),
                        int.Parse (match.Groups [5].Value), int.Parse (match.Groups [6].Value),
                        int.Parse (match.Groups [7].Value), int.Parse (match.Groups [8].Value),
                        int.Parse (match.Groups [9].Value));

                    string time_zone     = match.Groups [10].Value;
                    int our_offset       = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Hours;
                    int their_offset     = int.Parse (time_zone.Substring (0, 3));
                    change_set.Timestamp = change_set.Timestamp.AddHours (their_offset * -1);
                    change_set.Timestamp = change_set.Timestamp.AddHours (our_offset);

                    string [] entry_lines = log_entry.Split ("\n".ToCharArray ());

                    foreach (string entry_line in entry_lines) {
                        if (entry_line.StartsWith (":")) {

                            string change_type = entry_line [37].ToString ();
                            string file_path   = entry_line.Substring (39);
//.........这里部分代码省略.........
开发者ID:salehqt,项目名称:SparkleShare,代码行数:101,代码来源:SparkleRepoGit.cs

示例8: FormatCommitMessage

        // Creates a pretty commit message based on what has changed
        private string FormatCommitMessage()
        {
            int count      = 0;
            string message = "";

            SparkleGit git_status = new SparkleGit (LocalPath, "status --porcelain");
            git_status.Start ();

            while (!git_status.StandardOutput.EndOfStream) {
                string line = git_status.StandardOutput.ReadLine ();

                if (line.EndsWith (".empty") || line.EndsWith (".empty\""))
                    line = line.Replace (".empty", "");

                if (line.StartsWith ("R")) {
                    string path = line.Substring (3, line.IndexOf (" -> ") - 3).Trim ("\"".ToCharArray ());
                    string moved_to_path = line.Substring (line.IndexOf (" -> ") + 4).Trim ("\"".ToCharArray ());

                    message +=  "< ‘" + EnsureSpecialCharacters (path) + "’\n";
                    message +=  "> ‘" + EnsureSpecialCharacters (moved_to_path) + "’\n";

                } else {
                    if (line.StartsWith ("M")) {
                        message += "/";

                    } else if (line.StartsWith ("D")) {
                        message += "-";

                    } else {
                        message += "+";
                    }

                    string path = line.Substring (3).Trim ("\"".ToCharArray ());
                    message += " ‘" + EnsureSpecialCharacters (path) + "’\n";
                }

                count++;
                if (count == 10) {
                    message += "...\n";
                    break;
                }
            }

            git_status.StandardOutput.ReadToEnd ();
            git_status.WaitForExit ();

            return message;
        }
开发者ID:cnzzr,项目名称:SparkleShare,代码行数:49,代码来源:SparkleRepoGit.cs

示例9: SyncDown

        public override bool SyncDown()
        {
            SparkleGit git = new SparkleGit (LocalPath, "fetch --progress \"" + RemoteUrl + "\" " + this.branch);

            git.StartInfo.RedirectStandardError = true;
            git.Start ();

            double percentage = 1.0;

            while (!git.StandardError.EndOfStream) {
                string line   = git.StandardError.ReadLine ();
                Match match   = this.progress_regex.Match (line);
                double speed  = 0.0;
                double number = 0.0;

                if (match.Success) {
                    number = double.Parse (match.Groups [1].Value);

                    // The fetching progress consists of two stages: the "Compressing
                    // objects" stage which we count as 20% of the total progress, and
                    // the "Receiving objects" stage which we count as the last 80%
                    if (line.StartsWith ("Compressing")) {
                        // "Compressing objects" stage
                        number = (number / 100 * 20);

                    } else {
                        // "Writing objects" stage
                        number = (number / 100 * 80 + 20);
                        Match speed_match = this.speed_regex.Match (line);

                        if (speed_match.Success) {
                            speed = double.Parse (speed_match.Groups [1].Value) * 1024;

                            if (speed_match.Groups [2].Value.Equals ("M"))
                                speed = speed * 1024;
                        }
                    }

                } else {
                    SparkleLogger.LogInfo ("Git", Name + " | " + line);

                    if (FindError (line))
                        return false;
                }

                if (number >= percentage) {
                    percentage = number;
                    base.OnProgressChanged (percentage, speed);
                }
            }

            git.WaitForExit ();
            UpdateSizes ();

            if (git.ExitCode == 0) {
                if (Rebase ()) {
                    ClearCache ();
                    return true;

                } else {
                    return false;
                }

            } else {
                Error = ErrorStatus.HostUnreachable;
                return false;
            }
        }
开发者ID:cnzzr,项目名称:SparkleShare,代码行数:68,代码来源:SparkleRepoGit.cs

示例10: Commit

        // Commits the made changes
        private void Commit(string message)
        {
            SparkleGit git;

            if (!this.user_is_set) {
                git = new SparkleGit (LocalPath,
                    "config user.name \"" + SparkleConfig.DefaultConfig.User.Name + "\"");

                git.Start ();
                git.WaitForExit ();

                git = new SparkleGit (LocalPath,
                    "config user.email \"" + SparkleConfig.DefaultConfig.User.Email + "\"");

                git.Start ();
                git.WaitForExit ();

                this.user_is_set = true;
            }

            git = new SparkleGit (LocalPath,
                "commit --all --message=\"" + message + "\" " +
                "--author=\"" + SparkleConfig.DefaultConfig.User.Name +
                " <" + SparkleConfig.DefaultConfig.User.Email + ">\"");

            git.Start ();
            git.StandardOutput.ReadToEnd ();
            git.WaitForExit ();
        }
开发者ID:neiljbrookes,项目名称:SparkleShare,代码行数:30,代码来源:SparkleRepoGit.cs

示例11: AddWarnings

        private void AddWarnings()
        {
            SparkleGit git = new SparkleGit (SparkleConfig.DefaultConfig.TmpPath,
                "config --global core.excludesfile");

            git.Start ();

            // Reading the standard output HAS to go before
            // WaitForExit, or it will hang forever on output > 4096 bytes
            string output = git.StandardOutput.ReadToEnd ().Trim ();
            git.WaitForExit ();

            if (string.IsNullOrEmpty (output)) {
                return;

            } else {
                Warnings = new string [] {
                    string.Format ("You seem to have configured a system wide ‘gitignore’ file. " +
                                   "This may affect SparkleShare files:\n\n{0}", output)
                };
            }
        }
开发者ID:hunterua,项目名称:SparkleShare,代码行数:22,代码来源:SparkleFetcherGit.cs

示例12: RebaseContinue

 private void RebaseContinue()
 {
     SparkleGit git = new SparkleGit (LocalPath, "rebase --continue");
     git.Start ();
     git.WaitForExit ();
 }
开发者ID:fivejjs,项目名称:SparkleShare,代码行数:6,代码来源:SparkleRepoGit.cs

示例13: Complete

        public override void Complete()
        {
            if (IsFetchedRepoEmpty)
                return;

            SparkleGit git = new SparkleGit (TargetFolder, "checkout --quiet HEAD");
            git.Start ();
            git.WaitForExit ();
        }
开发者ID:halad,项目名称:SparkleShare,代码行数:9,代码来源:SparkleFetcherGit.cs

示例14: ParseStatus

        private List<SparkleChange> ParseStatus ()
        {
            List<SparkleChange> changes = new List<SparkleChange> ();

            SparkleGit git_status = new SparkleGit (LocalPath, "status --porcelain");
            git_status.Start ();
            
            while (!git_status.StandardOutput.EndOfStream) {
                string line = git_status.StandardOutput.ReadLine ();
                line        = line.Trim ();
                
                if (line.EndsWith (".empty") || line.EndsWith (".empty\""))
                    line = line.Replace (".empty", "");

                SparkleChange change;
                
                if (line.StartsWith ("R")) {
                    string path = line.Substring (3, line.IndexOf (" -> ") - 3).Trim ("\" ".ToCharArray ());
                    string moved_to_path = line.Substring (line.IndexOf (" -> ") + 4).Trim ("\" ".ToCharArray ());
                    
                    change = new SparkleChange () {
                        Type = SparkleChangeType.Moved,
                        Path = EnsureSpecialCharacters (path),
                        MovedToPath = EnsureSpecialCharacters (moved_to_path)
                    };
                    
                } else {
                    string path = line.Substring (2).Trim ("\" ".ToCharArray ());
                    change = new SparkleChange () { Path = EnsureSpecialCharacters (path) };
                    change.Type = SparkleChangeType.Added;

                    if (line.StartsWith ("M")) {
                        change.Type = SparkleChangeType.Edited;
                        
                    } else if (line.StartsWith ("D")) {
                        change.Type = SparkleChangeType.Deleted;
                    }
                }

                changes.Add (change);
            }
            
            git_status.StandardOutput.ReadToEnd ();
            git_status.WaitForExit ();

            return changes;
        }
开发者ID:rchicoli,项目名称:sparkleshare,代码行数:47,代码来源:SparkleRepoGit.cs

示例15: Rebase

        // Merges the fetched changes
        private void Rebase()
        {
            if (HasLocalChanges) {
                Add ();

                string commit_message = FormatCommitMessage ();
                Commit (commit_message);
            }

            SparkleGit git = new SparkleGit (LocalPath, "rebase FETCH_HEAD");
            git.StartInfo.RedirectStandardOutput = false;
            git.Start ();
            git.WaitForExit ();

            if (git.ExitCode != 0) {
                SparkleHelpers.DebugInfo ("Git", Name + " | Conflict detected, trying to get out...");

                while (HasLocalChanges) {
                    try {
                        ResolveConflict ();

                    } catch (IOException e) {
                        SparkleHelpers.DebugInfo ("Git",
                            Name + " | Failed to resolve conflict, trying again... (" + e.Message + ")");
                    }
                }

                SparkleHelpers.DebugInfo ("Git", Name + " | Conflict resolved");
                OnConflictResolved ();
            }
        }
开发者ID:neiljbrookes,项目名称:SparkleShare,代码行数:32,代码来源:SparkleRepoGit.cs


注:本文中的SparkleGit.Start方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。