I like git, it works perfectly fine on my command line.

I do wonder, though, if it would have been designed differently if the whole “code forge” sort of application (or whatever GitHub and the like are called) was envisioned at the time. Pull requests aren’t even a concept in git proper, right?

It seems like a kind of important type of tool. Even though git is awesome, we don’t need a monoculture.

    git request-pull
Docs: https://git-scm.com/docs/git-request-pull

Generates a pretty email requesting someone to pull commits from your online repository. It's really meant for Linus to pull a whole bunch of already-reviewed changes from a maintainer's integration branch.

The rough equivalent to GitHub's "pull request" is the "patch series", produced by:

    git format-patch
Docs: https://git-scm.com/docs/git-format-patch

Which lets you provide a "cover letter" (PR description), and formats each commit as a diff that can be quoted inline in an email reply for code review.

You are right, PRs are not in git. format-patch and request-pull are originals designed for mailings lists. Github just put UI on top.

Interesting that DAG model means any branch from anywhere can be merged... the forge is just coordination.

Explored here if curious - https://vectree.io/c/git-graph-theory-logic

> I do wonder, though, if it would have been designed differently if the whole “code forge” sort of application (or whatever GitHub and the like are called) was envisioned at the time.

I would argue that it was purposefully designed in contrast against that model.

GitHub is full of git anti patterns.

> or whatever GitHub and the like are called

GitHub is a social networking site that just so happens to have code hosting related features.

People keep saying this but I can't really find much anything social about GitHub.

You can follow, star, favourite and comment on things, you get a feed where recent updates on stuff/people you've interacted are listed, you can customise your profile page with snippets about yourself, a photo, a status, contact info and add whatever else you want (including more photos, images, charts etc) in markdown. It now has discussions which are essentially a forum.

It's as much a social network/collaboration tool as it is place to store your code these days.

Some people spend most of their time in issues and PRs, which are social features mapping social interactions.

Is Bugzilla also a social network?

To the degree that it emphasizes communication between individuals over being a dumb database, yes, a bugtracker can be a social network. Bugzilla is a bit too close to the "database" side of the spectrum, whereas GitHub is at the other end; Jira sits somewhat in the middle.

Sorceforge predates git by about 11 years. As do several other projects like google code. Its not a new idea. Or basically most source control systems. Git, actually, is the more unique idea, of a DVCS... versus a cVCS...

git is not a new idea, various features of git existed in various SCMs for decades. The distributed aspect existed in Bitkeeper too, for example.

But it took a big brain with a systemic view of the problem and solutions space to bring them all together - in a lighting fast implementation to boot.

I don't think technical features were the key to git's success. What really made the difference was:

1. it was free;

2. it was sponsored by the most fashionable project of the time (Linux);

3. it did not require a server;

4. because it was FOSS, people could extend it without asking anyone's permission; and...

5. ...once GitHub appeared, simplifying the PR process, the network effect did its thing.

Git was hard to use and to understand. It did not win on technical features alone, as you said there were plenty of alternatives. It won because of community and network effects.

> Git was hard to use and to understand

So is ffmpeg and ImageMagick. Or Blender. Or Freecad. There are domains that do require some learning and training to properly use the available tool.

À pull request is just you requesting someone to pull from you in git proper.

So the maintainer adds you as a remote and pulls from you.

There’s really nothing resembling a “pull request” that’s used by 99.999% of git users. We have merge requests. But we call them pull requests for some dumb reason.

Indeed they're not; they live on the 'user layer' rather than the 'application layer'. That's not to say many git-frontends (IntelliJ, Sourcetree, Github desktop) don't support them, but "git pullrequest" isn't a thing.

Edit: see "git request-pull" as mentioned below (file:///C:/Program%20Files/Git/mingw64/share/doc/git-doc/git-request-pull.html) but what it does is write "a pretty email" (the other poster's words) to STDOUT.

> mentioned below (file:///C:/Program%20Files/Git/mingw64/share/doc/git-doc/git-request-pull.html)

What? Is the intention, that I access your C: drive? Also is it common to have a file:// link on MS Windows? I thought this was a unix thing.

Sorry. For some reason I used to get `git help ...` redirect me to the (URL of) the actual website.

I think the file:/// is so that you can fire off "[cmd /c] start FILEPATH" to load the default browser, while also not having to worry about spaces in the path.

They sure aren’t. Before github you set up remotes or emailed patches.

Perforce had change sets and there were lots of tools for code reviews that worked a lot like GitHub before GitHub (review board, phabricator, another one I can’t remember).

"Pull requests" are part of git though since it was originally a DCVS it meant you would pull from an individuals git repo ... services like github etc centralized the concept