j-snow
@j-snow
Java junior developer

"env filter failed" при выполнении git filter-branch. Где ошибка?

Пытаюсь отредактировать мета-информацию коммита с помощью команды:
git filter-branch -f --env-filter \
'[ $GIT_COMMIT = 836dea22e7ee29381569b429d3e1f3b9c62751a6 ] && echo TEST'

echo TEST разумеется лишь для теста.

При выполнении выдаёт ошибку:

Rewrite a345a0c5bc7aee029c7feaf2fa9ab8f621a6964f (1/10)
(0 seconds passed, remaining 0 predicted)
env filter failed:
[ $GIT_COMMIT = 836dea22e7ee29381569b429d3e1f3b9c62751a6 ] && echo TEST


Терминал стандартный гит-овый под винду (mintty 2.7.3)

Пробовал разный синтаксис, всё без толку:
[ $GIT_COMMIT = 836dea22e7ee29381569b429d3e1f3b9c62751a6 ]
[ "$GIT_COMMIT" = "836dea22e7ee29381569b429d3e1f3b9c62751a6" ]
[[ $GIT_COMMIT = 836dea22e7ee29381569b429d3e1f3b9c62751a6 ]]
[ $GIT_COMMIT -eq 836dea22e7ee29381569b429d3e1f3b9c62751a6 ]


SOLVED
Необходимо, чтобы выполняемая команда возвращала успешный код выполнения.
То есть нужно что-то такое:
git filter-branch -f --env-filter '[ $GIT_COMMIT = <hash> ] && echo TEST || true'
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@aol-nnov
Пытаюсь отредактировать мета-информацию коммита

одного??
git rebase -i commitHash^ и дальше по тексту там. выбери edit и всё.

у меня большие подозрения, что вывод env-filter-а не тебе в консоль пойдет, а гитовому процессу в stdin. и он не рад твоему тесту, например.

если честно, таким извратом не занимался ни разу, интерактивного ребейза хватало за глаза.

вон нашел чё. там совершенно другие буквы. переменной $GIT_COMMIT там не пользуются. Уверен, что она вообще есть?

// убийца, как обычно, садовник.
git-filter-branch - шелл скрипт, env-filter просто eval-ится и проверяется код завершения этого eval-а, который равен коду завершения последней команды в нем. если там false, считается, что env-filter завершился с ошибкой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы