コード例 #1
0
        /// <summary>
        /// データ解析しコミットログ情報リスト生成
        /// </summary>
        /// <param name="logData">ログデータ</param>
        /// <param name="extensions">抽出する拡張子</param>
        /// <param name="filters">抽出するキーワード</param>
        /// <returns></returns>
        public static SubversionLogs CreateSubversionLogs(string logData, List <string> extensions, List <string> filters)
        {
            SubversionLogs lst = new SubversionLogs();

            //コミットログのブロックへ分割
            List <string> blocks = SubversionLogs.AnalyzeLogBlock(logData);

            //ブロックの解析
            foreach (String block in blocks)
            {
                //リビジョン生成
                RevisionInfo ri = new RevisionInfo(block);
                //作者生成
                AuthorInfo ai = new AuthorInfo(block);
                //日時情報
                DateInfo di = new DateInfo(block);
                //コメント生成
                int    comS = block.IndexOf("メッセージ:") + "メッセージ:".Length;
                int    comE = block.IndexOf("----", comS);
                string com  = block.Substring(comS, comE - comS);

                //変更ファイル情報生成
                List <ModifyFileInfo> modFis = new List <ModifyFileInfo>();
                foreach (String line in block.Substring(comE + "----".Length).Split("\r\n".ToCharArray()))
                {
                    ModifyFileInfo mdf = new ModifyFileInfo(line);
                    if (mdf.HasValue && (extensions.Count <= 0 || extensions.Contains(mdf.FileExtension)))
                    {
                        modFis.Add(mdf);
                    }
                }

                //情報が揃っている
                if (ri.HasValue && ai.HasValue && di.HasValue && !String.IsNullOrEmpty(com) && modFis.Count > 0)
                {
                    //フィルタリング
                    if (filters.Count > 0 && !filters.Exists(filter => com.Contains(filter)))
                    {
                        continue;
                    }
                    lst.Add(new SubversionLogInfo(ri, ai, di, com.Trim("\r\n".ToCharArray()), modFis));
                }
            }

            return(lst);
        }