Rationale: Let's not have duplicate-names. Insisting on only one directory lets the filesystem enforce this unique-naming criteria for us.
We special-case adamv/alt for now, until we remove it.
Note I removed some of the code that changed the URL to be that of the github.user. Because this doesn't make any sense really. We want people to reference the commit history for whatever fork of homebrew they have checked out. So this is now what it does.
Rationale: well, it should always have been like this!
However now we are opening ourselves up to more-mixed installations of formula not maintained by us, it's important that
The reason it didn't work is it doesn't use ARGV.formulae because it needs to be able to edit stuff that doesn't parse. Most other stuff already works because we are awesome.
The symlinks taps write to Formula show up in git status, but this trick prevents this. brew-(un)tap maintain a .gitignore in Formula that contains all the symlinks brew-tap creates.
We add the .gitignore to the root .gitignore and TADA! Magic.
I wanted to make it possible to not do the additional newline (in brew) if this code path is hit. But I didn't see a way to do it without overriding the Interrupt exception and throwing a new one.
“Never add more code than necessary for aesthetics in error handling.” — mxcl
Except for keg-only reps of course.
I suspect quite a few bug reports we receive are due to this sort of thing.
Ideally we'd not do this check for deps, since they have already been checked. I fear some weird consequences. But this check *should* be done before unlinking the previously installed brew in the case of upgrades. And the ignore_deps flag is set after the initialiser. There are ways round this but the code would be less nice.
Commit ee2c3ab ("Remove spurious libiconv dependencies") pruned all
existing "depends_on 'libiconv'" usages from Homebrew in preparation for
removing the libiconv dupe itself.
Now that is done, and we can remove and blacklist it. It can be obtained
from Homebrew-alt.
ClosesHomebrew/homebrew#10464.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
We don't penalise existing users; if ~/Library/Caches/Homebrew already exists and is writable, we select that.
This is the correct choice, the cache should be the same directory whichever user is used and whatever instance of brew is invoked.
The Cache directory is set to 0777 this allows any user to write to it and fixesHomebrew/homebrew#10857.
ed1a674c ("keg: allow selective linking at the file level") had a
regression which caused the link step to skip files with the same name
as a directory in the user's CWD.
Keg#link_dir yields a relative pathname, so assumptions cannot be made
about the nature of that pathname in the block.
Instead, introduce ":skip_dir" and ":skip_file" to replace the existing
":skip" directive. This way, we won't skip things marked ":skip_dir"
when linking a file, and vice-versa.
FixesHomebrew/homebrew#10860.
Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Homebrew itself is found under HOMEBREW_REPOSITORY,
which *may* be the same HOMEBREW_PREFIX, but does not have
to be if you link brew into /usr/local/bin from another location.