Ohmyzsh: Плагин Git нервничает, когда возникает конфликт

Созданный на 18 мар. 2016  ·  35Комментарии  ·  Источник: ohmyzsh/ohmyzsh

Я выполнил git rebase master что привело к конфликту. И теперь каждый раз, когда я нажимаю Enter в приглашении zsh, я получаю следующее:

VCS_INFO_get_data_git:223: no such file or directory: .git/rebase-apply/msg-clean

Самый полезный комментарий

TL; DR: Homebrew zsh 5.2 имеет исправление; вероятно, имеет значение ваш chsh а не $PATH .

@apjanke, возможно, здесь проблема с Homebrew? Можете ли вы попробовать воспроизвести это тоже?

Я могу воспроизвести это на моем компьютере с OS X 10.11.6, но только с системным zsh 5.0.8. У меня установлена ​​обновленная версия zsh 5.2 с установленной Homebrew, и она не затронута. Похоже, что версия Homebrew включает исправление. Чтобы это затронуло, вам также необходимо использовать тему, которая использует предоставленную zsh vcs_info вместо собственной поддержки тем git OMZ, например тему pure .

openssl git/man-page-formatting*
❯ pwd
/Users/janke/local/repos/openssl/openssl
VCS_INFO_get_data_git:223: no such file or directory: .git/rebase-apply/msg-clean

openssl git/man-page-formatting*
❯ echo $ZSH_VERSION
5.0.8
VCS_INFO_get_data_git:223: no such file or directory: .git/rebase-apply/msg-clean

openssl git/man-page-formatting*
❯ zsh

openssl git/man-page-formatting*
❯ pwd
/Users/janke/local/repos/openssl/openssl

openssl git/man-page-formatting*
❯ echo $ZSH_VERSION
5.2

openssl git/man-page-formatting*
❯

Возможно взаимодействие с Homebrew, поскольку вы не можете запускать установленный Homebrew zsh в новых сеансах терминала, независимо от того, что which zsh дает вам внутри сеанса. Это означает, что zsh --version не обязательно тот, который вы используете. Первый zsh в новом сеансе терминала контролируется настройкой chsh . Используйте echo $ZSH_VERSION чтобы узнать, какая версия выполняется в текущем сеансе.

Например, у меня OS X 10.11.6, и у меня zsh 5.2 установлено через Homebrew. Но я по-прежнему получаю систему zsh 5.0.8 по умолчанию, поскольку в качестве оболочки по умолчанию используется /bin/zsh .

$ which zsh
/usr/local/bin/zsh
[~]
$ zsh --version
zsh 5.2 (x86_64-apple-darwin13.4.0)
[~]
$ echo $ZSH_VERSION
5.0.8

Если это ваша проблема, и вы хотите использовать новую версию zsh 5.2 по умолчанию, выполните chsh -s $(homebrew --prefix)/bin/zsh (после того, как убедитесь, что она находится в вашем файле /etc/shells ). @WayneYe , я подозреваю, что это ваша ситуация, поскольку вы упомянули обновление /etc/shells но не запускали chsh . Я предполагаю, что это верно для других здесь, поскольку вы проверяете версию с помощью zsh --version а не $ZSH_VERSION .

Или ваш эмулятор терминала может быть настроен на запуск определенного zsh качестве оболочки входа, и он может указывать на /bin/zsh вместо /usr/local/bin/zsh . Если это так, я бы просто переключил ваш профиль терминала на использование оболочки входа по умолчанию, чтобы он уважал ваши настройки chsh .

И спасибо, Марк!

Все 35 Комментарий

Это ошибка в кодовой базе zsh, исправленная в https://github.com/zsh-users/zsh/commit/7a1678767f44f200295d88dfea94902718275266. По возможности обновите zsh до версии 5.2.

Как узнать, какая у меня версия сейчас? А как мне обновиться до конкретной версии?

zsh --version дает вам версию zsh. Его обновление зависит от вашей операционной системы.

О, я думал о-о-о-о, а не о зш. Понятно. Я использую zsh 5.2.

+1

Это должно быть в последней версии zsh 5.2. Возможно, ваша платформа не поставляла модифицированную версию 5.2. Например, я использую тестирование Debian, и мой установленный пакет zsh имеет версию 5.2-5 , что означает, что это 5-я или 6-я модифицированная версия zsh 5.2. Какую систему вы используете?

Mac OS 10.11.5. zsh 5.2 (x86_64-яблоко-darwin15.4.0). Установил через Homebrew.

Это странно, последняя формула Homebrew была обновлена ​​9 апреля, а tar.gz из sourceforge последний раз обновлялся в декабре 2015 года, и то и другое спустя много времени после того, как исправление было введено в версию zsh 5.2. Возможно, вы можете brew update zsh или удалить, а затем установить снова?

У меня такая же проблема, установка и переустановка из homebrew ничего не делает (это та же версия)

