private List <FileCompareResults> GetFileListDiff(SqlSyncBuildData master, SqlSyncBuildData child, bool masterIsLeftFile)
        {
            bool foundScript = false;
            List <FileCompareResults> results = new List <FileCompareResults>();

            foreach (SqlSyncBuildData.ScriptRow masterRow in master.Script)
            {
                foreach (SqlSyncBuildData.ScriptRow childRow in child.Script)
                {
                    if (masterRow.FileName.Trim().ToLower() == childRow.FileName.Trim().ToLower())
                    {
                        foundScript = true;
                        break;
                    }
                }
                if (!foundScript)
                {
                    FileCompareResults result = new FileCompareResults();
                    if (masterIsLeftFile)
                    {
                        result.LeftScriptRow = masterRow;
                    }
                    else
                    {
                        result.RightScriptRow = masterRow;
                    }

                    results.Add(result);
                }

                foundScript = false;
            }
            return(results);
        }
        public static FileCompareResults ProcessUnifiedDiff(FileCompareResults fileData)
        {
            StringBuilder sb        = new StringBuilder();
            StringWriter  sw        = new StringWriter(sb);
            string        leftFile  = fileData.LeftScriptPath;
            string        rightFile = fileData.RightScriptPath;

            string[] leftContents  = new string[0];
            string[] rightContents = new string[0];
            if (File.Exists(rightFile))
            {
                rightContents = File.OpenText(rightFile).ReadToEnd().Split('\n');
                for (int i = 0; i < rightContents.Length; i++)
                {
                    rightContents[i] = rightContents[i].TrimEnd(); // trim the end because the diff blocks a a WriteLine, don't want extra \r\n's
                }
            }

            if (File.Exists(leftFile))
            {
                leftContents = File.OpenText(leftFile).ReadToEnd().Split('\n');
                for (int i = 0; i < leftContents.Length; i++)
                {
                    leftContents[i] = leftContents[i].TrimEnd(); // trim the end because the diff blocks a a WriteLine, don't want extra \r\n's
                }
            }

            //Get the diff
            UnifiedDiff.WriteUnifiedDiff(leftContents, leftFile, rightContents, rightFile, sw, 500, false, false);

            //If there is not a real diff, just add the file contents, otherwise, add the unified diff text
            if (sb.ToString().Trim().Split('\r').Length < 3)
            {
                fileData.LeftScriptText = String.Join("\r\n", leftContents);
            }
            else
            {
                fileData.UnifiedDiffText = sb.ToString();
                fileData.LeftScriptText  = String.Join("\r\n", leftContents);
                fileData.RightSciptText  = String.Join("\r\n", rightContents);
            }

            return(fileData);
        }
        private List <FileCompareResults> GetCommonFileList(SqlSyncBuildData left, SqlSyncBuildData right)
        {
            //bool foundScript = false;
            List <FileCompareResults> results = new List <FileCompareResults>();

            foreach (SqlSyncBuildData.ScriptRow leftRow in left.Script)
            {
                foreach (SqlSyncBuildData.ScriptRow rightRow in right.Script)
                {
                    if (leftRow.FileName.Trim().ToLower() == rightRow.FileName.Trim().ToLower())
                    {
                        FileCompareResults result = new FileCompareResults();
                        result.LeftScriptRow  = leftRow;
                        result.RightScriptRow = rightRow; //Only file name, not full path yet
                        results.Add(result);
                    }
                }
            }
            return(results);
        }