
On Fri, 2 Nov 2018 at 08:59, Herbert Valerio Riedel
On 2018-11-02 at 08:13:37 +0000, Simon Marlow wrote:
I suppose we can do a squash-merge when committing to keep the history clean, but then contributors have a choice - either do GitHub-style where you add commits to a PR to update it and we squash on merge, OR Phabricator-style where you keep the same set of commits and rebase the stack to update it. [..]
Well, if MRs are to be squashed on merge anyway, I'm definitely not going to waste my time carefully grooming a stack of atomic individually validating commits via git-rebase-interactive...
This shouldn't be a problem. One can easily configure a project such
Sorry I wasn't very clear. We would *only* squash if the author had been using the workflow where they add commits to revise the MR. If the author wants to use the stacked-diff-like workflow where they keep a groomed set of commits in the MR, then we would rebase and fast-forward the MR. My concern here is that we have two different workflows. People used to GitHub would want to use one, and people used to Phabricator would want to use the other. We have to check which workflow people are using so that we can decide whether to squash on merge or not. Ben said: that users are *only* allowed to fast-forward/rebase, disallowing the creation of merge commits. but that doesn't fully address the problem, because the series of commits that would get rebased onto master would include all the commits added to the MR to update it during the review process. Actually what we wanted to do in this case was squash, not rebase+fast-forward. If there was a nice way to guide people into using the Phabricator-style workflow, I think that would help a lot. Cheers Simon
If you want to do dependent commits then you have to use Phabricator style. Choices between workflows make things more complicated for contributors, and that worries me.
...submitting a stacked set of commits as invidual overlapping MRs (i.e. where the first MR has only the first commit, the 2nd has the first two commits from the stack, and so on) -- if that's what you're referring to as "Phabricator-style" -- sounds like an awkward workflow to me.
Does GitLab keep the history of a PR after it has been updated, like in Phabricator? So we can see what happened between versions of a PR?
I wonder too how this is represented in GitLab... especially when a MR is comprised of multiple commits, and those individual commits evolve, might get reordered, commits added or removed fromt he stack, or when the whole MR gets rebased in the process... _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs