コード例 #1
0
        private void Checkin(object sender, EventArgs e)
        {
            foreach (Change item in itemsToCommit.Items)
            {
                if (item.ChangeType == ChangeType.Added)
                {
                    CmdRunner.ExecuteCommandWithStringResult(
                        string.Format("cm add {0}", item.Name),
                        SampleHelper.GetWorkspace());
                }

                if (item.ChangeType == ChangeType.Deleted)
                {
                    CmdRunner.ExecuteCommandWithStringResult(
                        string.Format("cm rm {0}", item.Name),
                        SampleHelper.GetWorkspace());
                }
            }

            string result = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm ci -c=\"{0}\"", textBox1.Text),
                SampleHelper.GetWorkspace());

            MessageBox.Show(result);

            textBox1.Text = string.Empty;
            Update(sender, e);
        }
コード例 #2
0
        private void RefreshChangesetList(object sender, EventArgs e)
        {
            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                "cm find changeset --nototal --format=\"{changesetid}#{date}#{comment}\"",
                SampleHelper.GetWorkspace());

            ArrayList results = SampleHelper.GetListResults(cmdResult, true);

            changesetList.Items.Clear();
            foreach (string item in results)
            {
                Changeset cset = new Changeset(item);
                cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                    string.Format("cm log {0} --csFormat=\"{{items}}\" --itemFormat=\"{{path}}#{{fullstatus}}#{{newline}}\"", cset.Id),
                    SampleHelper.GetWorkspace());

                results = SampleHelper.GetListResults(cmdResult, true);
                foreach (string changedItem in results)
                {
                    cset.Changes.Add(new Item(changedItem));
                }

                changesetList.Items.Add(cset);
            }
        }
コード例 #3
0
        private static void FillBranchesWithRandomItems(int numBranches,
                                                        string repositorySpec,
                                                        bool includeThreadInfo)
        {
            int    minRandomItems = 2;
            int    maxRandomItems = 6;
            string threadInfo     = includeThreadInfo
                ? string.Format("THREAD: {0} ", Thread.CurrentThread.ManagedThreadId)
                : string.Empty;

            Random r = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < numBranches; i++)
            {
                string branch = string.Format("br:/main/task{0}", i);
                CmdRunner.ExecuteCommandWithStringResult(
                    string.Format("cm stb {0}@{1}", branch, repositorySpec),
                    GetWorkspace());

                int items = r.Next(minRandomItems, maxRandomItems);
                Console.WriteLine("{0}Adding {1} random items to {2}",
                                  threadInfo, items, branch);

                for (int j = 0; j < items; j++)
                {
                    string filename = AddRandomItem();
                    CheckinItem(filename, "Added " + filename);
                }
            }
        }
コード例 #4
0
        static void Main(string[] args)
        {
            string server           = "localhost:8084";
            string repository       = SampleHelper.GenerateRepositoryWithData(server);
            string secondRepository = SampleHelper.GenerateEmptyRepository(server);

            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm find branch on repositories '{0}' --format={{id}}#{{name}} --nototal", repository),
                Environment.CurrentDirectory);

            ArrayList     results  = SampleHelper.GetListResults(cmdResult, true);
            List <Branch> branches = GetBranchListFromCmdResult(results);

            List <ReplicationResult> resultList = new List <ReplicationResult>();

            foreach (Branch branch in branches)
            {
                resultList.Add(Replicate(branch, repository, secondRepository));
            }

            Console.WriteLine(Environment.NewLine + "Replication complete");
            PrintReplicationResult(resultList);

            Console.ReadLine();

            SampleHelper.RemoveSampleRepository(repository);
            SampleHelper.RemoveSampleRepository(secondRepository);
        }
コード例 #5
0
        public string GetLatestBranches()
        {
            string command   = string.Format(FindBranchesCommand, Repository, DateFormat);
            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(command, Environment.CurrentDirectory, false);

            return(string.Format("Latest branches on repository `{0}`: \r\n {1}", Repository, cmdResult));
        }
コード例 #6
0
 private static void GenerateBranches(string repServer, int numBranches)
 {
     for (int i = 0; i < numBranches; i++)
     {
         string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
             string.Format("cm mkbranch br:/main/task{0}", i),
             GetWorkspace());
     }
 }
コード例 #7
0
        internal IList FilterBranches(IList branches, string initialdate)
        {
            string cmd = mCmExec +
                         " find \"changeset where date >= '" + initialdate +
                         "'\" --format={branch} --nototal on repository '" +
                         mSrcServer + "'";

            string cmdres = CmdRunner.ExecuteCommandWithStringResult(cmd, mWkpath);

            StringReader reader = new StringReader(cmdres);

            ArrayList filtered = new ArrayList();

            // there will be many csets on some branches, only take on
            // branch for each

            string line;

            while ((line = reader.ReadLine()) != null)
            {
                if (line.Trim() == string.Empty)
                {
                    continue;
                }

                line = line.Trim();

                if (!filtered.Contains(line))
                {
                    filtered.Add(line);
                }
            }

            filtered.Sort();

            ArrayList result = new ArrayList();

            foreach (string branchname in filtered)
            {
                // find it on the original list... (it has the id list)
                foreach (Branch br in branches)
                {
                    if (br.Name == branchname)
                    {
                        if (!result.Contains(br))
                        {
                            result.Add(br);
                        }
                        break;
                    }
                }
            }

            result.Sort(new BranchComparer());

            return(result);
        }
コード例 #8
0
        public static void CheckinItem(string fileName, string comment)
        {
            string addResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm add {0}", fileName),
                GetWorkspace());

            string commitResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm ci -c=\"{0}\"", comment),
                GetWorkspace());
        }
コード例 #9
0
        List <Branch> GetBranchesFromRepo(string repository)
        {
            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm find branch on repositories '{0}' --format={{id}}#{{name}} --nototal", repository),
                Environment.CurrentDirectory);

            ArrayList results = SampleHelper.GetListResults(cmdResult, true);

            return(GetBranchListFromCmdResult(results));
        }
コード例 #10
0
        private static void PrintCmVersion()
        {
            string cmVersion =
                CmdRunner.ExecuteCommandWithStringResult(
                    "cm version",
                    Environment.CurrentDirectory);

            Console.WriteLine(string.Format("The cm version is: {0}", cmVersion));
            Console.WriteLine();
        }
コード例 #11
0
        private static void PrintCmBranches()
        {
            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                "cm find branches on repository 'default' --nototal",
                Environment.CurrentDirectory);

            Console.WriteLine("Branches on default repository:");
            PrintResult(cmdResult);
            Console.WriteLine();
        }
コード例 #12
0
        private static void PrintCmRevisionsOnMainBranch()
        {
            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                "cm find revision where branch='main' " +
                " --format=\"{item}#{branch}#{changeset}\" on repository 'default' --nototal",
                Environment.CurrentDirectory);

            Console.WriteLine("Revisions on main branch:");
            PrintResult(cmdResult);
            Console.WriteLine();
        }
コード例 #13
0
        private static ReplicationResult Replicate(Branch branch, string repository,
                                                   string secondRepository)
        {
            Console.WriteLine("Replicating branch {0}", branch.Name);

            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm replicate \"br:{0}@{1}\" \"rep:{2}\"",
                              branch.Name, repository, secondRepository),
                Environment.CurrentDirectory);

            return(new ReplicationResult(SampleHelper.GetListResults(cmdResult, true), branch));
        }
コード例 #14
0
        private static void CreateWorkspaceAndSwitchToMain(string repositorySpec,
                                                           string repServer)
        {
            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm mkwk {0} .", repositorySpec),
                GetWorkspace());

            Console.WriteLine(string.Format("Workspace created at {0}",
                                            GetWorkspace()));

            cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm stb br:/main@{0}@{1}", repositorySpec,
                              repServer), GetWorkspace());
        }
