швы веток дерева мерзавца, чтобы не иметь никакого эффекта вообще - PullRequest
0 голосов
/ 31 мая 2018

Здравствуйте! Я хочу изменить почтовый домен и использовать первые буквы в именах коммиттеров, но это не работает, в чем же подвох?Спасибо.

cmd=$(
GIT_AUTHOR_NAME=$(sed -r 's/\<./\U&/g' <<<"$GIT_AUTHOR_NAME")
GIT_AUTHOR_EMAIL=$(sed 's/@[^,]*/@foo.net/' <<<"$GIT_COMMITTER_EMAIL")
GIT_COMMITTER_NAME=$(sed -r 's/\<./\U&/g' <<<"$GIT_AUTHOR_NAME")
GIT_COMMITTER_EMAIL=$(sed 's/@[^,]*/@foo.net/' <<<"$GIT_COMMITTER_EMAIL")
git commit-tree "$@"

)

git filter-branch --env-filter "$cmd"

1 Ответ

0 голосов
/ 31 мая 2018

Прежде всего, вашему --env-filter не нужно звонить git commit-tree.Нужно только обновить среду.

Помимо этого, проблема заключается в синтаксисе сценария вашей оболочки.Когда вы говорите

cmd=$(
GIT_AUTHOR_NAME=$(sed -r 's/\<./\U&/g' <<<"$GIT_AUTHOR_NAME")
GIT_AUTHOR_EMAIL=$(sed 's/@[^,]*/@foo.net/' <<<"$GIT_COMMITTER_EMAIL")
GIT_COMMITTER_NAME=$(sed -r 's/\<./\U&/g' <<<"$GIT_AUTHOR_NAME")
GIT_COMMITTER_EMAIL=$(sed 's/@[^,]*/@foo.net/' <<<"$GIT_COMMITTER_EMAIL")

)

Это означает, что нужно немедленно запустить

GIT_AUTHOR_NAME=$(sed -r 's/\<./\U&/g' <<<"$GIT_AUTHOR_NAME")
GIT_AUTHOR_EMAIL=$(sed 's/@[^,]*/@foo.net/' <<<"$GIT_COMMITTER_EMAIL")
GIT_COMMITTER_NAME=$(sed -r 's/\<./\U&/g' <<<"$GIT_AUTHOR_NAME")
GIT_COMMITTER_EMAIL=$(sed 's/@[^,]*/@foo.net/' <<<"$GIT_COMMITTER_EMAIL")

и установить переменную cmd для вывода этих команд.

I'mЯ не уверен, что создание сценария фильтра в переменной - это то, что я хотел бы сделать, но если это так, как вы хотите, это будет работать лучше

cmd='GIT_AUTHOR_NAME=$(sed -r "s/\<./\U&/g" <<<"$GIT_AUTHOR_NAME"); 
    GIT_AUTHOR_EMAIL=$(sed "s/@[^,]*/@foo.net/" <<<"$GIT_COMMITTER_EMAIL"); 
    GIT_COMMITTER_NAME=$(sed -r "s/\<./\U&/g" <<<"$GIT_AUTHOR_NAME"); 
    GIT_COMMITTER_EMAIL=$(sed "s/@[^,]*/@foo.net/" <<<"$GIT_COMMITTER_EMAIL");'

git filter-branch --env-filter "$cmd"

Обратите внимание на измененные кавычки ('...' вместо$(...) для скрипта в целом; " вместо ' в скрипте, потому что нет смысла прыгать через обручи, чтобы использовать ' там) и добавленные ; s


Обновление - Чтобы прояснить для потомков - синтаксис, который я предлагаю выше, был протестирован в системе Windows, работающей git bash.Синтаксис сценария в исходном вопросе напоминал синтаксис bash, и bash был бы типичным для среды git, поэтому я предположил, что это так.

Из комментариев кажется, что OP использовал что-то другое (я до сих пор не знаю,что) это не может обработать этот синтаксис;но обнаружил, что предложенный синтаксис также работает в zsh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...