Carthage
Carthage copied to clipboard
Carthage fails if dependency changes a tag
- 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.
Yup, git
errors in this case and Carthage doesn't handle it.
We have hit the same problem also with 0.33.0
. In our case it was happening in this situation:
- We have a fork of a dependency.
- Some tag (e.g.
0.1.2
) was present in both original repo and our fork - 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
.
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
Delete the cache as per this recommendation from another repository. https://github.com/ashleymills/Reachability.swift/issues/340 Confirmed for me.