A reminder that a huge added bonus is that going through PRs gives us
thechance to setup automated CI builds, which would allow us to know if we
are breaking linux building or such, *before *we merge.

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

> With two votes in favor of a Pull Request policy and no objections here
> or on IRC, I'm going to restrict our GitHub to only allow contributions
> to the "master" branch using Pull Requests. Although Pull Requests of
> trusted committers won't require a review beforehand. Nevertheless, you
> are encouraged to do that for bigger changes.
>
> This is your last chance to object!
> I know that enforcing Pull Requests adds another step until your code
> makes it into master. On the other hand, they pave the way for frequent
> code reviews and ensure a cleaner master branch.
>
> Finally, don't forget that you will most likely work in your own
> branches anyway. These come without any restrictions and give you
> independence from other people's changes to master. You can even modify
> your own commits after pushing.
> Hopefully, this fosters the "commit early, commit often" idea and losing
> code in working copies on broken HDDs becomes a thing of the past.
>
> Cheers,
>
> Colin
>
>
> Am 14.09.2017 um 19:07 schrieb Thomas Faber:
> > I'm wary of opening up pushing to master. If we really want a linear
> > history, it should be enforced. Accidents with version control happen
> > all the time (when was the last time the SVN pre-commit hook stopped you
> > from committing because you forgot to set eol-style?).
> >
> > I wouldn't mind forcing the use of pull requests, assuming we can set it
> > up so that merge is allowed with no reviews (those would be recommended,
> > but enforcing them seems too much).
> >
> > Though I'm also okay with giving up the linear history idea altogether,
> > or hosting the repo elsewhere (e.g. we could host a Bitbucket instance).
> >
> >
> > On 2017-09-14 17:48, David Quintana (gigaherz) wrote:
> >> 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
>
_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to