Exemple #1
0
        /// <summary>
        /// branches ディレクトリ配下
        /// </summary>
        /// <param name="ci">SvnChangeInfoEventArgs オブジェクト。</param>
        /// <returns>True:有効, False:無効。</returns>
        public static bool Validate(SvnChangeInfoEventArgs ci)
        {
            string copyFromPathMaxPath = "";

            // branches が存在するパスのみ処理
            foreach (SvnChangeItem item in ci.ChangedPaths.Where(s => s.Path.IndexOf(NodeName) >= 0))
            {
                // branches ノードでない場合は処理対象外
                if (!IsBranchesNode(item))
                {
                    continue;
                }

                // branches 作成先のディレクトリ
                copyFromPathMaxPath = GetCopyFromPathMaxPath(item, copyFromPathMaxPath);

                // コピー先ディレクトリが許可されない形式なら拒否
                if (copyFromPathMaxPath != "" && !AcceptCopyFromPathDirectoryRegex.IsMatch(copyFromPathMaxPath))
                {
                    PutNotCreateMessage();
                    return(false);
                }
            }
            return(true);
        }
Exemple #2
0
 /// <summary>
 /// ログメッセージが未入力かどうかを取得する。
 /// </summary>
 /// <param name="ci">SvnChangeInfoEventArgs オブジェクト。</param>
 /// <returns>true:未入力, false:入力済み。</returns>
 private static bool IsNotInputMessage(SvnChangeInfoEventArgs ci)
 {
     if (string.IsNullOrEmpty(ci.LogMessage.Trim()))
     {
         return(true);
     }
     return(false);
 }
Exemple #3
0
        /// <summary>
        /// 共通検証。
        /// </summary>
        /// <param name="ci">SvnChangeInfoEventArgs オブジェクト。</param>
        /// <returns>True:有効, False:無効。</returns>
        public static bool Validate(SvnChangeInfoEventArgs ci)
        {
            if (IsNotInputMessage(ci))
            {
                Console.WriteLine("----------------------------------------------------------");
                Console.WriteLine("ログメッセージが未入力です。");
                Console.WriteLine("----------------------------------------------------------");
                return(false);
            }

            return(true);
        }
 public SvnChangeInfoEventArgsWrapper(HookType hookType, SvnChangeInfoEventArgs svnChangeInfoEventArgs)
 {
     this.HookType = hookType;
       this.BaseRevision = svnChangeInfoEventArgs.BaseRevision;
       this.Author = svnChangeInfoEventArgs.Author;
       this.LogMessage = svnChangeInfoEventArgs.LogMessage;
       this.Revision = svnChangeInfoEventArgs.Revision;
       this.Time = svnChangeInfoEventArgs.Time;
       this.AffectedItems = new List<IRepoAffectedItem>();
       foreach (SvnChangeItem item in svnChangeInfoEventArgs.ChangedPaths)
       {
     this.AffectedItems.Add(new SvnChangeItemWrapper(item));
       }
 }
Exemple #5
0
        /// <summary>
        /// tags ディレクトリ配下
        /// </summary>
        /// <param name="ci">SvnChangeInfoEventArgs オブジェクト。</param>
        /// <returns>True:有効, False:無効。</returns>
        public static bool Validate(SvnChangeInfoEventArgs ci)
        {
            string newDirectoryMaxPath = "";
            string copyFromPathMaxPath = "";

            // tags が存在するパスのみ処理
            foreach (SvnChangeItem item in ci.ChangedPaths.Where(s => s.Path.IndexOf(NodeName) >= 0))
            {
                // tags ノードでない場合は処理対象外
                if (!IsTagsNode(item))
                {
                    continue;
                }

                // 追加操作以外は拒否
                if (!IsAddAction(item))
                {
                    Console.WriteLine("----------------------------------------------------------");
                    Console.WriteLine("tags配下は追加以外の操作はできません。");
                    Console.WriteLine("----------------------------------------------------------");
                    return(false);
                }

                // 新規作成される中間ディレクトリ
                newDirectoryMaxPath = GetNewDirectoryMaxPath(item, newDirectoryMaxPath);

                // tags 作成先のディレクトリ
                copyFromPathMaxPath = GetCopyFromPathMaxPath(item, copyFromPathMaxPath);

                // 新規作成される中間ディレクトリが許可されない形式なら拒否
                if (newDirectoryMaxPath != "" && !AcceptNewDirectoryRegex.IsMatch(newDirectoryMaxPath))
                {
                    PutNotCreateMessage();
                    return(false);
                }

                // コピー先ディレクトリが許可されない形式なら拒否
                if (copyFromPathMaxPath != "" && !AcceptCopyFromPathDirectoryRegex.IsMatch(copyFromPathMaxPath))
                {
                    PutNotCreateMessage();
                    return(false);
                }
            }
            return(true);
        }