예제 #1
0
        /// <summary>
        /// Sets up everything necessary for a call out to the ChorusMerge executable
        /// </summary>
        /// <param name="targetHead"></param>
        /// <param name="sourceHead"></param>
        private void PrepareForMergeAttempt(Revision targetHead, Revision sourceHead)
        {
            //this is for posterity, on other people's machines, so use the hashes instead of local numbers
            MergeSituation.PushRevisionsToEnvironmentVariables(targetHead.UserId, targetHead.Number.Hash,
                                                               sourceHead.UserId, sourceHead.Number.Hash);

            MergeOrder.PushToEnvironmentVariables(_localRepositoryPath);
            _progress.WriteMessage("Merging {0} and {1}...", targetHead.UserId, sourceHead.UserId);
            _progress.WriteVerbose("   Revisions {0}:{1} with {2}:{3}...", targetHead.Number.LocalRevisionNumber, targetHead.Number.Hash,
                                   sourceHead.Number.LocalRevisionNumber, sourceHead.Number.Hash);
            RemoveMergeObstacles(targetHead, sourceHead);
        }
예제 #2
0
 private int DoMerge(GroupOfConflictingLiftFiles group)
 {
     MergeSituation.PushRevisionsToEnvironmentVariables("bob", "-123", "sally", "-456");
     MergeOrder.PushToEnvironmentVariables(group.Folder.Path);
     // Change error logging to standard out so that tests which simulate errors don't fail the build
     Program.ErrorWriter = Console.Out;
     try
     {
         return(Program.Main(new[] { group.BobFile.Path, group.AncestorFile.Path, group.SallyFile.Path }));
     }
     finally
     {
         Program.ErrorWriter = Console.Error;
     }
 }
예제 #3
0
        public void Main_Utf8FilePaths_FileNamesOk()
        {
            using (var e = new TemporaryFolder("ChorusMergeTest"))
                using (var p = new TemporaryFolder(e, "ไก่ projéct"))
                {
                    var filePath1 = Path.Combine(p.Path, "aaa.chorusTest");
                    File.WriteAllText(filePath1, @"aaa");
                    var filePath2 = Path.Combine(e.Path, "aaa.chorusTest");
                    File.WriteAllText(filePath2, @"aaa");
                    var filePath3 = Path.Combine(e.Path, "aaa.chorusTest");
                    File.WriteAllText(filePath3, @"aaa");

                    var    encoding        = Encoding.GetEncoding(1252);
                    string filePath1Cp1252 = encoding.GetString(Encoding.UTF8.GetBytes(filePath1));
                    string filePath2Cp1252 = encoding.GetString(Encoding.UTF8.GetBytes(filePath2));
                    string filePath3Cp1252 = encoding.GetString(Encoding.UTF8.GetBytes(filePath3));

                    MergeSituation.PushRevisionsToEnvironmentVariables("bob", "-123", "sally", "-456");
                    MergeOrder.PushToEnvironmentVariables(p.Path);
                    var result = Program.Main(new[] { filePath1Cp1252, filePath2Cp1252, filePath3Cp1252 });

                    Assert.That(result, Is.EqualTo(0));
                }
        }
예제 #4
0
 private int DoMerge(GroupOfConflictingLiftFiles group)
 {
     MergeSituation.PushRevisionsToEnvironmentVariables("bob", "-123", "sally", "-456");
     MergeOrder.PushToEnvironmentVariables(group.Folder.Path);
     return(Program.Main(new[] { group.BobFile.Path, group.AncestorFile.Path, group.SallyFile.Path }));
 }