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


C# SparkleGit.StartAndWaitForExit方法代码示例

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


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

示例1: SparkleRepo

        public SparkleRepo(string path, SparkleConfig config)
            : base(path, config)
        {
            // TODO: Set git locale to en-US

            SparkleGit git = new SparkleGit (LocalPath, "config core.ignorecase false");
            git.StartAndWaitForExit ();

            // Check if we should use git-bin
            git = new SparkleGit (LocalPath, "config --get filter.bin.clean");
            git.StartAndWaitForExit ();

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

            if (this.use_git_bin) {
                git = new SparkleGit (LocalPath, "config git-bin.sshUrl \"" + RemoteUrl + "\"");
                git.StartAndWaitForExit ();

                git = new SparkleGit (LocalPath, "config git-bin.sshPrivateKeyFile \"" + config.User.PrivateKeyFilePath + "\"");
                git.StartAndWaitForExit ();
            }

            git = new SparkleGit (LocalPath, "config remote.origin.url \"" + RemoteUrl + "\"");
            git.StartAndWaitForExit ();

            string password_file_path = Path.Combine (LocalPath, ".git", "password");

            if (File.Exists (password_file_path))
                this.is_encrypted = true;
        }
开发者ID:cnzzr,项目名称:SparkleShare,代码行数:30,代码来源:SparkleRepoGit.cs

示例2: SparkleRepo

        public SparkleRepo(string path, SparkleConfig config)
            : base(path, config)
        {
            // TODO: Set git locale to en-US

            // Check if we should use git-bin
            SparkleGit git = new SparkleGit (LocalPath, "config --get filter.bin.clean");
            git.StartAndWaitForExit ();

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

            git = new SparkleGit (LocalPath, "config remote.origin.url \"" + RemoteUrl + "\"");
            git.StartAndWaitForExit ();

            string rebase_apply_path = new string [] { LocalPath, ".git", "rebase-apply" }.Combine ();

            if (Directory.Exists (rebase_apply_path)) {
                git = new SparkleGit (LocalPath, "rebase --abort");
                git.StartAndWaitForExit ();
            }

            string password_file_path = Path.Combine (LocalPath, ".git", "password");

            if (File.Exists (password_file_path))
                this.is_encrypted = true;
        }
开发者ID:gbraad,项目名称:SparkleShare,代码行数:26,代码来源:SparkleRepoGit.cs

示例3: 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

示例4: SparkleRepo

        public SparkleRepo(string path, SparkleConfig config)
            : base(path, config)
        {
            // TODO: Set git locale to en-US

            SparkleGit git = new SparkleGit (LocalPath, "config --get filter.bin.clean");
            git.StartAndWaitForExit ();

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

            git = new SparkleGit (LocalPath, "config remote.origin.url \"" + RemoteUrl + "\"");
            git.StartAndWaitForExit ();

            string rebase_apply_path = new string [] { LocalPath, ".git", "rebase-apply" }.Combine ();

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

示例5: SparkleRepo

        public SparkleRepo(string path, SparkleConfig config)
            : base(path, config)
        {
            SparkleGit git = new SparkleGit (LocalPath, "config core.ignorecase false");
            git.StartAndWaitForExit ();

            // Check if we should use git-bin
            git = new SparkleGit (LocalPath, "config --get filter.bin.clean");
            git.StartAndWaitForExit ();

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

            if (this.use_git_bin)
                ConfigureGitBin ();

            git = new SparkleGit (LocalPath, "config remote.origin.url \"" + RemoteUrl + "\"");
            git.StartAndWaitForExit ();

            string password_file_path = Path.Combine (LocalPath, ".git", "password");

            if (File.Exists (password_file_path))
                this.is_encrypted = true;
        }
开发者ID:richard-chivers,项目名称:SparkleShare,代码行数:23,代码来源:SparkleRepoGit.cs

示例6: RestoreFile

        public override void RestoreFile(string path, string revision, string target_file_path)
        {
            if (path == null)
                throw new ArgumentNullException ("path");

            if (revision == null)
                throw new ArgumentNullException ("revision");

            SparkleLogger.LogInfo ("Git", Name + " | Restoring \"" + path + "\" (revision " + revision + ")");

            // git-show doesn't decrypt objects, so we can't use it to retrieve
            // files from the index. This is a suboptimal workaround but it does the job
            if (this.is_encrypted) {
                // Restore the older file...
                SparkleGit git = new SparkleGit (LocalPath, "checkout " + revision + " \"" + path + "\"");
                git.StartAndWaitForExit ();

                string local_file_path = Path.Combine (LocalPath, path);

                // ...move it...
                try {
                    File.Move (local_file_path, target_file_path);

                } catch {
                    SparkleLogger.LogInfo ("Git",
                        Name + " | Could not move \"" + local_file_path + "\" to \"" + target_file_path + "\"");
                }

                // ...and restore the most recent revision
                git = new SparkleGit (LocalPath, "checkout " + CurrentRevision + " \"" + path + "\"");
                git.StartAndWaitForExit ();

            // The correct way
            } else {
                path = path.Replace ("\"", "\\\"");

                SparkleGit git = new SparkleGit (LocalPath, "show " + revision + ":\"" + path + "\"");
                git.Start ();

                FileStream stream = File.OpenWrite (target_file_path);
                git.StandardOutput.BaseStream.CopyTo (stream);
                stream.Close ();

                git.WaitForExit ();
            }

            if (target_file_path.StartsWith (LocalPath))
                new Thread (() => OnFileActivity (null)).Start ();
        }
开发者ID:cnzzr,项目名称:SparkleShare,代码行数:49,代码来源:SparkleRepoGit.cs

示例7: ConfigureGitBin

        private void ConfigureGitBin()
        {
            SparkleGit git = new SparkleGit (LocalPath, "config filter.bin.clean \"git bin clean %f\"");
            git.StartAndWaitForExit ();

            git = new SparkleGit (LocalPath, "config filter.bin.smudge \"git bin smudge\"");
            git.StartAndWaitForExit ();

            git = new SparkleGit (LocalPath, "config git-bin.sftpUrl \"" + RemoteUrl + "\"");
            git.StartAndWaitForExit ();

            git = new SparkleGit (LocalPath, "config git-bin.sftpPrivateKeyFile \"" + base.local_config.User.PrivateKeyFilePath + "\"");
            git.StartAndWaitForExit ();
        }
开发者ID:Wavetable,项目名称:SparkleShare,代码行数:14,代码来源:SparkleRepoGit.cs

示例8: 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.StartAndWaitForExit ();

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

                while (HasLocalChanges) {
                    try {
                        ResolveConflict ();

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

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

示例9: Add

        // Stages the made changes
        private void Add()
        {
            SparkleGit git = new SparkleGit (LocalPath, "add --all");
            git.StartAndWaitForExit ();

            SparkleLogger.LogInfo ("Git", Name + " | Changes staged");
        }
开发者ID:Giggs,项目名称:SparkleShare,代码行数:8,代码来源:SparkleRepoGit.cs

示例10: RevertFile

        public override void RevertFile(string path, string revision)
        {
            if (path == null)
                throw new ArgumentNullException ("path");

            if (revision == null)
                throw new ArgumentNullException ("revision");

            path = path.Replace ("\\", "/");

            SparkleGit git = new SparkleGit (LocalPath, "checkout " + revision + " \"" + path + "\"");
            git.StartAndWaitForExit ();

            if (git.ExitCode == 0)
                SparkleLogger.LogInfo ("Git", Name + " | Checked out \"" + path + "\" (" + revision + ")");
             else
                SparkleLogger.LogInfo ("Git", Name + " | Failed to check out \"" + path + "\" (" + revision + ")");
        }
开发者ID:Giggs,项目名称:SparkleShare,代码行数:18,代码来源:SparkleRepoGit.cs

示例11: 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.precomposeunicode true", // Use the same Unicode form on all filesystems
                "core.safecrlf false",
                "core.excludesfile \"\"",
                "core.packedGitLimit 128m", // Some memory limiting options
                "core.packedGitWindowSize 128m",
                "pack.deltaCacheSize 128m",
                "pack.packSizeLimit 128m",
                "pack.windowMemory 128m",
                "push.default matching"
            };

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

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

示例12: ResolveConflict

        private void ResolveConflict()
        {
            // This is a list of conflict status codes that Git uses, their
            // meaning, and how SparkleShare should handle them.
            //
            // DD    unmerged, both deleted    -> Do nothing
            // AU    unmerged, added by us     -> Use server's, save ours as a timestamped copy
            // UD    unmerged, deleted by them -> Use ours
            // UA    unmerged, added by them   -> Use server's, save ours as a timestamped copy
            // DU    unmerged, deleted by us   -> Use server's
            // AA    unmerged, both added      -> Use server's, save ours as a timestamped copy
            // UU    unmerged, both modified   -> Use server's, save ours as a timestamped copy
            // ??    unmerged, new files       -> Stage the new files

            SparkleGit git_status = new SparkleGit (LocalPath, "status --porcelain");
            string output         = git_status.StartAndReadStandardOutput ();

            string [] lines = output.Split ("\n".ToCharArray ());
            bool trigger_conflict_event = false;

            foreach (string line in lines) {
                string conflicting_path = line.Substring (3);
                conflicting_path        = EnsureSpecialCharacters (conflicting_path);
                conflicting_path        = conflicting_path.Trim ("\"".ToCharArray ());

                SparkleLogger.LogInfo ("Git", Name + " | Conflict type: " + line);

                // Ignore conflicts in the .sparkleshare file and use the local version
                if (conflicting_path.EndsWith (".sparkleshare") || conflicting_path.EndsWith (".empty")) {
                    SparkleLogger.LogInfo ("Git", Name + " | Ignoring conflict in special file: " + conflicting_path);

                    // Recover local version
                    SparkleGit git_ours = new SparkleGit (LocalPath, "checkout --ours \"" + conflicting_path + "\"");
                    git_ours.StartAndWaitForExit ();

                    File.SetAttributes (Path.Combine (LocalPath, conflicting_path), FileAttributes.Hidden);

                    continue;
                }

                SparkleLogger.LogInfo ("Git", Name + " | Resolving: " + conflicting_path);

                // Both the local and server version have been modified
                if (line.StartsWith ("UU") || line.StartsWith ("AA") ||
                    line.StartsWith ("AU") || line.StartsWith ("UA")) {

                    // Recover local version
                    SparkleGit git_ours = new SparkleGit (LocalPath, "checkout --ours \"" + conflicting_path + "\"");
                    git_ours.StartAndWaitForExit ();

                    // Append a timestamp to local version.
                    // Windows doesn't allow colons in the file name, so
                    // we use "h" between the hours and minutes instead.
                    string timestamp  = DateTime.Now.ToString ("MMM d H\\hmm");
                    string our_path = Path.GetFileNameWithoutExtension (conflicting_path) +
                        " (" + base.local_config.User.Name + ", " + timestamp + ")" + Path.GetExtension (conflicting_path);

                    string abs_conflicting_path = Path.Combine (LocalPath, conflicting_path);
                    string abs_our_path         = Path.Combine (LocalPath, our_path);

                    if (File.Exists (abs_conflicting_path) && !File.Exists (abs_our_path))
                        File.Move (abs_conflicting_path, abs_our_path);

                    // Recover server version
                    SparkleGit git_theirs = new SparkleGit (LocalPath, "checkout --theirs \"" + conflicting_path + "\"");
                    git_theirs.StartAndWaitForExit ();

                    trigger_conflict_event = true;

                // The server version has been modified, but the local version was removed
                } else if (line.StartsWith ("DU")) {

                    // The modified local version is already in the checkout, so it just needs to be added.
                    // We need to specifically mention the file, so we can't reuse the Add () method
                    SparkleGit git_add = new SparkleGit (LocalPath, "add \"" + conflicting_path + "\"");
                    git_add.StartAndWaitForExit ();

                // The local version has been modified, but the server version was removed
                } else if (line.StartsWith ("UD")) {

                    // Recover server version
                    SparkleGit git_theirs = new SparkleGit (LocalPath, "checkout --theirs \"" + conflicting_path + "\"");
                    git_theirs.StartAndWaitForExit ();

                // Server and local versions were removed
                } else if (line.StartsWith ("DD")) {
                    SparkleLogger.LogInfo ("Git", Name + " | No need to resolve: " + line);

                // New local files
                } else if (line.StartsWith ("??")) {
                    SparkleLogger.LogInfo ("Git", Name + " | Found new file, no need to resolve: " + line);

                } else {
                    SparkleLogger.LogInfo ("Git", Name + " | Don't know what to do with: " + line);
                }
            }

            Add ();

            SparkleGit git = new SparkleGit (LocalPath, "commit --message \"Conflict resolution by SparkleShare\"");
//.........这里部分代码省略.........
开发者ID:richard-chivers,项目名称:SparkleShare,代码行数:101,代码来源:SparkleRepoGit.cs

示例13: Rebase

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

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

            // Temporarily change the ignorecase setting to true to avoid
            // conflicts in file names due to case changes
            SparkleGit git = new SparkleGit (LocalPath, "config core.ignorecase true");
            git.StartAndWaitForExit ();

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

            string error_output = git.StartAndReadStandardError ();

            if (git.ExitCode != 0) {
                // Stop when we can't rebase due to locked local files
                // error: cannot stat 'filename': Permission denied
                if (error_output.Contains ("error: cannot stat")) {
                    Error = ErrorStatus.LockedFiles;
                    SparkleLogger.LogInfo ("Git", Name + " | Error status changed to " + Error);

                    git = new SparkleGit (LocalPath, "rebase --abort");
                    git.StartAndWaitForExit ();

                    git = new SparkleGit (LocalPath, "config core.ignorecase false");
                    git.StartAndWaitForExit ();

                    return false;

                } else {
                    SparkleLogger.LogInfo ("Git", Name + " | Conflict detected, trying to get out...");
                    string rebase_apply_path = new string [] { LocalPath, ".git", "rebase-apply" }.Combine ();

                    while (Directory.Exists (rebase_apply_path) && HasLocalChanges) {
                        try {
                            ResolveConflict ();

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

                    SparkleLogger.LogInfo ("Git", Name + " | Conflict resolved");
                    OnConflictResolved ();
                }
            }

            git = new SparkleGit (LocalPath, "config core.ignorecase false");
            git.StartAndWaitForExit ();

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

示例14: EnableFetchedRepoCrypto

        public override void EnableFetchedRepoCrypto (string password)
        {
            // Set up the encryption filter
            SparkleGit git_config_smudge = new SparkleGit (TargetFolder,
                "config filter.encryption.smudge \"openssl enc -d -aes-256-cbc -base64 -S " + this.crypto_salt +
                " -pass file:.git/info/encryption_password\"");

            SparkleGit git_config_clean = new SparkleGit (TargetFolder,
                "config filter.encryption.clean  \"openssl enc -e -aes-256-cbc -base64 -S " + this.crypto_salt +
                " -pass file:.git/info/encryption_password\"");

            git_config_smudge.StartAndWaitForExit ();
            git_config_clean.StartAndWaitForExit ();

            // Pass all files through the encryption filter
            string git_attributes_file_path = new string [] { TargetFolder, ".git", "info", "attributes" }.Combine ();
            File.WriteAllText (git_attributes_file_path, "\n* filter=encryption");

            // Store the password
            string password_file_path = new string [] { TargetFolder, ".git", "info", "encryption_password" }.Combine ();

            if (this.crypto_password_is_hashed)
                File.WriteAllText (password_file_path, password.SHA256 (this.crypto_salt));
            else
                File.WriteAllText (password_file_path, password);
        }
开发者ID:rchicoli,项目名称:sparkleshare,代码行数:26,代码来源:SparkleFetcherGit.cs

示例15: Rebase

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

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

            // Temporarily change the ignorecase setting to true to avoid
            // conflicts in file names due to case changes
            SparkleGit git = new SparkleGit (LocalPath, "config core.ignorecase true");
            git.StartAndWaitForExit ();

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

            string error_output = git.StartAndReadStandardError ();

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

                // error: cannot stat 'filename': Permission denied
                if (SparkleBackend.Platform != PlatformID.Unix &&
                    error_output.Contains ("error: cannot stat")) {

                    // TODO
                }

                while (HasLocalChanges) {
                    try {
                        ResolveConflict ();

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

                SparkleLogger.LogInfo ("Git", Name + " | Conflict resolved");
                OnConflictResolved ();
            }

            git = new SparkleGit (LocalPath, "config core.ignorecase false");
            git.StartAndWaitForExit ();
        }
开发者ID:zubryan,项目名称:SparkleShare,代码行数:46,代码来源:SparkleRepoGit.cs


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