コード例 #15
0
        public static void RemoveSampleRepository(string repository)
        {
            Console.WriteLine("Removing sample repository {0}. Please confirm: [y/N]", repository);
            string line = Console.ReadLine();

            if (line != "y")
            {
                return;
            }

            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm rmrep {0}", repository),
                Environment.CurrentDirectory);
        }
コード例 #16
0
ファイル: Program.cs プロジェクト: mig42/bamboomonitor
        static List <string> GetResolvedBranches(Config config)
        {
            string cmdOutput = CmdRunner.ExecuteCommandWithStringResult(
                string.Format(
                    "cm find \"branch where (name like '{0}%' or name like '{1}%') "
                    + "and attribute='status' and attrvalue='RESOLVED' on repository '{2}'\" "
                    + "--format={{name}} --nototal ",
                    config.PlasticBranchPrefix,
                    config.PlasticBranchPrefix.ToUpperInvariant(),
                    config.PlasticRepo),
                Environment.CurrentDirectory);

            return(new List <string>(cmdOutput.Split(
                                         new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)));
        }
コード例 #17
0
        private List <Change> GetChanges()
        {
            List <Change> changes   = new List <Change>();
            string        cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm status --all --machinereadable"),
                SampleHelper.GetWorkspace());

            ArrayList results = SampleHelper.GetListResults(cmdResult, true);

            for (int i = 1; i < results.Count; i++)
            {
                changes.Add(new Change((string)results[i]));
            }

            return(changes);
        }
コード例 #18
0
        private void ReloadSavedGames()
        {
            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm find changeset on repositories '{0}' --format={{comment}} --nototal",
                              textBox1.Text),
                Environment.CurrentDirectory);

            ArrayList results = SampleHelper.GetListResults(cmdResult, true);

            listBox1.Items.Clear();
            results.RemoveAt(0);
            foreach (string item in results)
            {
                listBox1.Items.Add(new SavedGame(item));
            }
        }
コード例 #19
0
        private static void SomeCommandsInShell()
        {
            string repos = CmdRunner.ExecuteCommandWithStringResult(
                "cm lrep",
                Environment.CurrentDirectory, true);

            string output;
            string error;

            CmdRunner.ExecuteCommandWithResult(
                "cm rmwk .",
                Environment.CurrentDirectory, out output, out error, true);

            Console.WriteLine("The Plastic server has the following repositories: ");
            PrintResult(repos);
            Console.WriteLine(String.Format("The workspace was deleted. Output: {0}. Error: {1} ",
                                            output, error));
        }
コード例 #20
0
        private bool HasChangesInBranch(Branch branch)
        {
            string srcResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm find changeset where branch = 'br:{0}' on repositories '{1}' --format={{id}} --nototal",
                              branch.Name, mSampleRep),
                Environment.CurrentDirectory);

            ArrayList srcResults = SampleHelper.GetListResults(srcResult, true);

            string dstResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm find changeset where branch = 'br:{0}' on repositories '{1}' --format={{id}} --nototal",
                              branch.Name, mSecondRep),
                Environment.CurrentDirectory);

            ArrayList dstResults = SampleHelper.GetListResults(dstResult, true);

            return(srcResults.Count != dstResults.Count);
        }
コード例 #21
0
        static void Main(string[] args)
        {
            string server    = "localhost:8084";
            string sampleRep = SampleHelper.GenerateRepositoryWithData(server);

            string cmVersion = CmdRunner.ExecuteCommandWithStringResult("cm version",
                                                                        Environment.CurrentDirectory);

            Console.WriteLine(string.Format("The cm version is: {0}", cmVersion));

            string repoList = CmdRunner.ExecuteCommandWithStringResult(string.Format("cm lrep {0}", server),
                                                                       Environment.CurrentDirectory);

            Console.WriteLine(string.Format("{0}", repoList));

            Console.ReadLine();

            SampleHelper.RemoveSampleRepository(server);
        }
