デフォルトパターン^([Cc]loses|[Ff]ixes) +#\d+a
で複数の問題を参照することで、1回のコミットで複数の問題を閉じることができます。私はこれが行の先頭にあるfixes #number
パターンにしか影響しないと知っています。それが私が望むものです。
しかし、私はまだそれを動作させることができませんでした。
私は現在Gitlab 6.1を使用していますが、githubのインストールのreadmeに従ってインストールし、以下のコードニップ以外は変更しませんでした。gitlabの複数の問題を閉じるにはissue_closing_pattern変数を使用してください
まず、私は{gitlab-directory}/app/models/commit.rb
the following(元コメントアウトコード)に変更:
は、ここに私が試したものだ
def closes_issues project
md = safe_message.scan(/(?i)((\[)\s*(close|fix)(s|es|d|ed)*\s*#\d+\s*(\])|(\()\s*(close|fix)(s|es|d|ed)*\s*#\d+\s*(\)))/)
#md = issue_closing_regex.match(safe_message)
if md
extractor = Gitlab::ReferenceExtractor.new
md.each do |n|
extractor.analyze(n[0])
end
extractor.issues_for(project)
#extractor = Gitlab::ReferenceExtractor.new
#extractor.analyze(md[0])
#extractor.issues_for(project)
else
[]
end
end
しかし、私のニーズに適合しない、このコードスニペットで使用する正規表現と、実際ではありません正しい(例:(fixs #123)
と(closees #123)
は両方とも動作します)。
このコードニットをテストし、スニペットで使用されている正規表現と一致するパターンで動作することを確認した後、正規表現を変更しようとしました。最初は、2行目でこれを実行しようとしました。
md safe_message.scan(/#{Gitlab.config.gitlab.issue_closing_pattern}/)
この1つは機能しませんでした。私はlog/unicorn.stderr.log
におけるすべてのエラーメッセージが私は直接変数せずに設定ファイルからデフォルトの正規表現を使用しようとしましたが見つかりませんでした:
md safe_message.scan(/^([Cc]loses|[Ff]ixes) +#\d+a/)
しかし、これはあまりにも、動作しませんでした。再び、log/unicorn.stderr.log
にエラーメッセージはありません。
このコードスニペットのconfigファイルから変数issue_closing_pattern
を正規表現パターンとして使用するにはどうすればよいですか?
なぜdownvote ???私はコード(gitlabから)に特有の問題があり、faqによれば、これはここに属する質問です。 – wullxz
これがあなたの問題全体であるかどうかは分かりませんが、あなたの正規表現には余分な "a"があります。デフォルトは '/([Cc] loses | [Ff] ixes)+#\ d + /' ref:https://github.com/gitlabhq/gitlabhq/blob/master/config/gitlab.yml.example#L62です。 –
おっと...私はvimで設定ファイルを調べたときにそれが起こったに違いありません。私はそれなしで試してみる。しかし、まだ:私は変数を設定する 'config/gitlab.yml'の行をコメントアウトしました。ですから、 '[...](/#{Gitlab。[...]} /)'で設定ファイルの変数を使うことはまだできません。私の間違いは何ですか? – wullxz