Dmitriy Zaporozhets 5ef196621e Merge branch 'better-mr-instructions' into 'master'
Better merge request manual instructions

I noticed the current instructions for manually merging a merge request that was submitted from a fork could create unnecessary merge requests or strange history. Imagine this:

1. Alice creates a repository and commits / pushes a single commit with SHA1 `A` to `master`.
2. Bob forks this repository and creates a new branch `myfeature` on `master` (`A`)
3. Alice commits `B` to `master` (which has the parent `A`)
4. Bob creates two commits on `myfeature` `P` and `Q`.
5. Bob submits the merge request to merge his `myfeature` into Alice's `master` branch.
6. Alice follows the manual merge request instructions:
  1. `git checkout -b bob/repo-myfeature master`
  2. `git pull http://... myfeature`

The branch `bob/repo-myfeature` was created from Alice's current `master`, which was `B`. When the `pull` is executed, git will fetch Bob's branch and then merged the fetched branch `Q` into the current branch's location `B`. This creates an unnecessary merge commit from `master` into the branch Alice is trying to merge. No harm is done, but the history is a bit messier.

This is even worse if Alice has set `git pull` to rebase by default. In this case, the commit `B` is rebased on top of `Q`. When Alice checks out `master` and merges in the branch, there will actually be a duplicate `B` commit.

These new instructions instead tell the user to fetch Bob's `myfeature` branch. This will fetch the necessary commits `P` and `Q` and create a temporary ref `FETCH_HEAD` pointing to `Q`. Alice will then create her local `bob/repo-myfeature` branch starting at `FETCH_HEAD`. No unnecessary merge commits, and no accidental rebasing.

See merge request !16
2014-11-10 19:39:25 +00:00
2014-09-10 15:28:58 +02:00
2011-10-09 00:36:38 +03:00
2012-01-08 13:20:20 +02:00
2014-10-15 20:03:25 +03:00
2014-07-16 09:38:42 +03:00
2014-03-24 08:55:27 -04:00
2013-01-07 22:23:13 +02:00
2014-06-17 11:21:49 +03:00
2014-11-09 03:37:56 -08:00
2014-10-16 12:16:18 +00:00
2014-05-23 15:01:02 +02:00
2014-09-10 15:28:58 +02:00
2011-10-09 00:36:38 +03:00
2014-10-23 11:11:53 +02:00
2014-11-10 16:09:41 +02:00

logo GitLab

Open source software to collaborate on code

Animated screenshots

  • Manage Git repositories with fine grained access controls that keep your code secure
  • Perform code reviews and enhance collaboration with merge requests
  • Each project can also have an issue tracker and a wiki
  • Used by more than 100,000 organizations, GitLab is the most popular solution to manage Git repositories on-premises
  • Completely free and open source (MIT Expat license)
  • Powered by Ruby on Rails

Canonical source

Code status

  • build status on ci.gitlab.org (master branch)

  • Build Status

  • Code Climate

  • Coverage Status

  • PullReview stats

Website

On about.gitlab.com you can find more information about:

Requirements

  • Ubuntu/Debian/CentOS/RHEL**
  • ruby 2.0+
  • git 1.7.10+
  • redis 2.0+
  • MySQL or PostgreSQL

** More details are in the requirements doc.

Installation

Please see the installation page on the GitLab website for the various options. Since a manual installation is a lot of work and error prone we strongly recommend the fast and reliable Omnibus package installation (deb/rpm).

Third-party applications

There are a lot of applications and API wrappers for GitLab. Find them on our website.

New versions

Since 2011 a minor or major version of GitLab is released on the 22nd of every month. Patch and security releases come out when needed. New features are detailed on the blog and in the changelog. For more information about the release process see the release documentation. Features that will likely be in the next releases can be found on the feature request forum with the status started and completed.

Upgrading

For updating the the Omnibus installation please see the update documentation. For manual installations there is an upgrader script and there are upgrade guides.

Run in production mode

The Installation guide contains instructions on how to download an init script and run it automatically on boot. You can also start the init script manually:

sudo service gitlab start

or by directly calling the script:

 sudo /etc/init.d/gitlab start

Please login with root / 5iveL!fe

Install a development environment

We recommend setting up your development environment with the GitLab Development Kit. If you do not use the development kit you might need to copy the example development unicorn configuration file

cp config/unicorn.rb.example.development config/unicorn.rb

Run in development mode

Start it with Foreman

bundle exec foreman start -p 3000

or start each component separately:

bundle exec rails s
bin/background_jobs start

And surf to localhost:3000 and login with root / 5iveL!fe.

Run the tests

  • Run all tests:

    bundle exec rake test
    
  • RSpec unit and functional tests.

    All RSpec tests: bundle exec rake spec

    Single RSpec file: bundle exec rspec spec/controllers/commit_controller_spec.rb

  • Spinach integration tests.

    All Spinach tests: bundle exec rake spinach

    Single Spinach test: bundle exec spinach features/project/issues/milestones.feature

Documentation

All documentation can be found on doc.gitlab.com/ce/.

Getting help

Please see Getting help for GitLab on our website for the many options to get help.

Is it any good?

Yes

Is it awesome?

Thanks for asking this question Joshua. These people seem to like it.

S
Description
No description provided
Readme MIT
170 MiB
Languages
Ruby 75.2%
Haml 10.4%
CoffeeScript 6.1%
SCSS 4.7%
Gherkin 2.4%
Other 1.2%