For what it's worth, GitHub came up with the awkwardly-sounding "Pull Request" nomenclature because the initial cut of Pull Requests was based on `git-request-pull(1)` (https://git-scm.com/docs/git-request-pull). After a few years, the pull request evolved into what you see today.
We always kind of hated the term "pull request". It's pretty confusing for a beginner, and for a number of years led to the idea that GitHub didn't have code review at all in the product. (For that reason, I always thought we should just call them "Code Reviews", or just "Reviews".) There were a number of attempts to change it, but they all died.
It wasn't until last year when I got a beer with an ex-Atlassian employee when we chatted about this and realized we both had hated the term and had a number of attempts to change the nomenclature, but they fizzled out. Funny how things work out.
Cool to hear what your thoughts on it are. I only learned about git-request-pull until after we named it merge requests, only then did I understand why it was named like that.
FWIW, despite the awkwardness of the pull request terminology, Gitlab's merge request terminology was one of the major reasons why we ended up choosing GHE over Gitlab. Pull Request, among developers, has become like Kleenex, Xerox or any of the host of brand names that are linked with the generic concept they implement. In most conversations, developers here have stopped even saying the words...it's just PR without any thought to why it's named that. Trying to force a switch to MR would have been a difficult transition. In the end, it was easier to just pony up for GHE.
It may seem superficial, but if there's some way that you could give users the option to surface the pull request terminology rather than merge request, even if it's just a configuration option, you may find people more receptive to your product.
I tend to agree with you that "pull request" is the term everyone uses, and that the ship has sailed. Even when using GitLab, most people I know still use that term anyway... just like how in the southern U.S., every soda is called "Coke" even if it's a Pepsi.
That being said, you can't POSSIBLY be serious that this one piece of nomenclature drove the decision between GitLab Enterprise and GitHub Enterprise. The latter costs roughly 5 times more than the former! Either this is unbridled hyperbole... or else money is no object at your company, and it's weird that you were evaluating GitLab in the first place.
> The latter costs roughly 5 times more than the former!
And developers cost several orders of magnitude more than the software license.
The decision wasn't a matter of looking at features and making a logical decision. The decision was made by taking a sampling of developers and allowing them to test both systems and relying on their preference. They were unanimous that they preferred GHE. In drilling into their preference, the merge request nomenclature was the only issue that everyone mentioned they disliked.
And yes, the company wastes money like no other...it's part of the culture here and the result of having cash cow products that have very little competition. The only reason there was an evaluation was because one group inside the company was using Gitlab and another GH.com and the company decided to standardize on a single in-house solution.
>just like how in the southern U.S., every soda is called "Coke" even if it's a Pepsi.
Blasphemy. Atlanta can have their "Coke". Us North Carolinians drink Pepsi (born 1893 in New Bern, NC).
And to your point:
>The latter costs roughly 5 times more than the former! Either this is unbridled hyperbole... or else money is no object at your company, and it's weird that you were evaluating GitLab in the first place.
Never underestimate the ability of enterprises to over pay for a product despite the existence of cheaper, and arguably better solutions.
From what I've seen on Hacker News and Reddit over the past few months... if you just say "gitlab" 3 times in the mirror after midnight, he will appear.
I'm pulling the changes you've made into my (upstream?) repository. It's not the best name, but it makes sense. Maybe I've been using Git for too long.
I found fetch/rebase/merge to be more difficult to wrap my head around (and I still can't do an interactive rebase/squash)
Well, we're using TFS git, where you aren't forking repos on the origins, but for familiarity's sake MS calls the code-review process of merging a feature branch into dev a "pull request".
OT: VSO or self hosted? How's that working out for you? I can't use VSO at $EMPLOYER due to BlueCoat doing something very odd to the credentials in the HTTPS request - haven't able to track that down. Note that it also breaks BitBucket - 401/403 no matter what the password is.
Self-hosted. The web UI for code reviews and approvals seems pretty nice, although we're really just getting started. A lot of my stuff is still on tfsvc.
... well yeah it's confusing, but that's what happens when you cajole people into using a pull-based model so that the company can capitalize on those highly desirable market conversion/retaining effects that you wouldn't have gotten if you had done the natural thing and supported the traditional unit of change, i.e., patches.
End result: people are confused and using a procedure that's more complex than what most of their contributions call for, but that goes away when you remember what the numbers for the company are.
Cute! I was wondering why Gitlab uses MR and whether Gitlab has a better term just the other day, because I figured it was such an illogical phrase. As it happens, I am in the middle of installing Gitlab again on a newly reconfigured server and this popped up!
Then I thought "Hey, why not use the docker image?" (reeling from deep pain from the last time I tried to upgrade an LXC-based Gitlab instance across major versions), then I wondered if I needed aufs, then I wound up reading presentations about storage drivers (zfs FTW, but shame on docker for wanting an entire zpool to itself!), then decided overlay was better (and in-kernel), then I wanted to switch to a PaX kernel, now I've got a day of recompilation and installations ahead of me. But I will be glad to know MRs lie at the end ;) +1 docker bug: https://github.com/docker/docker/issues/20303
I was not planning to use LVM because it's documented[0] as slow and resource hungry... full copy each time, massive memory use, etc.
CONFIG_OVERLAY_FS is mainline kernel code (unlike aufs) and not marked as experimental so if docker's implementation is buggy it is more likely to be docker's fault. It is documented by docker as being generally fast.[1]
Regardless, I don't see performance as a great concern for my workloads... I'm more interested in the workflow enhancements.
The terms GitLab uses in the first chart make a lot more sense from user experience point of view. They match how a person might describe what they're doing in English before having seen any of these tools. Good work to whoever on their team was responsible for that.
Thanks! Even though few of the early developers were native English speakers we do care a lot about naming. For me it became something very important after learning about Domain driven design https://en.wikipedia.org/wiki/Domain-driven_design
The "Gist" comparison isn't really apples-to-apples. GitHub Gists are actually git repositories themselves, and can be cloned/pulled/merged/pushed/etc. Gitlab Snippets are assets connected to the project. I remember a feature request a while back to make Gitlab Snippets more like GitHub Gists, but can't seem to find it on the actual Gitlab project's issues section now.
Huge fan of Gitlab, though. We're about to migrate from BitBucket Server née Stash to Gitlab CE.
Maybe that says more about the Gist UI than anything else. I still think there's a chance for a Git-backed OneNote clone to really take off - if you hid Git away for normal users it would be really powerful.
I think some concept of scratch/temporary repositories might be better than a Gist-style thing, but Gist with a better UI might work too.
Merge is so much clearer (as a non-coder). I've always wondered why its called Pull Request - When as a contributor, you are pushing your code into someone else's codebase and merging it going forward.
Actually, that's not what's happening. What's happening is that the project maintainer is pulling in your changes, from your repository. It's a decentralized vs centralized thing.
I think you're missing the forest for the trees for here. It may technically be a pull, but the thought process involved is most typically "I want to send my code over to _____".
Unfortunately git is to powerful to handle its UX like that. Users have to understand the model behind it. If you have ever tried to work with teammates, who did not fully get yet how git works, you know what world of pain that is. They have to think like git works, you cannot abstract this away into their understanding of SCM.
No, this is actually a different meme. This is because all "forks" of a project on github are kept in the same backend repository, using namespaced branches. You can confirm this by making a commit on your repo, and then navigating to that commit hash on someone else's repo that's forked from the same project.
I think it's arguable either way, honestly. When you order a pizza, would you say it is a Pizza Request, a Toppings Request, a Transaction Request or a Request for Pizza with My Toppings Merged into the Default Configuration?
Pull Request makes sense to me, Merge Request makes sense to me too. To others, one may resonate more. Rosetta Stone posts like this can be helpful to people who are used to a particular vernacular, and I don't think the semantic distinction is itself the point. Other than the Gist comparison (which I mentioned in another comment), I think this post was helpful.
It's truly inspiring how _present_ Gitlab are in the communities they serve.
Yeah, you are right. "Pull request" in itself could be parsed as a command, but it is a thing really. Used in a command you would say "Send pull request". Where send is the verb and "pull request" is the object. In my native language it would actually be a single word. I have seen some people write it as pull-request, which removes the ambiguity.
Note that "Merge request" doesn't solve this problem.
From a user-interface design perspective I would say it would be bad to have a button or link that solely says "pull request" or "merge request". It should probably be preceded by a verb such as view, send or process.
Also, pulling a pull request or merging a merge request is just weird and doesn't make sense.
From a process standpoint, merge-request is probably more accurate, but I've always thought pull-request captured the hearts and minds of developers because it better represents how the requester feels about the request.
"Pull request" communicates "I just did a bunch of work, please recognize it and me." "Merge request" communicates "I just did something that is going to make your life hard, please do a bunch of work on my behalf." The later may be more accurate but the former is more emotionally satisfying to the dev making the request.
I might be in the minority here but i hate the term "merge request" because it implies an actual merge. Most pull requests I get against my repos are bugfixes which I typically cherry-pick or rebase against a bugfix branch but very rarely do I actually merge anything.
We always kind of hated the term "pull request". It's pretty confusing for a beginner, and for a number of years led to the idea that GitHub didn't have code review at all in the product. (For that reason, I always thought we should just call them "Code Reviews", or just "Reviews".) There were a number of attempts to change it, but they all died.
It wasn't until last year when I got a beer with an ex-Atlassian employee when we chatted about this and realized we both had hated the term and had a number of attempts to change the nomenclature, but they fizzled out. Funny how things work out.