Carthage icon indicating copy to clipboard operation
Carthage copied to clipboard

Carthage fails if dependency changes a tag

Open silverhammermba opened this issue 5 years ago • 4 comments

  • carthage install method: homebrew
  • which carthage: /usr/local/bin/carthage
  • carthage version: 0.33.0
  • xcodebuild -version: Xcode 10.2.1, Build version 10E1001
  • Are you using --no-build? no
  • Are you using --no-use-binaries? no
  • Are you using --use-submodules? no
  • Are you using --cache-builds? yes
  • Are you using --new-resolver? no

Cartfile

github "instacart/TrueTime.swift"

I'm running /usr/local/bin/carthage outdated --xcode-warnings as part of our build process. Unfortunately this command started failing, which causes our build to fail.

Carthage Output

*** Fetching TrueTime.swift
A shell task (/usr/bin/env git fetch --prune --quiet https://github.com/instacart/TrueTime.swift.git refs/tags/*:refs/tags/* +refs/heads/*:refs/heads/* (launched in /Users/manselm/Library/Caches/org.carthage.CarthageKit/dependencies/TrueTime.swift)) failed with exit code 1

Running the git command to see what's wrong, it looks like the TrueTime folks did something weird with a tag

/usr/bin/env git fetch --prune https://github.com/instacart/TrueTime.swift.git refs/tags/*:refs/tags/* +refs/heads/*:refs/heads/*
From https://github.com/instacart/TrueTime.swift
 ! [rejected]        5.0.1      -> 5.0.1  (would clobber existing tag)

Expected output

Carthage's cache was out of date. It should be able to detect this and refresh its own cache, not fail.

silverhammermba avatar May 13 '19 17:05 silverhammermba

Yup, git errors in this case and Carthage doesn't handle it.

mdiep avatar May 14 '19 12:05 mdiep

We have hit the same problem also with 0.33.0. In our case it was happening in this situation:

  1. We have a fork of a dependency.
  2. Some tag (e.g. 0.1.2) was present in both original repo and our fork
  3. The tags in main repo and fork point to different commits.

The issue happens when checkout in the ~/Library/Caches/org.carthage.CarthageKit/dependencies/foobar is from a different repository than what is specified in Cartfile.

vytis avatar May 20 '19 12:05 vytis

I've changed our build script to /usr/local/bin/carthage outdated --xcode-warnings || echo "warning: failed to check for outdated Carthage dependencies" because it should really never fail our build. It would still be nice if the outdated action essentially did the same thing internally or had the option to do so

silverhammermba avatar May 28 '19 15:05 silverhammermba

Delete the cache as per this recommendation from another repository. https://github.com/ashleymills/Reachability.swift/issues/340 Confirmed for me.

gameprogrammingsteven avatar Oct 07 '19 21:10 gameprogrammingsteven