예제 #1
0
        void ICustomDataItem.Deserialize(ITypeSerializer handler, DataCollection data)
        {
            DataItem items = (DataItem)data.Extract("Items");

            handler.Deserialize(this, data);
            IProgressMonitor monitor = handler.SerializationContext.ProgressMonitor;

            if (monitor == null)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            if (items != null)
            {
                string baseDir = Path.GetDirectoryName(handler.SerializationContext.BaseFile);
                monitor.BeginTask(null, items.ItemData.Count);
                try {
                    foreach (DataValue item in items.ItemData)
                    {
                        string        file = Path.Combine(baseDir, item.Value);
                        WorkspaceItem it   = Services.ProjectService.ReadWorkspaceItem(monitor, file);
                        if (it != null)
                        {
                            Items.Add(it);
                        }
                        monitor.Step(1);
                    }
                } finally {
                    monitor.EndTask();
                }
            }
        }
예제 #2
0
        public override void Update(string localPath, bool recurse, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath = NormalizePath(Path.GetFullPath(localPath));
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            string output = RunMercurialRepoCommand(localPath, "commands.update(repo.ui,repo)");

            monitor.Log.WriteLine(output);
        }
예제 #3
0
        }        // CanRebase

        public override void Rebase(string mergeLocation, string localPath, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath = NormalizePath(Path.GetFullPath(localPath));
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            string output = RunMercurialRepoCommand(localPath, "commands.pull(repo.ui,repo,'{0}',update=True,rebase=True)", mergeLocation);

            monitor.Log.WriteLine(output);
            monitor.Log.WriteLine("Rebased {0} onto {1}", localPath, mergeLocation);
        }        // Rebase
예제 #4
0
        public override void Push(string pushLocation, string localPath, bool remember, bool overwrite, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath = NormalizePath(localPath);
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            string output = RunMercurialRepoCommand(localPath, "commands.push(repo.ui,repo,dest='{0}',force={1})", pushLocation, overwrite? "True": "False");

            monitor.Log.WriteLine(output);
            monitor.Log.WriteLine("Pushed to {0}", pushLocation);
        }
예제 #5
0
        public override void Pull(string pullLocation, string localPath, bool remember, bool overwrite, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath = NormalizePath(localPath);
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            string output = RunMercurialRepoCommand(localPath, "commands.pull(repo.ui,repo,'{0}',update=True)", pullLocation);

            monitor.Log.WriteLine(output);
            monitor.Log.WriteLine("Pulled to {0}", localPath);
        }
예제 #6
0
        public override void Branch(string branchLocation, string localPath, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath = NormalizePath(localPath);
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }

            string output = RunMercurialCommand("commands.clone(myui,'{0}','{1}')", branchLocation, localPath);

            monitor.Log.WriteLine(output);
            monitor.Log.WriteLine("Cloned to {0}", localPath);
        }
