There are plenty of IO operations inside Tap object, and it will be more
when implementing formula alias reverse look up(e.g. list all of alias
names for a formula). So let's cache them.
Some benchmark:
$ time brew info $(brew ruby -e 'puts Formula.tap_names') > /dev/null
Before: 6.40s user 2.42s system 96% cpu 9.134 total
After: 4.75s user 0.77s system 97% cpu 5.637 total
ClosesHomebrew/homebrew#44377.
Signed-off-by: Xu Cheng <xucheng@me.com>
When a PR is merged during the test, the commit tree will be looked like
this:
master PR
\ /
\ /
|
root
The start_revision will be poined to the commit used to merging PR,
instead of common root commit. As result, `git diff-tree start end`
will list file changes both in PR and master branch, which later
contributes to additional formulae are tested in some Travis builds.
To fix the problem, we use `git merge-base` to get common ancestor as
the real start_revision.
ClosesHomebrew/homebrew#44379.
Signed-off-by: Xu Cheng <xucheng@me.com>
If a PR is edited(e.g. force pushed) during the build.
TRAVIS_COMMIT will be lost. Refetching the merge ref wouldn't
help this situation as well. Since Travis already have reset
$TRAVIS_BUILD_DIR to the commit we need to test, let's use it to
determine TRAVIS_COMMIT directly.
Ref: https://github.com/travis-ci/travis-ci/issues/2666
We previously set `ignore_deps?` as true for DependencyInstaller to
avoid duplicated dependencies resolution. (See a9fc82aea30506eeacbddeb8b53fb85de8acb9d4)
However, this will cause problem when pouring bottle of a dependency is
failed. In this case, it will try to build dependency from source but
failed due to uninstalled build deps for this formula.
Another disadvantage for using `ignore_deps?` hack is we cannot
distinguish users passing `--ignore-dependencies` flag from we are in
`DependencyInstaller`.
So, let's differentiate these using `skip_deps_check?`
When there's absolute symlinks in a linked directory in the `keg`
(e.g. `bin`)that point to the `Cellar` or `opt` then linking the `keg`
will fail before the `Cellar` or `opt` has been linked.
ClosesHomebrew/homebrew#44306.
ClosesHomebrew/homebrew#44329.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
`brew bottle --verbose` outputs all the matches for a string found
in the files inside the Cellar. Instead of outputting all of these just
output the first 100.
ClosesHomebrew/homebrew#44266.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
IO#gets will only return for every new lines, which will be bad for
`brew install` since we print dots in single line.
ClosesHomebrew/homebrew#44264.
Signed-off-by: Xu Cheng <xucheng@me.com>
The default is almost never useful. 15 seems like a good medium as it'll
not fill a 80x24 default but provides a bit more context. Also allow it
to be overriden for developers and `test-bot`.
Commit a71d4a9b (PR Homebrew/homebrew#44058) brought support for updating repositories
with a default branch different from master. This fixes the tests broken
by that commit.
ClosesHomebrew/homebrew#44135.
Signed-off-by: Dominyk Tiller <dominyktiller@gmail.com>
* Only use first two word in command to keep id short
* Append unique number in the id.
ClosesHomebrew/homebrew#44104.
Signed-off-by: Xu Cheng <xucheng@me.com>