2016-04-20 6 views
0

я изначально имел несколько иную потребность и получил большой ответ: Prepend Git commit message with partial branch nameGit совершить крюк предварять сообщение

Однако мои потребности изменились немного, и регулярное выражение у меня не работает, как задумано, я м надеясь, что кто-то может дать мне небольшое руководство.

Моей текущая условность ветви именования: bug/ab-123/branch-description

Что мне нужно сделать, это перед именем каждого мерзавца сообщения фиксации со значениями между каждой прямыми косыми чертами, так что в этом случае ab-123. Кроме того, я бы хотел, чтобы он был заглавным как AB-123.

Конечный результат я ищу это:

AB-123 my commit message goes here 

Мой текущий регулярное выражение подготовить фиксации-сообщение:

branch=$(git symbolic-ref --short HEAD) 

trimmed=$(echo "$branch" | sed -e 's:^[a-z]+\/\([a-z]{2,}-\d+\):\1:' -e \ 
    'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/') 

echo $trimmed | sed -e 's/f/b/' | tr [a-z] [A-Z] | awk '{print("ls " $1)}' 

Это ничего не делает, однако. Любые идеи о том, что я делаю неправильно? Благодаря!

ответ

1

Вы действительно не нужны регулярные выражения, если у вас есть хорошие разделители строка так:

branch=$(git symbolic-ref --short HEAD) 
trimmed=$(echo $branch | cut -f2 -d/ | tr '[:lower:]' '[:upper:]') 

Так дали:

$ git status 
On branch bug/ab-123/foobar 
nothing to commit, working directory clean 

Получает:

$ branch=$(git symbolic-ref --short HEAD) 
$ echo $branch 
bug/ab-123/foobar 

И:

$ trimmed=$(echo $branch | cut -f2 -d/ | tr '[:lower:]' '[:upper:]') 
$ echo $trimmed 
AB-123 

И это дает вам «значения между каждой косой чертой», преобразованные в верхний регистр.

+0

Это работало как шарм, спасибо! Я добавил это до конца, чтобы включить мое сообщение с сообщением: 'echo '$ trimmed $ (cat $ 1)"> $ 1' – gjunkie