Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flat commit history #138

Open
notriddle opened this issue Apr 5, 2017 · 8 comments

Comments

@notriddle
Copy link
Member

commented Apr 5, 2017

Instead of the "octopus merge" system that bors currently uses, the master branch should end up with a linear progression of commits, one per PR. There are projects that specifically want that.

Given a batch of PRs 1, 2, and 3, the current "octopus merge" based system looks like this:

old master [typically by bors, but not necessarily]
  |        |                     |                |
  |        Something [by user]   Else [by user]   Another [by user]
  |        |                     |                |
  Merge of #1 #2 #3 [committed and authored by bors]

The idea is to produce this history:

old master [typically by bors, but not necessarily]
 |
Something (#1) [committed by bors, "authored" by user]
 |
Something (#2) [committed by bors, "authored" by user]
 |
Something (#3) [committed by bors, "authored" by user]
@kamalmarhubi

This comment has been minimized.

Copy link
Contributor

commented Jan 23, 2018

@notriddle any thoughts on order the PRs should show up in?

@notriddle

This comment has been minimized.

Copy link
Member Author

commented Jan 23, 2018

The order in which they're r+ed, presumably.

@kamalmarhubi

This comment has been minimized.

Copy link
Contributor

commented Jan 23, 2018

Reasonable! Ok, I'll poke around for up to half a day over the next week. This is a blocker for us internally at work.

@kamalmarhubi

This comment has been minimized.

Copy link
Contributor

commented Jan 28, 2018

@notriddle I'm taking a look into this. Is it a hard design choice not to use local git or libgit2 and entirely depend on the github API? They have nothing like the merges API for rebasing. It should be possible via their git data API but would effectively require reimplementing rebase via their API.

@notriddle

This comment has been minimized.

Copy link
Member Author

commented Jan 28, 2018

I'm fine with using local git/libgit2 for this, as long as it's off by default.

@LefterisJP

This comment has been minimized.

Copy link

commented Jun 19, 2018

Hey guys, we would love to use Bors in our project but the lack of a rebase workflow makes it a hard decision at the moment. If a fix to this issue would be implemented it would be really awesome. There has been nothing here since January. Is this feature planned anytime soon or not enough users request it yet?

bors bot added a commit to raiden-network/raiden that referenced this issue Jun 19, 2018

Merge #1594
1594: Add bors.toml r=LefterisJP a=LefterisJP

As per our real life discussion we can test bors -- don't think that the octopus git merge will be really bad for our team due to the amount of people we got, compared to say rustlang.

Regardless they are [working on](bors-ng/bors-ng#138) introducing a flat-commit workflow like we have at the moment so the moment they do we will both have our cake and we will eat it.

For now we can experiment with just having the cake.

P.S.: Not sure if we need to edit travis.yml too, in order to specify branches in our case. The [getting started guide](https://bors.tech/documentation/getting-started/) sounds a bit confusing to me.

Co-authored-by: Lefteris Karapetsas <lefteris@refu.co>
@jeffparsons

This comment has been minimized.

Copy link

commented Jul 10, 2018

Just adding my 2c...

I'm also very interested in this, particularly because having separate merge commits makes it far easier to revert changes if necessary.

For example, we occasionally experience something like this:

  • Bors merges a PR in a batch of 8 others.
  • We discover in production that there's something wrong enough with it that we want to revert all the changes from that one PR immediately, even if it means some very small risk of breaking master.
  • There's no relevant merge commit to revert, so we need to identify and revert a list of individual (non-merge) commits.
  • A bit further down the line when we've fixed the problem properly, we can't simply apply a "revert revert" PR.

It just makes everything around reverting code that much more fiddly and error-prone. Having individual merge commits for each PR would (I believe) solve this problem completely.

I'm more interested in a "complete" history than a "neat" history, so I'm not super-keen on anything that involves rebasing/squashing; I hope that can be optional? 🙏

@kvark

This comment has been minimized.

Copy link

commented Jul 17, 2019

Small heads up that gfx-rs project would want this badly...

bors bot added a commit that referenced this issue Jul 25, 2019

Merge #706 #711
706: Bump mini-css-extract-plugin from 0.7.0 to 0.8.0 in /assets r=notriddle a=dependabot-preview[bot]

Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 0.7.0 to 0.8.0.
<details>
<summary>Release notes</summary>

*Sourced from [mini-css-extract-plugin's releases](https://github.com/webpack-contrib/mini-css-extract-plugin/releases).*

> ## v0.8.0
> ### Features
> 
> * Add ignoreOrder option ([#422](https://github-redirect.dependabot.com/webpack-contrib/mini-css-extract-plugin/issues/422)) ([4ad3373](webpack-contrib/mini-css-extract-plugin@4ad3373))
</details>
<details>
<summary>Changelog</summary>

*Sourced from [mini-css-extract-plugin's changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md).*

> ## [0.8.0](webpack-contrib/mini-css-extract-plugin@v0.7.0...v0.8.0) (2019-07-16)
> 
> 
> ### Features
> 
> * Add ignoreOrder option ([#422](https://github-redirect.dependabot.com/webpack-contrib/mini-css-extract-plugin/issues/422)) ([4ad3373](webpack-contrib/mini-css-extract-plugin@4ad3373))
</details>
<details>
<summary>Commits</summary>

- [`87d929e`](webpack-contrib/mini-css-extract-plugin@87d929e) chore(release): 0.8.0
- [`0bde50d`](webpack-contrib/mini-css-extract-plugin@0bde50d) chore(defaults): update ([#426](https://github-redirect.dependabot.com/webpack-contrib/mini-css-extract-plugin/issues/426))
- [`4ad3373`](webpack-contrib/mini-css-extract-plugin@4ad3373) feat: Add ignoreOrder option ([#422](https://github-redirect.dependabot.com/webpack-contrib/mini-css-extract-plugin/issues/422))
- See full diff in [compare view](webpack-contrib/mini-css-extract-plugin@v0.7.0...v0.8.0)
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=mini-css-extract-plugin&package-manager=npm_and_yarn&previous-version=0.7.0&new-version=0.8.0)](https://dependabot.com/compatibility-score.html?dependency-name=mini-css-extract-plugin&package-manager=npm_and_yarn&previous-version=0.7.0&new-version=0.8.0)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it). To ignore the version in this PR you can just close it
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>

711: Bump oauth2 from 1.0.1 to 2.0.0 r=notriddle a=dependabot-preview[bot]

Bumps [oauth2](https://github.com/scrogson/oauth2) from 1.0.1 to 2.0.0.
<details>
<summary>Release notes</summary>

*Sourced from [oauth2's releases](https://github.com/scrogson/oauth2/releases).*

> ## v2.0.0
> ### Bug fixes (possibly backwards incompatible)
> 
> * Ensure that the OAuth client is authenticated via Authorization header as described in the spec ([#131](https://github-redirect.dependabot.com/scrogson/oauth2/issues/131)).
</details>
<details>
<summary>Changelog</summary>

*Sourced from [oauth2's changelog](https://github.com/scrogson/oauth2/blob/master/CHANGELOG.md).*

> ## v2.0.0 (2019-07-15)
> 
> ### Bug fixes (possibly backwards incompatible)
> 
> - Ensure that the OAuth client is authenticated via Authorization header as
>   described in the spec ([#131](https://github-redirect.dependabot.com/scrogson/oauth2/issues/131)).
</details>
<details>
<summary>Commits</summary>

- [`bef2840`](scrogson/oauth2@bef2840) Prep for 2.0
- [`f13aaf9`](scrogson/oauth2@f13aaf9) Spring cleaning ([#138](https://github-redirect.dependabot.com/scrogson/oauth2/issues/138))
- [`369cca0`](scrogson/oauth2@369cca0) fix body type ([#137](https://github-redirect.dependabot.com/scrogson/oauth2/issues/137))
- [`3549970`](scrogson/oauth2@3549970) Add changelog entry for [#131](https://github-redirect.dependabot.com/scrogson/oauth2/issues/131)
- [`ef5275d`](scrogson/oauth2@ef5275d) Add basic auth to AuthCode.get_token ([#131](https://github-redirect.dependabot.com/scrogson/oauth2/issues/131))
- See full diff in [compare view](scrogson/oauth2@v1.0.1...v2.0.0)
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=oauth2&package-manager=hex&previous-version=1.0.1&new-version=2.0.0)](https://dependabot.com/compatibility-score.html?dependency-name=oauth2&package-manager=hex&previous-version=1.0.1&new-version=2.0.0)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it). To ignore the version in this PR you can just close it
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.