@SimenB выглядит так, как будто ваш $PATH отключен.

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Если вы сначала увидите /usr/bin значит, вы не увидите тот, который установлен Homebrew. См. Док .

Установка последней версии zsh ( zsh 5.2 (x86_64-apple-darwin15.4.0) ) не устранила ошибку.

Соответствующие части моего $PATH - это /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin , так что я должен быть в порядке (только nvm и rvm перед ним)

+1 за @jtheoof

Проблема все еще существует!

Я установил последнюю версию zsh 5.2 и обновил свои / etc / shells, я использую OSX El Capitan v10.11.6 , ниже представлена ​​моя среда:

>  which zsh
/usr/local/bin/zsh
>  echo $SHELL
/usr/local/bin/zsh
>  zsh --version
zsh 5.2 (x86_64-apple-darwin15.4.0)
>  git --version
git version 2.9.2

Что я имею:

> git status
rebase in progress; onto a752d68
You are currently rebasing branch 'prod' on 'a752d68'.
  (fix conflicts and then run "git rebase --continue")
  (use "git rebase --skip" to skip this patch)
  (use "git rebase --abort" to check out the original branch)

Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add <file>..." to mark resolution)

    both modified:   .travis.yml

no changes added to commit (use "git add" and/or "git commit -a")
VCS_INFO_get_data_git:223: no such file or directory: .git/rebase-apply/msg-clean

+1

+1

Всем, у кого есть эта проблема, запустите следующее и опубликуйте результат:

zsh --version
for d ($fpath); do
    f="$d/VCS_INFO_get_data_git"
    if [[ -f "$f" ]]; then
        command shasum "$f"
    fi
done
zsh 5.2 (x86_64-apple-darwin15.0.0)

123fbb5938bd16a8aa0c92a5df9ede62ead06dd1  /usr/share/zsh/5.0.8/functions/VCS_INFO_get_data_git

Думаю, это объясняет поведение. Глядя на мою переменную fpath , есть несколько элементов для старой версии на OSX

Подождите ... Нет файла 5.2.0 VCS_INFO_... ?

@mcornella Есть, но директория zsh functions из 5.2 не была в переменной fpath . Я думаю, что это ошибка пакета Homebrew. Ты согласен?

На самом деле я не уверен. Попробуйте запустить zsh -f и посмотреть, что такое $fpath .

Это мой fpath , источник oh-my-zsh из моего .zshrc закомментирован

 $ echo $fpath
/usr/local/share/zsh/site-functions /usr/share/zsh/site-functions /usr/share/zsh/5.0.8/functions

@mcornella :

Это результат:
zsh 5.2 (x86_64-apple-darwin15.4.0)
123fbb5938bd16a8aa0c92a5df9ede62ead06dd1 /usr/share/zsh/5.0.8/functions/VCS_INFO_get_data_git

И $fpath :
/usr/local/share/zsh/site-functions /usr/local/Cellar/zsh/5.2/share/zsh/functions

Любые идеи...?

@apjanke, возможно, здесь проблема с Homebrew? Можете ли вы попробовать воспроизвести это тоже?

Кстати, мне так и не удалось поздравить вас с повышением в должности официального сотрудника Homebrew, так что ... поздравляю! 👏

zsh --version => zsh 5.2 (x86_64-apple-darwin15.4.0)

Цикл => 123fbb5938bd16a8aa0c92a5df9ede62ead06dd1 /usr/share/zsh/5.0.8/functions/VCS_INFO_get_data_git

$fpath без oh-my-zsh stuff => /usr/local/share/zsh/site-functions /usr/share/zsh/site-functions /usr/share/zsh/5.0.8/functions

$ zsh --version
zsh 5.0.8 (x86_64-apple-darwin15.0)
$ for d ($fpath); do
    f="$d/VCS_INFO_get_data_git"
    if [[ -f "$f" ]]; then
        command shasum "$f"
    fi
done
123fbb5938bd16a8aa0c92a5df9ede62ead06dd1  /usr/share/zsh/5.0.8/functions/VCS_INFO_get_data_git
$ cat -n /usr/share/zsh/5.0.8/functions/VCS_INFO_get_data_git | ag '^\s*223'
   223      subject="${$(< "${patchdir}/msg-clean")[(f)1]}"

TL; DR: Homebrew zsh 5.2 имеет исправление; вероятно, имеет значение ваш chsh а не $PATH .

@apjanke, возможно, здесь проблема с Homebrew? Можете ли вы попробовать воспроизвести это тоже?

Я могу воспроизвести это на моем компьютере с OS X 10.11.6, но только с системным zsh 5.0.8. У меня установлена ​​обновленная версия zsh 5.2 с установленной Homebrew, и она не затронута. Похоже, что версия Homebrew включает исправление. Чтобы это затронуло, вам также необходимо использовать тему, которая использует предоставленную zsh vcs_info вместо собственной поддержки тем git OMZ, например тему pure .

openssl git/man-page-formatting*
❯ pwd
/Users/janke/local/repos/openssl/openssl
VCS_INFO_get_data_git:223: no such file or directory: .git/rebase-apply/msg-clean

openssl git/man-page-formatting*
❯ echo $ZSH_VERSION
5.0.8
VCS_INFO_get_data_git:223: no such file or directory: .git/rebase-apply/msg-clean

openssl git/man-page-formatting*
❯ zsh

openssl git/man-page-formatting*
❯ pwd
/Users/janke/local/repos/openssl/openssl

openssl git/man-page-formatting*
❯ echo $ZSH_VERSION
5.2

openssl git/man-page-formatting*
❯

Возможно взаимодействие с Homebrew, поскольку вы не можете запускать установленный Homebrew zsh в новых сеансах терминала, независимо от того, что which zsh дает вам внутри сеанса. Это означает, что zsh --version не обязательно тот, который вы используете. Первый zsh в новом сеансе терминала контролируется настройкой chsh . Используйте echo $ZSH_VERSION чтобы узнать, какая версия выполняется в текущем сеансе.

Например, у меня OS X 10.11.6, и у меня zsh 5.2 установлено через Homebrew. Но я по-прежнему получаю систему zsh 5.0.8 по умолчанию, поскольку в качестве оболочки по умолчанию используется /bin/zsh .

$ which zsh
/usr/local/bin/zsh
[~]
$ zsh --version
zsh 5.2 (x86_64-apple-darwin13.4.0)
[~]
$ echo $ZSH_VERSION
5.0.8

Если это ваша проблема, и вы хотите использовать новую версию zsh 5.2 по умолчанию, выполните chsh -s $(homebrew --prefix)/bin/zsh (после того, как убедитесь, что она находится в вашем файле /etc/shells ). @WayneYe , я подозреваю, что это ваша ситуация, поскольку вы упомянули обновление /etc/shells но не запускали chsh . Я предполагаю, что это верно для других здесь, поскольку вы проверяете версию с помощью zsh --version а не $ZSH_VERSION .

Или ваш эмулятор терминала может быть настроен на запуск определенного zsh качестве оболочки входа, и он может указывать на /bin/zsh вместо /usr/local/bin/zsh . Если это так, я бы просто переключил ваш профиль терминала на использование оболочки входа по умолчанию, чтобы он уважал ваши настройки chsh .

И спасибо, Марк!

Хорошо, пожалуйста, убедитесь, что вы используете 5.2 с echo $ZSH_VERSION . Если это не так, запустите chsh -s /usr/local/bin/zsh .

@apjanke ты супер! ваше решение устранило эту проблему !!

@apjanke И все это время я использовал неправильный двоичный файл ( /bin/zsh )! Спасибо за это!

Хорошо, я пока закрою этот вопрос. Если кто-то не может решить эту проблему, я открою заново. Спасибо, Андрей!

Небольшой отзыв о моей проблеме.

У меня не было echo $ZSH_VERSION 5.2, вместо этого у меня было 5.0 . Я установил последнюю версию от Brew, но мне пришлось добавить /usr/local/bin/zsh в /etc/shells и тогда все стало нормально.

Я столкнулся с этой проблемой, когда попробовал git rebase сегодня. Я использую MAC OSX El Capitan, и это след:

 $ brew install --without-etcdir zsh
Updating Homebrew...
Warning: zsh-5.3.1 already installed

$ dscl . -read /Users/$USER UserShell
UserShell: /usr/local/bin/zsh

$ which zsh
/bin/zsh
 $ zsh --version
 zsh 5.0.8 (x86_64-apple-darwin15.0)

Смена оболочки ...

$chsh -s /usr/local/bin/zsh
Changing shell for thitami.
Password for thitami:
chsh: no changes made

$ sudo vim /etc/shells
....
/bin/zsh
/usr/local/bin/zsh

Любые мысли будут оценены.

Обновление: требуется перезагрузка терминала, чтобы изменения вступили в силу. Все работает нормально. 👍

+1

В Linux Mint / Ubuntu U есть:

zsh 5.1.1 (x86_64-ubuntu-linux-gnu)
60bec9ba8aa6f76ce605239846211159a5a20f1c  /usr/share/zsh/functions/VCS_Info/Backends/VCS_INFO_get_data_git
VCS_INFO_get_data_git:225: no such file or directory: /data/projects/coaxis-opt/.git/rebase-apply/msg-clean

Есть ли PPA с ZSH для ubuntu для обновления до 5.2 ?

Просто чтобы больше помогать людям ...
Используя подсказку Макорнеллы ( echo $ZSH_VERSION ), я смог выяснить, что на самом деле я использую старую версию zsh, но chsh -s /usr/local/bin/zsh у меня не работает. Это наконец сделало это для меня: https://stackoverflow.com/questions/17648621/how-do-i-update-zsh-to-the-latest-version

Была ли эта страница полезной?
0 / 5 - 0 рейтинги