I vote for recommending devs to use pull requests, and to make it a
semi-strict policy that devs who push directly to master should ALWAYS make
sure to pull and rebase before pushing.

I myself intend on almost exclusively contribute through pull requests.
This means:

   1. I'll push to my own fork, and work backed by the fork
   2. When I'm done doing something, I will use the pull request feature,
   rather than "git push upstream/master"
   3. If the changes are non-trivial, I'll ask for a second opinion from
   some other developer
   4. I'll push "merge with rebase" myself, but only when I feel the
   changes are "sufficiently approved"

I would vote for using such a workflow as a primary way of contributing,
since it avoids all sorts of issues, and has the added benefit of the
automatic "merge with rebase".

On 14 September 2017 at 17:23, Colin Finck <co...@reactos.org> wrote:

> Hi all!
>
> After playing around with GitHub's features in
> https://github.com/colinfinck/sandbox for the last few days, it turns
> out that its server-side settings hardly prevent repository mess.
>
> Although I have set master to be a "protected branch" and enabled the
> option "Require branches to be up to date before merging", it allows me
> to push just everything that doesn't rewrite history. This includes any
> kind of merge commits, even the nasty automatic merges that occur when
> you commit to your outdated local master and then do the requested "git
> pull" before pushing.
> GitHub Staff confirmed to me that GitHub has no way of enforcing a
> rebase-only workflow. For a self-hosted Git, a simple pre-receive hook
> like https://stackoverflow.com/a/5493549 would do the trick.
>
> The only other option GitHub offers is requiring each commit to go to a
> branch. Changes to master can only happen through an approved Pull
> Request then. This would drastically change our workflow though, and I
> don't think we want this additional burden for every minor change.
>
> Before we now reverse our decision for a GitHub master repo, let's
> verify that a self-hosted Git repo with an enforced rebase-only workflow
> is really what we want:
>
> - It would ensure a linear history in the "master" branch, just like
> WINE has. If you sort by "Commit Date" instead of "Author Date", the
> history would even be chronological.
> - When contributing changes from a branch back to "master" using "git
> rebase", every single commit is reapplied with a new hash. Except for
> the author dates, these commits have no link to the original branch.
> - Without GitHub as the master repo, we would lose the ability to merge
> Pull Requests directly from the website. That would sooner or later turn
> the entire Pull Request feature of GitHub useless for us.
> Contrary to what people told me, GitHub doesn't detect when you merge
> the Pull Request locally and push these changes back to GitHub.
>
>
> On the other hand, what would an unrestricted GitHub provide us:
>
> - Discussing, improving, and later merging Pull Requests directly on the
> website. Merging, squash merging, and rebase merging is supported. Not
> just for our own branches, but also for forks of the ReactOS repo.
> - Our history graph in the "master" branch will inevitably become a
> stream of parallel lines, making it harder to follow the history
> chronologically. Worst-case example is the Linux kernel:
> http://fs5.directupload.net/images/170914/h5pddxx7.png
> (ok, admittedly gitk renders this graph a bit nicer)
>
> Allowing merges used to be an even bigger problem when we still wanted a
> linear history to replicate SVN revision numbers. But we now replaced
> revision numbers by the output of "git describe". So maybe merge commits
> are ok now?
> At least, we should be able to prevent automatic merge commits by
> instructing every committer to use "git fetch && git rebase origin"
> instead of "git pull" when syncing with the server. A nicely written and
> illustrated (Tortoise)Git guide on the Wiki should do the job :)
>
>
> I tend to favor the second option right now and allow merges, but I
> definitely need more input on this from you.
>
>
> Best regards,
>
> Colin
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev@reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev
_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to