Невозможно создать снимок в XCode 4.5.1 после обновления параметра ~/.gitconfig [push.default] до "простого"

Мне удалось создать снимок для моего проекта в XCode 4.5.1. Но теперь тот же самый проект продолжает говорить мне, что:

Unable to create a snapshot
error: Malformed value for push.default: simple
error: Must be one of nothing, matching, tracking or current.
fatal: bad config file line 21 in /Users/oppih/.gitconfig

Я помню, что сегодня, когда я запустил другой проект на github, я получил следующее предупреждение:

warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use: 

  git config --global push.default simple

Так что я погуглил его и нашел этот вопрос не так давно: 13148066, и получил его, я использую git config --global push.default simple поскольку "Это более интуитивное поведение, поэтому значение по умолчанию меняется на это".

Я думаю, что моя проблема с XCode должна быть связана с этим обновлением опции git.

Возвращаясь к XCode, я не решил настраивать git-репо в своем проекте XCode, но использовал снимок как способ резервного копирования моего кода. Я думаю, что есть какой-то трюк с git в снимке XCode, я не могу понять это. Теперь интересно, может ли кто-нибудь сказать мне, как повторно включить снимок в XCode (не изменяя параметр.gitconfig [push.default])?

2 ответа

Решение

Мне удалось решить свою проблему. См. В вопросе 10449374 для соответствующих деталей.

Основная проблема в этом случае заключается в том, что: XCode просто устанавливает (вместе с инструментами командной строки) свою собственную версию git в /Applications/Xcode.app/Contents/Developer/usr/bin .

И так или иначе, Xcode также жестко запрограммирован, он будет использовать свою собственную версию инструментов (таких как git). И (я не знаю почему) функция "снимка" в XCode имеет некоторую интеграцию с git.

Итак, когда я:

  1. установил новую версию git через homebrew,
  2. обновите новый параметр push.default в ~/.gitconfig,
  3. хотите создать снимок в проекте XCode

Тогда я столкнусь с проблемой, которую я описал выше.

Вот мое решение:

  1. перейдите в каталог Xcode:

    cd /Applications/Xcode.app/Contents/Developer/usr/bin

  2. переименуйте git Xcode как это:

    sudo mv ./git ./git-xcode-usr-bin

  3. свяжите мой собственный git, который установлен через homebrew:

    sudo ln -s /usr/local/bin/git ./git

И я сделал то же самое с /usr/bin/git

sudo mv /usr/bin/git /usr/bin/git-xcode-usr-bin
sudo ln -s /usr/local/bin/git /usr/bin/git

Это будет фактически ссылка /usr/local/Cellar/git/1.8.0/bin/git (потому что я использую git 1.8.0 в настоящее время)

Это немного сложно, и я должен обновить ссылку, если я обновлю самодельный git в будущем. И это действительно хорошо работает со снимком XCode и новой опцией push.default.

Что ж, вы можете попробовать указать другой файл.gitconfig для XCode с помощью метода, представленного в этом ответе: Как я могу указать собственный глобальный путь gitconfig?,

Например, после создания ~/.xcode_home в качестве нового приложения $HOME для Xcode вы можете использовать следующий скрипт оболочки для запуска Xcode:

HOME=$HOME/.xcode_home open "$(xcode-select --print-path)/../.."

Это не совсем удобно для пользователя, хотя... В любом случае, вы можете проверить это: Установка переменных среды в OS X?, Но имейте в виду, что перезапись $HOME глобально не может быть хорошей идеей.

Другие вопросы по тегам