Я пытаюсь добавить ловушку предварительной фиксации в TurtoiseGit, чтобы автоматически добавить номер JIRA в мое сообщение о фиксации. Номер JIRA всегда является первой частью названия моей ветки.

Например: JIRA-456-fix-cleanup-crash , я хотел бы иметь JIRA-456

Я использую команду git: git rev-parse --abbrev-ref HEAD > %2 . Но, к сожалению, это дает мне название всей ветви. Мне нужен только JIRA-456 .

Я попытался использовать команду оболочки findstr для подстроки имени ветви без успеха.

Механизм, который я использую, тот, что указан здесь:https://gitlab.com/tortoisegit/tortoisegit/issues/2229#note_1781864

2 ответа2

1

Это будет работать только в том случае, если структура строки такая, как вы сказали AAAA-BBBB-CCCC-...

for /F "tokens=1,2 delims=-" %%a in ("JIRA-456-fix-cleanup-crash") do (set "expectedString=%%a-%%b")
echo %expectedString%

Получает JIRA-456 , он работает, разделяя строку, используя - в качестве разделителя, затем он берет tokens 1(%%a) и 2(%%b) и объединяет их, используя set , так что вы можете использовать строку далее в вашем командном файле.

Итак, для вашей команды вам нужно будет передать команду функции FOR в ее собственном контексте, используя одинарные кавычки '

:: I Haven't used git so I'm not really sure about why you redirected the output stream
:: but this should give you a good idea how to use it

for /F "tokens=1,2 delims=-" %%a in ('git rev-parse --abbrev-ref HEAD') do (set "ExString=%%a-%%b")

Синтаксис %%a предназначен для пакетных файлов, если вы хотите проверить его как команду, используйте %a

Приветствия.

1

Вместо перенаправления вывода

git rev-parse --abbrev-ref HEAD

непосредственно в файл > %2 , проанализируйте его с помощью for /f

@Echo off
for /f "tokens=1-2 delims=-" %%A in ('
    git rev-parse --abbrev-ref HEAD
') Do Set "Var=%%A-%%B"
(Echo:%Var%)>%2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .