OS X Server - bot无法从存储库获取源代码

时间:2014-09-30 16:36:24

标签: ios xcode repository osx-server

我有一个以前版本的OS X Server设置并运行良好,但是当我将升级安装到3.2.1时,我发现我的机器人都没有正常工作。这些是我在每次尝试集成时遇到的问题:

  

构建服务错误无法将数据放入缓冲区(-1)。

     

构建服务警告源控制操作失败,因为找不到工作副本。

     

构建服务警告更新现有结帐时发生错误。回到一个干净的结账..

我可能看错了地方,但我认为这些错误意味着我无法连接到我的Git存储库。当我从Xcode中删除我的存储库并再次运行bot并得到相同的错误时,这部分得到了证实。 (我已经在Xcode中重新添加了存储库并执行了Check Out来测试它,所以我很确定我的所有连接细节都是正确的。)

使用以前版本的OS X Server,我确定我已直接从服务器连接到存储库,如Help > Server Tutorials > Automate Xcode builds中所述:

  

步骤3.授予Xcode服务访问git存储库的权限

     

Xcode服务机器人从源git存储库访问项目和代码。

     

单击“存储库”,然后单击“添加”按钮(+)。从New Repository弹出菜单中选择Connect to a Git Repository。

但是在最新版本中,当您单击“添加”按钮时,您只能选择创建新存储库,而不是连接到现有存储库。网上的说明(现在)说:

  

连接到远程存储库

     

如果您在远程服务器上的Git或Subversion存储库中有项目,则可以在Xcode的“帐户”偏好设置中将您的凭据存储在开发Mac上。然后,当您需要访问存储库时,您不必每次都重新输入凭据。

     

将远程存储库的凭据添加到开发Mac

     

要让Xcode Server对您的项目执行集成,它还必须能够访问其源代码存储库。配置Xcode Server以连接到远程存储库。

     
      
  • 选择Xcode>开发Mac上的首选项。

  •   
  • 单击工具栏中的“帐户”。

  •   
  • 单击“添加”按钮(+),然后选择“添加存储库”。

  •   
  • 在文本字段中,输入存储库的URL(例如,svn + ssh://svn.example.com/ProjectName或https://example.com/git/repository.git),然后单击“下一步”按钮。

  •   
  • 在“帐户”偏好设置的“存储库”窗格中输入您的用户名和密码。

  •   

这有点模糊,但似乎暗示现在OS X Server使用在Xcode的首选项中设置的存储库。

无论如何,现在我的OS X服务器似乎无法访问存储库。我在这里错过了什么吗?

由于

更新

我假装它不存在一个月后又回到了这个问题,并且得出了以下结论:

- OS X Server 3.2.1,OS X Server 3.2.2和OS X Server 4.0在两台不同的计算机上出现问题。

- 当repo在运行Gitblit的服务器上,而不是远程Bitbucket repos,或者在本地OS X Server中托管的Git repo时,会出现问题。

- 问题只发生在较大的回购中。

2 个答案:

答案 0 :(得分:3)

我已经用最容易想象的方式解决了这个问题!

当OS X Server连接到存储库以下载源时,它使用Xcode库。 Xcode使用libgit2进行导致缓冲区错误a known bug的下载。它在v0.21.2中修复,但最新的Xcode(6.1.1)仅使用v0.21。以前的Xcode版本仅使用v0.20,所以希望未来的Xcode版本将使用v0.21.2 +,在这种情况下,这个修复不应该是必要的。

无论如何,Xcode 6.1.1的解决方案是:

  1. 从此处下载并解压缩Xcode使用的gitlib版本:https://github.com/libgit2/libgit2/releases/tag/v0.21.0
  2. 对src / transports / http.c进行更改,详见此处:https://github.com/libgit2/libgit2/commit/7d729d0bfd897e8685099b160b6dbfd7f4ebd588
  3. 保存http.c文件
  4. 使用the instructions here构建您编辑的gitlib2版本,即:

    • 下载CMake
    • 导航到解压缩的libgit2-0.21.0文件夹后,在终端中运行以下命令:

      $ mkdir build&& cd build

      $ cmake ..

      $ cmake --build。

  5. 在Finder 服务器上,转到“应用程序”文件夹,右键单击Xco​​de并选择“#34;显示包内容"”。转到Contents / Developer / usr / lib文件夹并重命名" libgit2.dylib'提交给' libgit2.dylibold'或类似的。

  6. 采取新创建的' libgit2.0.21.0.dylib' libgit2-0.21.0 / build文件夹中的文件,将其重命名为" libgit2.dylib'并将其复制到服务器上的/ Applications / Xcode / Contents / Developer / usr / lib文件夹中。

  7. 重新启动OS X Server,并再次从Xcode集成您的机器人。

答案 1 :(得分:0)

创建机器人时将添加远程存储库。您不必在OSX服务器中添加存储库。