When we blast off again, we check out a commit so the current branch ends up being incorrect and is HEAD rather than X-Y-Z. This therefore no longer just runs git rev-parse --abbrev-ref HEAD; it instead checks to ensure that the result of that call matches the release branch pattern. If it doesn't, it fetches the containing branch for the commit.
Since we only ever blast off from bump commits, we can safely assume that only one release branch will ever contain the bump commit and therefore be the one we want to use when tagging the release on npm.
Legacy print statements are syntax errors in Python 3 but print() function works as expected in both Python 2 and Python 3.
Old style exceptions are syntax errors in Python 3 but new style exceptions work as expected in both Python 2 and Python 3.
* build: unify YARN_VERSION variable usage and ensure CI uses yarn not npm
* chore: use a JS helper so that it can work on windows
* chore: make script/yarn without node_modules installed
* refactor: bundle the browser and renderer process electron code
* Bundles browser/init and renderer/init
* Improves load performance of main process by ~40%
* Improves load performance of renderer process by ~30%
* Prevents users from importing our "requiring" our internal logic such
as ipc-main-internal. This makes those message buses safer as they are
less accessible, there is still some more work to be done though to lock
down those buses completely.
* The electron.asar file now only contains 2 files, as a future
improvement maybe we can use atom_natives to ship these two files
embedded in the binary
* This also removes our dependency on browserify which had some strange
edge cases that caused us to have to hack around require-order and
stopped us using certain ES6/7 features we should have been able to use
(async / await in some files in the sandboxed renderer init script)
TLDR: Things are faster and better :)
* fix: I really do not want to talk about it
* chore: add performance improvements from debugging
* fix: resolve the provided path so webpack thinks it is absolute
* chore: fixup per PR review
* fix: use webpacks ProvidePlugin to keep global, process and Buffer alive after deletion from global scope for use in internal code
* fix: bundle worker/init as well to make node-in-workers work
* chore: update wording as per feedback
* chore: make the timers hack work when yarn is not used
* build: ensure consistent package-lock across multiple machines
* build: fix linting errors and use npm ci instead of npm install
* build: use a yarn.lock and yarn instead of package-lock and npm
* chore: replace package-lock.json files with yarn.lock
* chore: replace last instance of `npm install`
* build: optimize the happy path when syncing on CI
This adds a new cache for the "src" directory that is only ever used if
the cache key matches exactly. If there is no exact match we fall back
to the old strategy of using the git cache.
On the happy path this can make the checkout on linux/macOS take around
5-6 minutes which is **significantly** faster than the original 15-18
minutes.
* build: sort readdir result to ensure stability
* build: increment cache key
* Update config.yml
* build: ensure that the cleanly checked out Electron has had hooks run on it
* build: do not remove deps/v8
* build: ensure clean git directory when generating deps hash
* chore: add comments to caching logic
* Update .circleci/config.yml
Co-Authored-By: MarshallOfSound <samuel.r.attard@gmail.com>
* spec: add tests for the autoUpdater on macOS that actually test if it works
* spec: add express as dep
* spec: add logic to auto-trust self-signed certificate and not run autoupdate specs on MAS
* build: fix the step name for importing the codesign cert
* chore: update updater spec PR as per feedback
* fix: s/atomBinding/electronBinding
* build: use spawn instead of exec
On windows removeSync randomly seems to fail with DIRNOTEMPTY. By using
the async version fs-extra will do some back-off-retry logic to
hopefully get this dir deleted
* build: upgrade asar to ^1.0.0
This is to remove a transitive security vulnerability.
The API changed from callbacks to Promises, so `script/gn-asar.js`
needed to be changed.
* build: add klaw to package.json
`klaw` is used in `script/lint.js`, but it was a transitive dependency.
* build: add fs-extra to package.json
`fs-extra` is used in `script/gn-asar.js`, but it was a transitive
dependency.
* refactor: remove js2asar.py and port logic to JS in more readable / GN-style way
* refactor: further clean up ASAR impl, add new node_action GN template
* fix: Note detection in PR
* fix: 'BREAKING CHANGE' detection in PR body
* fix: when to include PRs that landed in other branches too
* fix: when available, use clerk's notes
* Update timeout for native_mksnapshot and use bigger machines
* Revert "build: temporarily disable arm to unblock nightlies (#16479)"
This reverts commit 51961fccfa.
* fix: use version name in release notes
* fix: omit previously-released notes
* fix: sniff semantic commit types from PR subjects
instead of only from commit messages
* fix: do not use unrecognized semantic commit types
* chore: do not hardcode Release-Notes comment text
It used to be '<!-- One-line Change Summary Here-->',
it's currently a link to a best-practices page, and
it'll probably change again in the future. Let's just
match on <!--.*--> instead.
* chore: copyedit the help page
* chore: use clerk's OMIT_FROM_RELEASE_NOTES_KEYS
* chore: tweak comments
* chore: rename 'breaks' property as 'breaking'
* fix: use PR 'Notes' comment in release notes
* fix: follow links in roller-bot PRs
* refactor: better reference point version selection
* if we're a stable release, use the current brnach's previous stable
* if we're a beta release, use the current branch's previous beta
* if no match found, use the newest stable that precedes this branch
* refactor: dedup the caching functions' code
* refactor: partially rewrite release note generator
* parse release notes comments from PRs
* do not display no-notes PRs
* handle roller-bot commits by following cross-repo commits/PRs
* minor tweaks to note rendering, e.g. capitalization
* fix: fix lint:js script typo
* fix: copy originalPr value to rollerbot PR chains
* fix: handle more cases in release notes generator
* handle force-pushes where no PR
* better type guessing on pre-semantic commits
* fix: handle more edge cases in the note generator
* better removal of commits that landed before the reference point
* ensure '<!-- One-line Change Summary Here-->' is removed from notes
* handle more legacy commit body notes e.g. "Chore(docs)"
* check for fix markdown in PR body e.g. a link to the issue page
* chore: tweak code comments
* refactor: easier note generator command-line args
* refactor: group related notes together
* feat: query commits locally for gyp and gn deps
* chore: slightly better filtering of old commits
* feat: omit submodule commits for .0.0 releases
More specifically, only include them if generating release
notes relative to another release on the same branch.
Before that first release, there's just too much churn.
* refactor: make release-notes usable as a module
Calling it from the command line and from require()() now
do pretty much the same thing.
* refactor: passing command-line args means use HEAD
* chore: plug in the release note generator
* feat: support multiline 'Notes:' messages.
xref: https://github.com/electron/trop/pull/56
xref: https://github.com/electron/clerk/pull/16
* remove accidental change in package.json
* simplify an overcomplicated require() call
* Don't use PascalCase on releaseNotesGenerator()
* Remove code duplication in release notes warnings
* remove commented-out code.
* don't use single-character variable names.
For example, use 'tag' instead of 't'. The latter was being
used for map/filter arrow function args.
* Look for 'backport' rather than 'ackport'.
* Wrap all block statements in curly braces.
* fix tyop
* fix oops
* Check semver validity before calling semver.sort()
* test: add an option to native tests runner to run also disabled tests
* ci: run all native tests on clean Chromium
* ci: update the disabled tests list for native unittests
* ci: run unittests on clean Chromium
* test: add '--run-only-disabled-tests' flag to "script/native-tests.py"
* ci: add a job to run only disabled unittests
* test: use a different GN config for the native tests
* test: enable blink_common_unittests
* test: disable WeakPtrDeathTest*
* feat: convenience to apply all formatter patches
run-clang-format.py can create multiple patchfiles.
This change prints a command that can be pasted into
a shell to apply all of them together.
* feat: put all generated style diffs in one file
This way it will be easier to `git apply` fixes to multiple
fixed files at once.