예제 #7
0
        }        // GetAnnotations

        public override void Export(string localPath, string exportPath, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath  = NormalizePath(Path.GetFullPath(localPath));
            exportPath = NormalizePath(exportPath);
            if (!IsValidExportPath(exportPath))
            {
                throw new MercurialClientException(string.Format("Invalid export path: {0}", exportPath));
            }
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            string output = RunMercurialRepoCommand(localPath, "commands.archive(repo.ui,repo,'{0}',prefix='')", exportPath);

            monitor.Log.WriteLine(output);
            monitor.Log.WriteLine("Exported to {0}", exportPath);
        }        // Export
        public override void Push(string pushLocation, string localPath, bool remember, bool overwrite, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath = NormalizePath(Path.GetFullPath(localPath));
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            string output = string.Empty;
            StringBuilder command = new StringBuilder();
            command.AppendFormat("mycmd = builtins.cmd_push()\n");
            command.AppendFormat("mycmd.outf = StringIO.StringIO()\n");
            command.AppendFormat("try:\n");
            command.AppendFormat(string.Format("  mycmd.run(location=ur'{0}',remember={2},overwrite={3},directory=ur'{1}',strict=False)\n",
                    pushLocation, localPath, remember ? "True" : "False", overwrite ? "True" : "False"));
            command.AppendFormat("  output = mycmd.outf.getvalue()\n");
            command.AppendFormat("finally:\n");
            command.AppendFormat("  mycmd.outf.close()\n");

            lock (lockme)
            {
                output = StringFromPython(run(new List<string>{ "output" }, command.ToString())[0]);
            }

            monitor.Log.WriteLine(output);
            monitor.Log.WriteLine("Pushed to {0}", pushLocation);
        }
        // List
        public override void Merge(string mergeLocation, string localPath, bool remember, bool overwrite, BazaarRevision start, BazaarRevision end, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath = NormalizePath(Path.GetFullPath(localPath));
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }

            string revisionSpec = string.Empty;
            string output = string.Empty;

            if (null != start && BazaarRevision.FIRST != start.Rev && BazaarRevision.NONE != start.Rev)
            {
                string endrev = "-1";
                if (null != end && BazaarRevision.HEAD != end.Rev && BazaarRevision.NONE != end.Rev)
                {
                    endrev = end.Rev;
                }
                revisionSpec = string.Format("'{0}..{1}'", start.Rev, endrev);
            }
            else if (null != end && BazaarRevision.HEAD != end.Rev && BazaarRevision.NONE != end.Rev)
            {
                revisionSpec = string.Format("'1..{0}'", end.Rev);
            }// build revisionspec string

            StringBuilder command = new StringBuilder();
            command.AppendFormat("mycmd = builtins.cmd_merge()\n");
            command.AppendFormat("mycmd.outf = StringIO.StringIO()\n");
            command.AppendFormat("try:\n");
            command.AppendFormat(string.Format("  mycmd.run(location=ur'{0}',revision={1},force={4},remember={2},directory=ur'{3}')\n",
                    mergeLocation, string.IsNullOrEmpty(revisionSpec) ? "None" : revisionSpec,
                    remember ? "True" : "False", localPath, overwrite ? "True" : "False"));

            command.AppendFormat("  output = mycmd.outf.getvalue()\n");
            command.AppendFormat("finally:\n");
            command.AppendFormat("  mycmd.outf.close()\n");

            lock (lockme)
            {
                output = StringFromPython(run(new List<string>{ "output" }, command.ToString())[0]);
            }

            monitor.Log.WriteLine(output);

            monitor.Log.WriteLine("Merged to {0}", localPath);
        }
        // GetAnnotations
        public override void Export(string localPath, string exportPath, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath = NormalizePath(localPath);
            exportPath = NormalizePath(exportPath);
            if (!IsValidExportPath(exportPath))
            {
                throw new BazaarClientException(string.Format("Invalid export path: {0}", exportPath));
            }

            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            string output = string.Empty;
            StringBuilder command = new StringBuilder();
            command.AppendFormat("mycmd = builtins.cmd_export()\n");
            command.AppendFormat("mycmd.outf = StringIO.StringIO()\n");
            command.AppendFormat("try:\n");
            command.AppendFormat(string.Format("  mycmd.run(dest=ur'{0}',branch_or_subdir=ur'{1}')\n", exportPath, localPath));
            command.AppendFormat("  output = mycmd.outf.getvalue()\n");
            command.AppendFormat("finally:\n");
            command.AppendFormat("  mycmd.outf.close()\n");

            lock (lockme)
            {
                output = StringFromPython(run(new List<string>{ "output" }, command.ToString())[0]);
            }

            monitor.Log.WriteLine(output);
            monitor.Log.WriteLine("Exported to {0}", exportPath);
        }
        public override void Checkout(string url, string targetLocalPath, BazaarRevision rev, bool recurse, MonoDevelop.Core.IProgressMonitor monitor)
        {
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            string pyrev = "None";
            string realUrl = url;
            StringBuilder command = new StringBuilder();

            Match match = UrlRegex.Match(url);
            if (match.Success)
            {
                realUrl = UrlRegex.Replace(url, @"${protocol}://${host}$3${path}");
            }

            lock (lockme)
            {
                run(null, "b = branch.Branch.open_containing(url=ur\"{0}\")[0]\n", realUrl);
            }

            monitor.Log.WriteLine("Opened {0}", url);

            if (null != rev && BazaarRevision.HEAD != rev.Rev && BazaarRevision.NONE != rev.Rev)
            {
                command.AppendFormat("revspec = revisionspec.RevisionSpec.from_string(spec=\"{0}\")\n", rev.Rev);
                pyrev = "revspec.in_history(branch=b).rev_id";
            }
            command.AppendFormat("b.create_checkout(to_location=ur\"{1}\", revision_id={0})\n", pyrev, NormalizePath(targetLocalPath));

            lock (lockme)
            {
                run(null, command.ToString());
            }
            monitor.Log.WriteLine("Checkout to {0} completed", targetLocalPath);
        }
        public override void Branch(string branchLocation, string localPath, MonoDevelop.Core.IProgressMonitor monitor)
        {
            localPath = NormalizePath(Path.GetFullPath(localPath));
            if (null == monitor)
            {
                monitor = new MonoDevelop.Core.ProgressMonitoring.NullProgressMonitor();
            }
            string output = string.Empty;
            StringBuilder command = new StringBuilder();
            command.AppendFormat("mycmd = builtins.cmd_branch()\n");
            command.AppendFormat("mycmd.outf = StringIO.StringIO()\n");
            command.AppendFormat("try:\n");
            command.AppendFormat(string.Format("  mycmd.run(from_location=ur'{0}',to_location=ur'{1}')\n", branchLocation, localPath));
            command.AppendFormat("  output = mycmd.outf.getvalue()\n");
            command.AppendFormat("finally:\n");
            command.AppendFormat("  mycmd.outf.close()\n");

            lock (lockme)
            {
                output = StringFromPython(run(new List<string>{ "output" }, command.ToString())[0]);
            }

            monitor.Log.WriteLine(output);
            monitor.Log.WriteLine("Branched to {0}", localPath);
        }