SVNIntegration()
        {
            EditorApplication.update += EditorUpdate;
            asyncSvnStatusOperation   = new AsyncCommandLineOperation(new CommandLine("svn", "status --non-interactive --xml -v -u", Application.dataPath), (source, e) =>
            {
                svnStatusDatabase.Clear();
                HandleSVNStatusUpdate(e.output, true);
            });

            syncSvnStatusOperation = new SyncCommandLineOperation(new CommandLine("svn", "status --non-interactive --xml -v -u", Application.dataPath), (source, e) =>
            {
                svnStatusDatabase.Clear();
                HandleSVNStatusUpdate(e.output, false);
            });

            asyncLocalSvnStatusOperation = new AsyncCommandLineOperation(new CommandLine("svn", "status --non-interactive --xml", Application.dataPath), (source, e) =>
            {
                HandleSVNStatusUpdate(e.output, true);
            });

            syncLocalSvnStatusOperation = new SyncCommandLineOperation(new CommandLine("svn", "status --non-interactive --xml", Application.dataPath), (source, e) =>
            {
                HandleSVNStatusUpdate(e.output, false);
            });
        }
        public static CommandLineOperation CreateSVNAction(string action, bool asynchronous, IEnumerable <string> assets, CommandLine.ExecutionFinishedHandler finishedHandler)
        {
            string workingDirectory = Application.dataPath + "\\..\\";
            string arguments        = action;

            if (assets.Count() > 0)
            {
                arguments += " \"" + assets.Aggregate((i, j) => i + "\" \"" + j) + "\"";
            }
            CommandLineOperation operation;

            if (asynchronous)
            {
                operation = new AsyncCommandLineOperation(new CommandLine("svn", "--non-interactive " + arguments, workingDirectory), finishedHandler);
            }
            else
            {
                operation = new SyncCommandLineOperation(new CommandLine("svn", "--non-interactive " + arguments, workingDirectory), finishedHandler);
            }

            return(operation);
        }