/// <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); }
/// <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); }
/// <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)); } }
/// <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); }