简体   繁体   中英

Unable to create a snapshot in XCode 4.5.1 after update the ~/.gitconfig option [push.default] to “simple”

I was able to create a snapshot for my project in XCode 4.5.1. But now the same project just keeps telling me that:

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

I remember that when I pushed another project onto github ealier today, I was prompted with this warning:

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

So I googled it and find this question not so long ago: 13148066 , and got it settled, I use git config --global push.default simple since "This is a more intuitive behavior, which is why the default is getting changed to this."

I think my problem with XCode must have a connection with this git option update.

Back to XCode, I did not choose to setup a git repo in my XCode project, but used the snapshot as a way to backup my code. I think there's some trick with git in XCode's snapshot, I cannot figure it out. Now I wonder if anyone can tell me how to re-enable the snapshot in XCode (while not to change the .gitconfig [push.default] option)?

I managed to solve my own problem. See it in Question 10449374 for the related details.

The main problem in this case is that: Xcode just install (along with the Command Line Tools) its own version of git in /Applications/Xcode.app/Contents/Developer/usr/bin .

And somehow, Xcode also hard coded it would use its own version of tools (such as git). And (I don't know why) Xcode's "snapshot" feature has some integration with git.

So when I:

  1. installed a new version of git via homebrew,
  2. update the new push.default option in ~/.gitconfig ,
  3. want to create a snapshot in an Xcode project

Then I will encounter the problem I described above.

Here's my solution:

  1. change into the Xcode directory:

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

  2. rename the Xcode's git like this:

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

  3. link my own git which is installed through homebrew:

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

And I did the same thing with /usr/bin/git

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

This will acctually link /usr/local/Cellar/git/1.8.0/bin/git (because I'm use git 1.8.0 at the present)

It's a little tricky, and I have to update the link if I upgrade the homebrewed git in the future. And it really works fine with Xcode's snapshot and the new push.default option.

Well, you may try specifying another .gitconfig file for Xcode by method provided in this answer: How can I specify custom global gitconfig path? .

For example, after created ~/.xcode_home as the new $HOME for Xcode app, you can use the following shell script to launch Xcode:

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

It is not quite user friendly though… Any way, you may want to check this: Setting environment variables in OS X? . But be warned, overwriting $HOME globally might not be a good idea.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM