I think I figured out the problem...

This works:
julia> Pkg.add("WAV")
julia> Pkg.checkout("WAV")
julia> Pkg.pin("WAV")
julia> Pkg.free("WAV")
julia> Pkg.free("WAV")
julia> Pkg.rm("WAV")

My hypothesis: Since the master branch of WAV has changed since the last 
release, the `Pkg.checkout` creates a local Git branch.  The `Pkg.pin` 
creates another (throw-away) local Git branch.  Therefore, two `Pkg.free` 
commands are needed to unlink the two branches.

I find this Julia `Pkg` command behavior unintuitive.  The same `Pkg.free` 
command is expected to undo either a `Pkg.checkout` or a `Pkg.pin`, even 
when both have been executed.  How would users know which one will be 
freed?  Would it be better to have separate `Pkg.unpin` and `Pkg.free` 
commands to resolve this ambiguity?  Has this already been resolved in 
Julia v0.3.7 or v0.4.0?

Reply via email to