コード例 #22
0
        private void CheckinUpdates(object sender, EventArgs e)
        {
            List <Change> mChanges = GetChanges();

            if (mChanges.Count == 0)
            {
                return;
            }

            StringBuilder builder = new StringBuilder();

            foreach (var item in mChanges)
            {
                builder.Append(string.Format("{0} {1}\n",
                                             item.ChangeType, item.Name));
            }

            foreach (var item in mChanges)
            {
                if (item.ChangeType == ChangeType.Added)
                {
                    CmdRunner.ExecuteCommandWithStringResult(
                        string.Format("cm add {0}", item.Name),
                        SampleHelper.GetWorkspace());
                }

                if (item.ChangeType == ChangeType.Deleted)
                {
                    CmdRunner.ExecuteCommandWithStringResult(
                        string.Format("cm rm {0}", item.Name),
                        SampleHelper.GetWorkspace());
                }
            }

            CmdRunner.ExecuteCommandWithStringResult("cm ci ",
                                                     SampleHelper.GetWorkspace());

            mTrayIcon.ShowBalloonTip(3, string.Format("{0} new changes saved", mChanges.Count),
                                     string.Format("The following changes have been checked in.\n{0}",
                                                   builder.ToString()),
                                     ToolTipIcon.Info);
        }
コード例 #23
0
        public static string GenerateEmptyRepository(string repServer)
        {
            string repositorySpec = repositoryName
                                    + Guid.NewGuid().ToString().Substring(0, 7);

            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm mkrep {0}@{1}", repositorySpec, repServer),
                Environment.CurrentDirectory);

            if (cmdResult.IndexOf("Error") == 0)
            {
                throw new Exception(cmdResult);
            }

            Console.WriteLine("Created repository: {0}", repositorySpec);

            CreateWorkspaceAndSwitchToMain(repositorySpec, repServer);

            return(repositorySpec);
        }
コード例 #24
0
        private static void EditRandomItem(Random random)
        {
            string[] files = Directory.GetFiles(GetWorkspace());
            if (files.Length == 0)
            {
                return;
            }

            int    index     = random.Next(files.Length);
            string addResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm co {0}", files[index]),
                GetWorkspace());

            using (StreamWriter sw = new StreamWriter(files[index]))
            {
                sw.WriteLine("Testing " + Guid.NewGuid());
            }

            Console.WriteLine("Edited {0}", files[index]);
        }
コード例 #25
0
        internal IList GetBranches()
        {
            ArrayList result = new ArrayList();

            try
            {
                string cmdres = CmdRunner.ExecuteCommandWithStringResult(
                    mCmExec + " find branch --format={name}#{id} --nototal " +
                    string.Format("on repository '{0}'", mSrcServer), mWkpath);

                StringReader reader = new StringReader(cmdres);

                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    if (line.Trim() == string.Empty)
                    {
                        continue;
                    }

                    // output will be like /main/SCM5754#2625
                    string[] values = line.Split('#');

                    Branch br = new Branch(values[0], values[1]);
                    result.Add(br);
                }

                result.Sort(new BranchComparer());
            }
            catch (Exception e)
            {
                Console.WriteLine("Error listing branches: " + e.Message);
                mLog.ErrorFormat("Error listing branches:{0} at {1}{2}",
                                 e.Message, Environment.NewLine, e.StackTrace);
                return(null);
            }

            return(result);
        }
コード例 #26
0
        static void Main(string[] args)
        {
            string server     = "localhost:8084";
            string repository = SampleHelper.GenerateRepositoryWithData(server);

            Console.WriteLine("Created repository: {0}", repository);

            string cmdResult = CmdRunner.ExecuteCommandWithStringResult(
                string.Format("cm find branch on repositories '{0}' --format={{id}}#{{name}} --nototal", repository),
                Environment.CurrentDirectory);

            ArrayList     results  = SampleHelper.GetListResults(cmdResult, true);
            List <Branch> branches = GetBranchListFromCmdResult(results);

            foreach (Branch branch in branches)
            {
                Console.WriteLine(branch);
            }

            Console.ReadLine();

            SampleHelper.RemoveSampleRepository(repository);
        }
コード例 #27
0
 private static string ExecuteCommandForOutput(string command)
 {
     return(CmdRunner.ExecuteCommandWithStringResult(command, WorkingDirectory));
 }