无法使用 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
MobileDevice.pkg 不受信任,在 OS X 更新后无法打开 Xcode
无法使用 OSX Server 3.2.1 在 XCode 6.0.1 中创建 CI Bot