2016-11-02 14 views
0

私の支店名パターンは ticketId_ticketDescription 例えば MIT-1018 -make-のgoto-リダイレクト-賢くGitのコミット-MSGフック:プレフィックスは、支店名の一部に基づいてコミット

ので、私が望むそれぞれ以下の通りですそれは [MIT-1018]である。この場合にはticketIdを前置することが

をコミット私は

gitのコミットのであれば-amをコミット」これはMIT-1018「ので、メッセージのあるべき 」コミットメッセージです:これは、コミットメッセージ

ですこれは私の試み

#!/bin/bash 
ticket=`git rev-parse --abbrev-ref HEAD | sed -e 's/MIT-[0-9]+//'` 
echo $ticket 
comment=`cat $1` 
search=`grep "$ticket" $1` 
if [ -n "$ticket" ] && [ -z "$search" ] 
then 
echo "$ticket: $comment" > $1 
fi 

ですが、これは、全体の支店名を追加プレフィックスはTicketIdではなく

+0

あなたの例は明確ではありません。あなたに必要なサンプル入力と期待される出力を明確に記述できますか?スクリプト "$ 1"に対するあなたの議論は何ですか? – Inian

+0

'TicketId'文字列は固定長文字ですか? '3'文字に続いて' 4'数字が続きますか? – Inian

+0

@Inian は、私はちょうどので、メッセージがあるべき「これはコミットメッセージである」-amコミット説明 のgitでそれを強調しました任意の桁数で4桁以下 – Dahab

答えて

1

文字クラス[[:alnum:]][[:digit:]]を使用して、必要に応じてチケット識別子を抽出できます。

$ ticket="$(git rev-parse --abbrev-ref HEAD)" 
$ commitMessage="This is a commit message" 

# Assuming the variable has the string "MIT-1018-make-goto-redirection-smarter" 
# ticket="MIT-1018-make-goto-redirection-smarter" 

$ [[ $ticket =~ (([[:alnum:]]{3})-([[:digit:]]{3,})).* ]] && ticketID=${BASH_REMATCH[1]} 
$ printf "%s\n" "$ticketID: $commitMessage" 
MIT-1018: This is a commit message 
関連する問題