2012-11-01 37 views
2

我能够在XCode 4.5.1中为我的项目创建快照。但现在同样的项目只是不断告诉我:今天ealier将〜/ .gitconfig选项[push.default]更新为“simple”后无法在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 

所以我GOOGLE了它和不久之前发现这个问题:13148066,并得到它解决,我使用git config --global push.default simple,因为“这是一个更直观的行为,这就是为什么默认情况正在改变这一点。”

我认为我的XCode问题必须与此git选项更新有关。

回到XCode,我没有选择在我的XCode项目中设置git repo,而是使用快照来备份我的代码。我认为在XCode的快照中有一些技巧,我无法弄清楚。现在我想知道是否有人能告诉我如何重新启用XCode中的快照(而不是更改.gitconfig [push.default]选项)?

+1

我创建了这个脚本让Xcode在/ usr/local/bin中使用本地安装的Git。一探究竟。 https://gist.github.com/4659915 – Baub

回答

3

我设法解决了我自己的问题。请参阅Question 10449374以了解相关详细信息。

这种情况下的主要问题是:Xcode只是在/Applications/Xcode.app/Contents/Developer/usr/bin中安装(与命令行工具一起)它自己的git版本。

不知何故,Xcode也硬编码它会使用自己的版本的工具(如git)。并且(我不知道为什么)Xcode的“快照”功能与git有一些整合。

所以,当我:

  1. 通过安装自制的git的新版本,
  2. 更新的〜/的.gitconfig新push.default选项,
  3. 想在Xcode的创建快照项目

然后我会遇到我上面描述的问题。

这里是我的解决方案:

  1. 变化到Xcode的目录:

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

  2. 重命名Xcode的Git的是这样的:

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

  3. 链接到我自己的git它是通过自制安装:

    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 

这将acctually链接/usr/local/Cellar/git/1.8.0/bin/git(因为我使用git同样的事情1.8.0)

这有点棘手,我必须更新链接,如果我升级自制gi在未来。 Xcode的快照和新的push.default选项确实可以正常工作。

1

那么,你可以尝试用这个答案中提供的方法为Xcode指定另一个.gitconfig文件:How can I specify custom global gitconfig path?

例如,创建〜/ .xcode_home作为新的$ HOME为Xcode的应用程序后,可以使用下面的shell脚本来启动的Xcode:

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

这是不太用户友好的,虽然...任何方式,你可能想要检查这个:Setting environment variables in OS X?。但要注意,全球覆盖$ HOME可能是而不是是个好主意。

+0

但是我没有设置git控制的项目,这很奇怪,对吧? – oppih

+0

我不认为快照功能使用git,但它可能有不同的行为,启用或不启用git。所以我猜Xcode会在拍摄快照之前使用'git'(Xcode自己的git)做一些检查,当git失败时会报告错误。 –

+0

是的,所以我将我自己的git版本链接到XCode中,然后一切顺利。 – oppih