Search code examples
objective-cxcodegitosx-serverbuild-server

Xcode Build server. Git operation failed


I've got an error on my Build server. It looks like this:

Bot Issue for My OSX Project (build service error)

Integration #1300 of My OSX Project

Open in Xcode: xcbot://xwserver/botID/d127cd23bd4cee1081dfcc192904a85b/integrationID/699d47fa9105419469cca90c6a2a7286

Assertion: Could not open '/Library/Developer/XcodeServer/Integrations/Caches/d127cd23bd4cee1081dfcc192904a85b/Source/xwrtrunk/.git/logs/refs/remotes/origin/AnotherProjectFolderName'

for writing: Is a directory (-1) File: (null):(null)

Introduced 5 integrations ago

Full logs for this integration are attached.

When I changed git repo, everything was great. but with this git repo it always fail. And I don't know what I must do. And even no ideas.

What did we do:

  • Cut checkouted repo on build server
  • Checked file system using disc utilities.

P.S. Any way thanks for attention.


Solution

  • Whenever a repo is problematic with XCode, the first workaround is to:

    • clone it again.
    • Make XCode reference the newly cloned repo

    The OP ZevsVU (doing just that) adds in the comments:

    We got this problem when I created a branch folder which name was equal to folder name in the repo.
    We just deleted this branch and everything is great at the moment.


    Another instance of a similar issue is now (Q4 2021) better presented:

    See commit 66e905b, commit a7439d0 (25 Aug 2021) by René Scharfe (rscharfe).
    (Merged by Junio C Hamano -- gitster -- in commit 7b06222, 08 Sep 2021)

    xopen: explicitly report creation failures

    Signed-off-by: René Scharfe

    If the flags O_CREAT and O_EXCL are both given then open(2) is supposed to create the file and error out if it already exists.
    The error message in that case looks like this:

    fatal: could not open 'foo' for writing: File exists
    

    Without further context this is confusing: Why should the existence of the file pose a problem? Isn't that a requirement for writing to it?

    Add a more specific error message for that case to tell the user that we actually don't expect the file to preexist, so the example becomes:

    fatal: unable to create 'foo': File exists