无法使用 Xcode 6.0.1 访问 OS X Server 3.2.1 上的存储库

Posted

技术标签:

【中文标题】无法使用 Xcode 6.0.1 访问 OS X Server 3.2.1 上的存储库【英文标题】:Cannot access repositories on OS X Server 3.2.1 with Xcode 6.0.1 【发布时间】:2014-09-23 12:38:53 【问题描述】:

编辑:OSX Server 版本 4 显然解决了这个问题。

原帖: 我在 OS X 服务器上有一些 git 存储库。之前我可以毫无问题地从远程 Xcode 访问它们。使用 Xcode 6.0.1 升级到 OS X Server 3.2.1 后,我无法再访问它们:

如果我尝试通过首选项/帐户将服务器添加到 Xcode,它会显示

Xcode Server is unavailable 

如果我通过终端使用命令尝试它

git clone <repository path>

它要求输入密码(即它可以访问服务器),然后说

fatal: repository '<repository path>' not found  

这真的很烦人,因为之前一切正常。有什么帮助我可以解决这个问题吗?

编辑 1:

当然,新的 OS X 服务器显示 Xcode/Repositories 下的存储库,所以它们仍然存在...

编辑2:

我刚刚意识到有时(很少)本地 Xcode 和远程 Xcode 都可以找到存储库,并且可以立即访问它们,或者在询问密码后访问它们。很郁闷!

编辑(由于 Dan Hansen 的回答):

我尝试使用 SSH,但失败了:

在远程 OS X 服务器上,我启用了对存储库的 SSH 访问。 在 Xcode 下的 Mac 上,我使用 SSH 添加了远程存储库 协议。这很好用。 然后我尝试在 Xcode 下拉取,并被要求输入密码。后 输入正确的密码,它声称它是错误的。 来自 Xcode 的进一步访问总是给出“no remotes”。 我切换到终端,并发出“git clone”命令。有人问我 输入密码 3 次,然后得到错误“权限被拒绝” (publickey,gssapi-keyex,gssapi-with-mic,keyboard-interactive)“

所以在我看来这是一个授权问题,但我不知道如何解决它。

【问题讨论】:

【参考方案1】:

升级后我遇到了同样的问题,并制定了一个适合我的修复程序。也许它也会对你有所帮助。

我在服务器应用程序的 Xcode 服务下运行了一个 HTTPS GIT 存储库。我用它来同步本地 macbook pro(服务器)上的项目、运行 Win 8.1 的 VM(虚拟机)和运行在另一个 macbook pro(也是 Win 8.1)上的远程 VM。

在两个 macbook pro 上,我使用 Xcode 与 GIT 存储库进行交互。我使用“GIT bash”命令行与 Win 8.1 存储库进行交互。效果很好。

使用 Xcode 6.0.1 升级到 OS X Server 3.2.1 破坏了我的存储库。首先,我遇到了证书问题 - 解决了这些问题后,我开始收到您看到的“致命:存储库 ...未找到”错误。

我研究了这个问题并开始深入研究日志和新服务。我怀疑潜在的问题可能是一个错误的符号链接(日志中有关于 /git 的 ScriptAliases 错误的投诉)但我越深入研究新的目录结构,我看到的越多有点令人费解的野兽,我真的不想开始搞乱符号链接等。似乎是灾难的公式。

对我来说,解决方法是改用 SSH 来引用 repo(而不是 HTTPS)。

所以在远程虚拟机上我做了以下操作:

git 远程 rm 来源

git remote add origin ssh://dhansen@my-server-address/git/my-repo.git

git push -u 原点主控

当然,我必须确保我在“共享”中打开了“远程登录”并正确设置了 ssh,否则它就像一个魅力。

在另一个远程虚拟机上,我不得不做同样的事情。在尝试从远程 Win 8.1 VM 之一推送到第二个 Xcode 服务存储库时,我确实遇到了问题,当它出现错误“远程:错误:将对象添加到存储库数据库的权限不足 ./objects.remote:致命:无法写入对象”

我不得不:

cd /Library/Developer/XcodeServer/HostedRepositories

并更改权限。看起来有些东西现在是 root:_xcs,有些是 root:_www 拥有的。

这解决了最后一个问题。现在这一切又像魅力一样起作用了,我松了一口气,虽然很恼火我不得不花这么多时间来解决它。

正常升级破坏了与存储库的完美 HTTPS 连接,这完全令人烦恼,但对我来说幸运的是,您似乎可以使用 SSH 解决它。

祝你好运!

【讨论】:

感谢您提供非常详细的回答。所以我知道我不是唯一一个,这可能不是我的错。我尝试使用 SSH,但无法解决我的问题。我将相应地编辑我的问题。 您是否能够使用命令行从您的 mac SSH 到该远程计算机?也就是说,你可以从终端 正如我在上面的编辑中提到的,我还尝试使用 git 命令从终端访问服务器,并得到“„Permission denied (publickey,gssapi-keyex,gssapi-with-mic,键盘交互)“”。 我的意思是,您是否能够使用命令行从您的 mac 直接(而不是使用 git)SSH 到该远程计算机?您可以从终端输入“ssh mylogin@remote-system”并登录到远程系统吗?这至少会告诉您是否为您的帐户正确设置了基本的 ssh。你在远程机器上 ssh-keygen 你的 ssh 密钥了吗?当您第一次尝试从命令行 ssh 进入远程机器时,它应该询问或告诉(我忘记是哪个)您的机器正在添加到已知主机。无论如何,如果基本的 ssh 登录不起作用,那可能就是问题所在。 我只是尝试直接ssh。然后我被要求输入密码 3 次,然后我再次收到错误消息“Permission denied (publickey,gssapi-keyex,gssapi-with-mic,keyboard-interactive)。”。【参考方案2】:

也许这会有所帮助。对我来说似乎是 xCode 错误。我没有尝试在帐户选项卡的 xCode 首选项中添加存储库,而是执行了后续步骤(有些可能是不必要的):

1) 转到 xCode Preferences -> Accounts 并删除存在错误的存储库(即使您选择用户名 xCode 删除它似乎也是如此)

2) 转到 Keychain Access 并删除存储库的密钥(如果存在)

3) 转到源代码控制 -> “Your_Project_Name - Your_Branch_Name” -> 配置 Your_Project_Name -> 遥控器。检查是否有你的遥控器,如果没有添加它,你只需要没有登录名和密码的 url。然后转到选项卡分支,xCode 将尝试接收远程分支并询问您的登录名和密码。输入后,存储库已正确添加到我的帐户中,我可以将其用于推送。

【讨论】:

我尝试了您的解决方案,一切正常,直到最后一步:输入密码后,我收到消息“致命:存储库...未找到”。所以密码没问题,但它没有找到该文件,尽管 OSX 服务器在 Xcode/Repositories 选项卡中显示它在那里。

以上是关于无法使用 Xcode 6.0.1 访问 OS X Server 3.2.1 上的存储库的主要内容,如果未能解决你的问题,请参考以下文章

无法使用版本 XCode 7.3.1 和 OS X 10.11.6 将应用程序提交到 iTunes

Xcode 无法添加 Mac OS X 服务器

MobileDevice.pkg 不受信任,在 OS X 更新后无法打开 Xcode

无法使用 OSX Server 3.2.1 在 XCode 6.0.1 中创建 CI Bot

VMware虚拟机Mac OS X无法调整扩展硬盘大小,更新xcode时出现磁盘空间不足

Xcode 5 Cocoa 应用程序无法在 OS X 10.6 上加载 Nib