[GHC DevOps Group] Welcome to GitLab!

Matthew Pickering matthewtpickering at gmail.com
Thu Dec 27 11:56:10 UTC 2018


> To ensure that GHC's git history remains linear ghc/ghc will use GitLab's
> "fast-forward without a merge commit" merge strategy.

Are merge requests squashed before they are merged?

It seems that the answer by default is no..
https://gitlab.com/gitlab-org/gitlab-ce/issues/27956

and the reason being that upsteam prefers "Convention over
Configuration"..
https://about.gitlab.com/handbook/product/#convention-over-configuration

However it seems that there is a per-mr option which can be checked if
you are diligent to do it for each MR. Some comments indicate that
it's possible to implement a webhook to change this behaviour.

Matt

On Thu, Dec 27, 2018 at 6:28 AM Ben Gamari <ben at well-typed.com> wrote:
>
> TL;DR. https://gitlab.haskell.org/ghc/ghc.git is now the official
>        upstream GHC repository. Various introductory notes are
>        discussed. Let me know if you have any trouble.
>
>        Also, please do verify the correctness of the email address
>        associated with your Trac account in the next few weeks. It will
>        be used to map users when we transition Trac tickets to GitLab.
>
>
>
> Hello everyone,
>
> I am happy to announce that CI on GHC's GitLab instance [1] is now
> stable. At this point https://gitlab.haskell.org/ghc/ghc.git is to be
> considered the official upstream repository of GHC.
>
> The rest of this email is meant to serve as a brief introduction and
> status update. It can also be viewed on the GitLab Wiki [2].
>
> [1] https://gitlab.haskell.org/
> [2] https://gitlab.haskell.org/ghc/ghc/wikis/welcome
>
>
> # Getting started
>
> To get started on GitLab you will first want to either create a new account
> [1] or login with your GitHub credentials [2].
>
> Once you have an account you should add an SSH key [3] so that you can push
> to your repositories. If you currently have commit rights to GHC notify me
> (Ben Gamari) of your user name so I can grant you similar rights in GitLab.
>
>
> [1] https://gitlab.haskell.org/users/sign_in
> [2] https://gitlab.haskell.org/users/auth/github
> [3] https://gitlab.haskell.org/profile/keys
>
>
> # Updating your development environment
>
> You can updated existing working directory (assuming the usual upstream
> remote name of `origin`) for the new upstream repository location by
> running the following:
>
>     git remote set-url origin https://gitlab.haskell.org/ghc/ghc.git
>     git remote set-url --push origin git at gitlab.haskell.org:ghc/ghc
>
> This is all that should be necessary; a quick `git pull origin master`
> should verify that everything is working as expected.
>
>
> # Continuous integration
>
> Continuous integration is now provided by GitLab's native continuous
> integration infrastructure. We currently test a variety of
> configurations, including many that neither Phabricator nor
> CircleCI/Appveyor previously tested (see [1] for an example run):
>
>  * With the make build system:
>     * x86_64/Linux on Fedora 27, Debian 8, and Debian 9
>     * i386/Linux on Debian 9
>     * aarch64/Linux on Debian 9 (currently broken due to a variety of
>       issues)
>     * x86_64/Windows
>     * x86_64/Darwin
>     * x86_64/Linux on Debian 9 in a few special configurations:
>         * unregisterised (still a bit fragile due to #16085)
>         * integer-simple
>         * building GHC with -fllvm
>  * With Hadrian:
>     * x86_64/Linux on Debian 9
>     * x86_64/Windows (currently broken due to #15950)
>
> We also run a slightly larger set of jobs on a nightly basis. Note that
> binary distributions are saved from most builds and are available for
> download for a few weeks (we may put in place a longer retention policy
> for some builds in the future).
>
> There are admittedly a few kinks that we are still working out,
> particularly in the case of Windows (specifically the long build times
> seen on Windows). If you suspect you are seeing spurious build failures
> do let us know.
>
> To make the best use of our limited computational resources our CI
> builds occur in three stages:
>
>  * lint: the style and correctness checkers which would previously be
>    run by `arc lint` and `git push`
>
>  * build: Debian 9 Linux x86_64 built with make and Hadrian
>
>  * full-build: the remaining configurations
>
> If a build fails at an earlier phase no further phases will be run.
>
>
> [1] https://gitlab.haskell.org/ghc/ghc/pipelines/568
>
>
> # Structuring your merge request
>
> With the transition to GitLab GHC is moving to a model similar to that
> used by GitHub. If you have a Differential on Phabricator we will finish
> review there. However, please post new patches as merge requests on
> GitLab.
>
> Note that Phabricator and GitLab have quite different models for
> handling patches. Under Phabricator a Differential is a single patch
> with no further structure; larger changes can be composed of multiple
> dependent Differentials.
>
> Under GitLab's model a merge request is a git branch consisting of
> one or more patches. Larger changes can be handled in one of two ways:
>
>  a. a set of dependent merge requests, each of which to be squashed when
>     merged.
>
>  b. a single branch with each atomic change made in a single, buildable
>     commit
>
> Due to the difficulty of maintaining dependent merge requests, I would
> recommend that contributors making larger changes use method (b).
>
>
> # Submitting your merge request for review
>
> Depending upon whether you have push rights to the GHC repository there
> are two ways to submit a merge request:
>
>  * if you have push access you can push a branch directly to
>    git at gitlab.haskell.org:ghc/ghc.git and open merge request.
>
>    In this case please do follow the usual branch naming conventions:
>
>      * prefix all branch names with `wip/`
>
>      * if you are fixing a particular ticket consider using the name
>        `wip/TNNNN`
>
>  * if not you can create a fork using the "Fork" button on the project
>    page [1] and push your branch there
>
> In either case after you have pushed your branch open a merge request
> against ghc/ghc [2].
>
> [1] https://gitlab.haskell.org/ghc/ghc/forks/new
> [2] https://gitlab.haskell.org/ghc/ghc/merge_requests/new
>
>
> # Reviewing and merging merge requests
>
> As always, all contributors are encouraged to help review proposed
> changes. If you are unfamiliar with GitLab's review interface please see
> GitLab's user documentation [1]. Here are a few quick highlights for
> those who are familiar with GitHub but haven't yet used GitLab:
>
>  * As with GitHub, GitLab supports both inline and out-of-line comments.
>
>  * Comments that are actionable (known as "discussions") can be marked
>    as resolved and collapsed.
>
>  * Comments can be left on both changed and unchanged lines
>
>  * Revisions of a merge request can be viewed and compared using the
>    two drop-down menus at the top of the Changes tab
>
>  * Merge requests can require approvals from particular users before
>    considered as mergable
>
>  * Merge requests can be placed in "merge when CI passes" state, which
>    will cause merge requests to be merged as soon as they are green
>
> From this point onward all changes to GHC will be merged via
> GitLab's merge requests facility and must pass CI before being merged.
> To ensure that GHC's git history remains linear ghc/ghc will use GitLab's
> "fast-forward without a merge commit" merge strategy. Consequently you
> will be asked to rebase merge requests which are not fast-forward merges
> before merging (a convenient "Rebase" button will appear if the rebase
> can be carried out without conflicts.
>
> [1] https://gitlab.com/help/user/discussions/index.md#discussions
>
>
> # Status of the Trac migration
>
> Tobias will be continuing work on the Trac ticket migration after a bit
> of a holiday break. Hopefully by mid-January we will be able to move
> forward on this part of the migration; I will share more details about
> this as they develop.
>
> In the meantime, users of Trac should check and possibly update the
> email address associated with their account [1].  This address will be
> used to correlate Trac users with their GitLab equivalents so the
> correctness of this address will be important in preserving attribution
> information during the Trac import.
>
> [1] https://ghc.haskell.org/trac/ghc/prefs
>
>
> # Next steps
>
> We are actively working on cleaning up a few remaining issues with CI:
>
>  * build times are still very long on Windows, despite the fact that we
>    are only building the `quick` build flavour on that platform;
>    consequently GitLab CI Windows builds do sometimes timeout
>    when we are faced with long build queues.
>
>  * we at times run low on disk space on our Windows builder runners,
>    resulting in occasional spurious build failures
>
>  * Appveyor builds (which are supposed to supplement the native GitLab
>    builds) rarely seem to finish
>
> GitLab upstream has been incredibly supportive of our transition effort
> and has expressed interest in assisting us with issues that we
> encounter. Our current requests can be found on our migration effort's
> tracking ticket [1]. If you find any additional bugs or workflows that
> could be improved please do let me know and I can raise the matter with
> GitLab.
>
> [1] https://gitlab.com/gitlab-org/gitlab-ce/issues/55039
>
>
> # Acknowledgments
>
> I would like to acknowledge several parties for their contributions to
> this effort:
>
>  * Packet.net and Google X for their generous donation of hosting for
>    continuous integration and web hosting
>
>  * GitLab and their Open Source program for many productive discussions,
>    their generous support, and the GitLab Ultimate license used by
>    gitlab.haskell.org.
>
>  * Davean Scies for his help procuring the hosting services that power
>    our continuous integration.
>
>  * Tweag.io for their offer of help and advice
>
>  * Matthew Pickering, Alp Mestangullari, Tobias Dammers for their work
>    in setting up the new instance, sorting out the details of the
>    migration, and debugging problems when they arose
>
> Finally, thanks to GHC's contributors for their patience during this
> transition; it has been a long process which has stolen a significant
> amount of attention from other matters. My apologies we have been a bit
> less responsive than usual in code review and ticket triage over the
> past month or two. Regardless, I am hopeful that this wait will be
> worthwhile.
>
>
> # Final thoughts
>
> This is not only a milestone for the GitLab migration but also for GHC
> itself. For the first time GHC has fully-automated testing, proposed
> patch CI, and release generation across the full range of Tier 1
> configurations it supports, with passing builds in all cases.
>
> We are very excited to begin this next chapter of GHC's development and
> are looking forward to your feedback on how we can further improve our
> new infrastructure. Onward and upwards!
>
> Cheers,
>
> - Ben
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


More information about the Ghc-devops-group mailing list