Linus Torvalds won't do github pull requests
github.com
github.com
If you tack '.patch' onto the end of a Pull Request you get a 'git am' compatible patch file complete with the email address that Linus complains is missing ;)
https://github.com/torvalds/linux/pull/17.patch
EDIT: I should note this works on any commit as well. Take this commit from Casbah (the Scala MongoDB driver I work on) - https://github.com/mongodb/casbah/commit/990a36fbde69db26689... - removing .patch gives you the normal web based github commit page.
https://github.com/torvalds/linux/pull/17#issuecomment-56637...
http://beust.com/weblog/2010/09/15/a-quick-guide-to-pull-req...
Deleted comment
"You might have fun raging on the internet, but I think your goals would be better served if..."
He rightly responds:
"Umm. I think I've been able to reach my goals on the internet better than most people."
I believe in civility and courtesy in many areas, and Linus doesn't phrase things exactly as I would. But then, I don't have his responsibility or experiences, either - and while people can disagree about whether he expresses his thoughts in a polite manner, he certainly does so in a clear one.
And the side effect is that he gets bored to listen at stuff that he thinks are silly. But see it from a different perspective, Linus is really, culturally an hacker, and not an academia professor. He is out there on github writing flames, arguing with people that have a github account completely clean and never wrote possibly a line of code at all. Exposing himself in the process to insults and so forth.
I really admire him.
I never understood why do people who have completely clean github accounts feel the need to preach to someone who has been programming for a long, long time and is the major force behind two of very significant, technically hard piece of software. This won't be the first time this has happened. In the "Linux on C++" thread, someone comes in and says "I am surprised you wrote git in C. Don't tell me C++ is bad. That's bullshit. Clearly I know more about this than you do". Or even the Eric Raymonds' post about "Curse of the gifted" - he comes out of nowhere and starts calling Linux names. The fact that other developers didn't even bother responding to his bullshit made me happy.
Which is probably also the best example of why PC is dumb. For example, it's hard to criticize Israel in German politics. At best, you'll be looked at in funny ways, at the worst you'll be accused of being a nazi.
Still I don't understand why you can't criticize the politics of Israel in Germany. Even my Israeli friends do it.
The motivation behind the German PC towards Jews and Israel isn't motivated by that, though. Maybe it originally was, but these days it's but a way to silence opposition to the questionable politics of the Israeli government. To be fair, it's slowly fading out, probably not in small part thanks to the emergence of the internet and new political movements, such as the Pirate Party.
Also, it's not like you can't criticize Israeli politics in Germany. It's that you will see few politicians who are willing to do it openly, because it's a minefield.
The whole country has two official languages, but Finnish-Swedish people use Sweden as their everyday language.
And a few messages down, he proceeds to say "You are a moron".
Not exactly a role model of civility.
pirtlj commented on pull request 17 on torvalds/linux a day ago
I did not realizes that Linus' shit does not stink. Thanks for clearing that up...1.) Linus is being a bully. There's a difference between speaking your mind openly and using rhetorical force to invalidate contrary views.
2.) The kernel requirements can be whatever those who control the kernel demand. That's just common sense. Making the leap to declaring that only one text wrapping approach is objectively correct is delusional.
If Linus simply said "The github pull request interface makes it impossible to follow the kernel commit guidelines, and we are not open to reconsidering those guidelines" there'd be no argument.
Somehow, I don't know or have read about that many (if any) world-changing people, who also happen to be "so nice and understanding of others opinions" or "agrees to disagree".
I'm sorry, but there are indeed few ways to design a BMW and many ways to design a glob of metal that can't even move.
In response to the pull request he did simply say "I don't do github pull requests." and explained why, and basically said he would if github supported commit messages in the appropriate style. He never insulted the pull requester. He called whoever is this "Joseph" person a moron, and now we have no idea why.
[1] http://www.reddit.com/r/programming/comments/tionj/linus_tor...
So, if @pirtlj said that in response to Linus's first comment, then he was way out of line, and something should have been said. Maybe Linus didn't say the exact right thing, but I doubt I would have been able to say much better. Hopefully @pirtlj learned more than that he shouldn't have said anything (although even that would be a good thing, I think)
I interpret his statements to mean that the git/kernel projects' commit message standards are objectively better on all the ways we know how to measure (or at least, for all of the most common ways of looking at commit messages). So again, if you want to disagree, your choices are to point out a criterion that is not being considered, or how this system is not better at a known criterion.
> I've told github people about my concerns, they didn't think they mattered, so I gave up. Feel free to make a bugreport to github.
Actually, I think Linus was factually correct. The persons involved were morons. :-)
Thank you for epitomizing what makes Linus worth emulating.
Rhetorical force. Coooool.
I mean....ok....this pull request being inferior to the way HE (the creator of Git) imagined it (or implemented it) is a bit petty imho.
What's with the complaining? I am sure this is not the first time I have heard him complaining about something on Github or some other 'new technology'. The same goes with Crockford and his semi-colon.
Edit: Although, I must confess that it is annoying when the creators of a service that you use totally blow off your suggestions (esp. when that service is built on your own creation).....so I am torn on this one. Still has the 'annoying old man complaining feel' to it though.
He's not saying "we should all boycott GitHub because of it". He's not saying "they're idiots for doing this".
He's saying 'The Linux project works one way, GitHub doesn't support that way, so we're not using it, and they' won't change it'. That's it.
That is the spirit!
I remembered he once said talking angrily is to scare idiots off.
What a man.
Think of a college student, relentlessly begging the professor for an A on a paper that just barely deserved a B-.
Well...
"github is a total ghetto of crap"
"make a real pull request, not the braindamaged crap that github does"
Conveniently left out the part most salient to Linus' argument? Linus repeatedly stresses that he thinks Github is great as a hosting service. It is the pull/commit functionality which he finds lacking.
I apologize for the misquote; again, that was unintentional.
Deceitfully out of context.
My point still stands. Calling GitHub a "ghetto of crap commit messages" blames the people who built a system to foster such crap commit messages.
> .. because I think github does some things very well.
> So sure, you may think I hate github. I don't. I hate very specific parts of github that I think are done badly.
> But other parts are done really really well.
> I think github does a stellar job at the actual hosting part. I really do. There is no question in my mind that github is one of the absolute best places to host a project. It's fast, it's efficient, it works, and it's available to anybody.
> That's wonderful. I think github is absolutely lovely in many respects.
> And that then makes me really annoyed at the places where I think github does a subpar job: pull requests and committing changes using the web interface.
It seems obvious to me that he likes GitHub a lot, and thinks the team behind it are very capable, and not at all braindead. This doesn't preclude them from having a braindead feature. Or a feature responsible for crap commit messages. Or a feature that is both.
I apologize if you thought I was being rude. I was actually trying to not insult you, in case you were ESL. And I only went in that direction because I didn't want to believe you were trying to quote mine. [1] https://github.com/torvalds/linux/pull/17#issuecomment-56613...
[2] How fitting. Poor text wrapping support bites again. When I pasted the comment, it lost all line ending data, so I had to re-separate all the paragraphs (not sure if the fault is in GitHub, Win7 clipboard, FF, or HN).
I've never really seen them as cranky because they're spot on. Cranky old men usually don't have anything other than opinion behind their rantings.. Linus can at least defend his position. Given his contributions to the world of technology, I'm more than willing to let the acerbic attitude slide.
Either way, there are many decisions that people make that comes down to style preference and sure the 'purists' might think it is a watering down of programming....but it makes it more appealing to new developers. I can see Torvalds ranting on Ruby as not a 'real' language....I don't know if he has done so...but I wouldn't be surprised if he did.
Today, he wants to manage his own repository with the vcs he created, in his own way, but tomorrow! - who knows if we don't stop him, probably rape and murder! We can't just let him do whatever the hell he wants!!!
I have to say, I am both bemused and slightly offended by your comment. Are you suggesting that famous people don't have a right to Free Speech?
> The answer is...I am not sure.
Well, I'm glad you've taken it upon yourself make this important decision for them.
Feel free to try stopping them. I can't imagine that they'd care much, and you'd find yourself ignored rather quickly.
Hm... how about letting everybody do whatever the hell they want??
Simply put, he has a rigid standard for pull requests, and GitHub isn't capable of adhering to it, so he can't (without making an exception) accept pull requests using the tool.
The rest of his ranting is mostly subjective, but I do find it amusing that pull requests in the number 1 git hosting service don't meet the creator's muster, and I'd love to know the reasoning behind their implementation.
For what it's worth, I didn't know of the in-built git pull request and I'm an avid Github user (though not submitting Linux kernel patches,) so in the spirit of optimism, airing this rant was informative to at least me, and probably many others.
Are people so averse to acknowledging the bounds of their own experience that they discount other views over a hint of emotion? Does every cantankerous remark need to be taken so personally? Why is it so important to be inoffensive? Does all advice need to be delivered as positive encouragement?
With a bigger microphone comes greater responsibility.
I am not taking Github's side on this particular issue - but this issue struck a bigger tone (for me)...where I have seen those with a larger microphone (by virtue of who they are) seem to be complaining louder (publicly) in recent history. It could just be that their microphone has gotten louder - but if it has, to a large extent they have a responsibility to be more conscious.
Imagine if Obama complained about the food at a bakery down the street that he went to - that would effectively kill that establishment. As a patron, does he have a right to complain about disgusting food? Absolutely...as someone with the largest pulpit in the world? Definitely not. There are other means he could use to get his message across.
Then again, I am not comparing Obama's pulpit to that of Torvalds, but I think it makes the point sufficiently.
Each observer can decide if the remark is appropriate or not. We are more likely to forgive Linus on his "home turf" than Obama singling out a particular business.
This highlights the problem, not everyone thinks critically about context so you end up with people writing off good practices because the advocate was mean and/or avoiding a bakery because the president complained.
Mini rant aside, it's a bit confusing. Because as Linus notes, there's no indication of the 80 char limit when authoring in the Web UI -- you're only penalized for it later. It seems there are competing sets of best practices.
My initial assumption is: Linus/Crockford/whoever-else-is-coming-across-as-a-cranky-old-person has seen whatever-he-is-berating or something very similar before, not just once but ridiculously often. That makes the reaction quite understandable and justified.
Plus, let's face it, we all want to be free to react like that when it's deserved ;)
I guess it was off-putting to me because of the ephemeral effects of him being who he is. Anybody could (and probably would) complain about the way Github has implemented various features - but they wouldn't get the attention that he has gotten. Maybe that's why I perceive it as him being 'cranky'.
So maybe my criticism was unfair because I wouldn't have criticized DHH for doing the same thing - or who knows, maybe I would.
Not sure, but now I see what you mean.
I think it's a response to the relatively recent over-abundance of attention and coverage given to wheel re-invention and uninformed opinion. I personally tie it to a particular subset of startup culture that relies heavily on convincing young developers to serve as grist for the startup mill by appealing to their ego.
This is not a cranky old man thing. This is a basic multiprogrammer project collaboration courtesy thing, similar to the reason that, say, if a project uses camel case variable names and one statement per line, you shouldn't submit code using foo_bar naming and putting as many statements as you can on a line.
In the last 5 or 10 years there has been a strong shift towards emphasizing civility and positivity even if it gets in the way of getting things right or expediency. I can certainly see the appeal in it, after all lots more people are drawn to programming now with a wider variety of personalities and motivations. I won't say it doesn't make sense to be more inclusive, but it certainly didn't used to be the norm.
Rails core homes on github right? What is it that they do when they don't like a pull request? Write a long blog post about how stupid people like you are a net drag on the open source world and keep awesome people like us from helping you even more and and rss it out to everyone.
Shrug.
To most westerners, the average Japanese person is extremely polite, if not bordering on the absurd, while to most Japanese, the average westerner is, to say the least, unrefined, and Torvalds is probably downright horrifying.
Such things must be taken in their cultural context, or you can't really understand people's behavior at all.
The point of technical fora is to have effective, high bandwidth discussions on technical matters.
If I want a hug, I can go get a real one from a real live human being - and I'll interact with them in an appropriate way for that context, too.
And yes, this is a throwaway account. It might be worth considering why I created it to respond to you, just based on your post above.
My opinion is my opinion, and you're welcome to hold a different one, but I'll damn well stand behind holding mine and explain the reasons why I do as myself, with my reputation and my ability and everything I've ever said attached to it, including the stupid, horrible mistakes (of which this post may later seem to me to be one :). Because the fact that I do my best to make less such mistakes every year speaks for me as well.
You are absolutely right that it is worth considering why you created an anonymous coward account, as slashdot calls them, rather than speaking your opinions as yourself - no matter how strongly you disagree with me I respect your right to do so even if I have no respect at all for your arguments or position. But now I have no way to know you, and no way to respond to a human being rather than a (to me) meaningless transient front so I don't really feel like I can draw any useful conclusions from such consideration.
I don't know why you'd want that.
If you want to disagree with me, disagree with me as -you-, so I know who I'm debating with and can frame a constructive reply.
Perhaps the fact that I would rather disagree honestly with another human being, and that you would ... I don't know what you'd rather ... is the point. Perhaps it isn't. But now I can't know.
Arguing for "most people" holds no weight with me when I'm unable to even confirm that you're a person. Maybe I'm too web 1.0 or something. If so, sorry.
Please do, however, consider responding to me authentically; I'm always willing to debate whether I'm right or not, but I've always been rather fonder of debating people than will-o-the-wisps.
Maybe that's just me. Deciding that is left as an exercise to the reader :)
Of course such options exist. Honest and authentic communication is a crucial tool to avoid disagreement descending into flamewars.
Linus' original post attracted a message from an original developer saying "yeah, I hate that too, we'll try and get round to fixing it". That suggests that his choice of option was really rather constructive, peanut gallery interruptions to the useful parts aside.
I disagree with Linus's digression to insult a member of the peanut gallery, no matter how useless and unnecessary said member's interjection. In my mind, a "No, that's wrong." is sufficient if it even merits comment.
Who cares if Torvalds has 'more' technical chops than DHH...DHH might be more abrasive, but it is a good abrasive. He is always pushing the community forward and encouraging Rails developers to be a little better. He is not afraid to embrace new technologies and give credit where its due.
Can't tell when last I have seen these older guys do the same.
I have never once bashed his contributions to the community and OSS. Just like I would never do the same for the creators of Java, C, PHP, all of which I don't use and have no interest in. But there is significant value in all of them and we are all better off for their existence.
My point was, more often than not....you hear the creators of these 'foundational' contributions complaining about new things (either new approaches which were different than theirs, or they shit on new languages because those languages don't have some purist function that theirs does or doesn't achieve the same low-level execution speed that theirs does).
DHH can be a dick, but I have never seen him shit on someone for trying something new (even within the Ruby & Rails core). That being said, I am not saying he doesn't disagree with the approach that people take....but there is a difference between shitting on someone/something and disagreeing with it.
What Linus did here was shit all over Github's implementation of the pull request - because it is different than his implementation would have been.
I'm not going to speculate, but it's clear you are talking out your ass.
Linus has spend the last 20+ years building one of the most important pieces of software in existence. Not only that, but he created git, without which the Github guys, DHH, and everyone else would be using fucking Subversion. The process that he follows for kernel development does not exist out of vanity, it serves an actual proven purpose. Linus' care and attention to detail are a big part of why you can rely on the stability of Linux over time. For you to come in here spouting off some nonsense about why he does this or why he does that without clue #1 as to the real reasons, and then to pay homage to the guys who are "trying something new" all the time standing on the shoulders of said giants, well, it's a slap in the face. Respect is due my friend.
I think for all software engineers who are old enough, we all know writing software is a social activity and sometime it is better to make projects manageable.
I think any one who creates technologies has to understand that design decision is an "Opinion".
I doubt we are better off for PHP's existence (only mentioning the oxymoron "PHP security" should be enough to make this point), many would argue the same for Java (unless you are a consultant or book publisher), and some have argued the same for C.
And just because something is new doesn't make it good, in the programming world the number of square wheels built grows every day, and we are in danger of the resulting mountain collapsing and burying us all in a tangle of inscrutable complexity of bad solutions to problems that were solved long ago.
No, it wasn't petty. It was useful, constructive criticism that the github developers appreciated.
It isn't just you, but I think you are being overly critical :)
However Linus is heading a huge project and besides that he is famous as well. Everybody wants his time, if only to show an e-mail in which he flamed them to death or to brag they got a commit into the Linux kernel tree.
So it is basically a matter of respecting his very limited resources.
If Linus wrote a lint for C, I really wonder what it would be like.
Okay, fine. The way he handled this particular issue seems like a dick move. Being one of the godfathers of computer science isn't a license to act like a jerk.
There's no question he's right, but there's nice-right and jerk-right.
This sort of response seems like it only inhibits people's desire to get involved.
How many projects have had as many people involved as the kernel? Not just software, any project. With people coming and going and working on whatever they want. For 20 years.
People have the right to be offended, they however DON'T have the right to not be offended.
Linus is a nice guy, he works well with others and has built some of the most amazing software in the world today. I work on the kernel and other system code on a day to day basis and have participated in threads with Linus before. When you are wrong he tells you so, in a very clear manner that outlines exactly WHY you are wrong.
Sure, he isn't always concise and succinct but that isn't really the point. If he wants to interject a few choice "swear words" to describe how badly you did something that's fine by me. As long has he describes exactly what is wrong and how to fix it.
People need to get a lot less wrapped up in HOW something is said and focus on WHAT is said. The essence of Linus's comments on this pull request can be summarized easily. GitHub's pull/request features are inadequate for kernel goverernance - and as the creator of git and designer of the inbuilt pull-request functionality he thinks this is subjectively retarded.
If you read past any of that and start saying crap like "he could have been more polite" to him then you have obviously missed the point. It's not his (or anyones) job to cater to peoples inability to grow a skin.
Screw coddling. shakes fist in general direction
The kernel has a mature, rigorous and well-defined development process[1]. Things that don't fit well into that model just aren't going to be successful, even if they work well in other contexts.
[1] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git...
If your devs commit bad code its probably pretty easy for you to find them and possibly fire them. If you can't tell who a kernel patch is from or even if it is actually from the person specified it calls into question the security of the kernel.
Furthermore, the patch was deficient in other ways. (a) it was missing the Signed-off-by: header, and (b) it should have been sent to the linux-bluetooth mailing list or one of the Bluetooth maintainers, with the linux-bluetooth mailing list cc'ed.
Again, it's Linux. And the issue was over what/whether/how he should accept commits into torvalds/linux on GitHub. Anybody's free to commit anywhere and fork Linux or make custom builds, distros, etc. But if there's one place he has the absolute right to be a tyrant is over torvalds/linux. The fact that he also designed and bootstrapped git for the whole purpose of doing version control The Right Way, based on his needs for Linux development, is just icing on the cake of that argument. But he was not polite.
pirtlj "I did not realizes that Linus' shit does not stink." torvalds "you are a moron"
Seems fair to me.
You're a moron." that people thought impolite. The comment he responded to appears to have been deleted, however, so I can make no judgement about how appropriate that was. I'd like to think it was completely appropriate -- I do agree with you overall that his other comments were reasonably polite.
I note that GitHub actually did a blog entry sometime ago about good commit practice, and it seems to be the same as what Torvald's requires. Not sure I'm understanding what th issue is... https://github.com/blog/926-shiny-new-commit-styles
https://github.com/torvalds/subsurface/commits/master
Even if I can't code like Linus, I can at least try to write commit messages like his…
That said I don't think this is significant enough to add up to a compelling reason either way.
Edit: to be a little clearer; your traditional SCM has a write-once-never-change model for the trunk of development. This has a problem in a peer review situation, and the problem is this: I may go forth with the best of intentions to decompose things into discrete patches. But when you get down to brass tacks, changes to the system tend to happen in any given order--you might discover a latent bug when testing your feature that has nothing to do with your feature. Now you have two choices: you can wait and commit nothing until everything is great, which means you're not integrating with the mainline, which means that integrating will be incredibly painful, which leads to locks; or you commit as it comes in the moment, which is much better for integration and much easier to back out partial changes and generally get all of the non-backup elements of an SCM, but which is the very devil to peer review. With rebase -i, it is quite easy to commit in the second style in the moment and then clean them up for peer review later; that is the ability to revise history means you can make decisions immediately without worrying that they will be cast in stone forever and ever anon.
I wasn't always this much of a hardliner on the subject, but my current job uses Perforce as the main SCM and I have realized that I disagree with almost every decision Perforce makes across the board. I still use it, because any SCM is way better than no SCM and I don't want to explain git to everyone else, but my actual development occurs with git-p4.
Better to say "fixes" then, so it's distinguishable from the use in a phrase as an imperative. "We need to fix this."
Projects like Git and Linux take their contributions in as patches that are sent to the projects mailing list. As it is not merged in to the master tree at the time of publishing, it would not make sense to use past tense for describing what it should do, if merged.
Thanks to Git's great history-graph altering functions like rebase and cherry-picking, it would make even less sense. You can always take some commit and apply it to new branches or even repositories.
It drives me nuts that I never know exactly when Github will break my one-line descriptions when there appears to be plenty of room left to display the characters. Like this one from Linus:
https://github.com/torvalds/subsurface/commit/bea6637c03a90f...
It's also simpler and promotes less convoluted phrasing.
It is direct, concise, consistent and tends to active voice rather than passive voice. Further, not everyone writing or reading the messages will be a native English speaker. Avoiding past-tense forms just makes it easier.
http://git.kernel.org/?p=git/git.git;a=blob;f=Documentation/...
"describe changes in imperative mood, e.g. "make xyzzy do frotz" instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy to do frotz", as if you are giving orders to the codebase to change its behaviour."
http://git.kernel.org/?p=git/git.git;a=blob;f=Documentation/...
Linus does not hesitate to criticize and always think about things before declaring them cool.
Oh he makes errors like everybody. He's usually not always very nice in messages (read LKML and you'll understand). But he's usually right and he's usually not writing random things because "it is trendy".
So GitHub is trendy. Linus doesn't care. Linus cares for the good features and pull isn't one of them in his eyes. And then again, I think he's right. Pull in GitHub is crappy.
But what's missing from his message is the reason why the GitHub pull is crappy. I'm sure he knows, but he's using half words. Here's the reason:
If GitHub enforced proper pull messages PEOPLE WOULDN'T USE IT. Why? Because it's the easyness to fork and pull that make GitHub successful. So you see, pulls have to be DEAD EASY. And that means also "single text field, no enforcement of anything".
So yeah. GitHub won't fix it, because it'll be bad for their business.
With Linus' current work flow (pull requests via e-mail), it's still perfectly possible to have a horribly structured pull request, and so they've added on rules beyond what the technology can do for how pull requests ought to be formatted. I'm failing to see why the same rules can't be applied to GitHub.
Linus invented Git, and it's perfectly possible to have single character commit messages in Git. I'm not quite sure why it's a failing of GitHub that it takes a similarly loose approach to how it deals with pull requests.
I don't think so. Read tomayko comment in the original thread: GitHub acknowledged the issue with Pull requests.
Even if you were right, GitHub could add a way for a project to make its own (enforced) rules.
Love this no-nonsense style, but let me say that it's no only the style, but that Linus has enough on his side to back it up.
We're always listening for feedback and are working on improving the experience for everyone. It's too bad that useful bits of feedback like this turn into another drama episode though.
I'd take Github's version of any feature, any day, over the official git version, any time they differed - Git is a notoriously user-hostile piece of software interface-wise, and pretty much the only thing it has going for it on the usability front is Github.
Git is a notoriously user-hostile piece
of software interface-wise
It's funny you say that, because Git is the only version control system where working with branches, forks and merges in big projects is not only doable, but in 90% of the cases painless. You can't really appreciate Git until you've tried doing the same tasks in Perforce, SVN and CVS. No other similar software has the same painless approach to branching and merging, not even other distributed systems.Also, its interface is hostile because it requires the user to understand a little about its internals. You may disagree that this is good design, however it gives you unprecedented control over the repository, which you need often when the shit hits the fan. Also, Git is freakishly fast and efficient. Much like C, an interface done with taste, but that doesn't appeal to those with weak hearts. And the fact that such projects as Linux are maintained with Git, projects which have a huge number of contributers, it's a true testament to Git's awesomeness.
And btw, considering how version control is one of the most important tools at your disposal, if not the most important in big teams, stop reading those SVN 2 Git tutorials and go read a freaking manual. It's worth it, because you'd be amazed at how much power it has under the hood.
I don't agree with the second claim and the first one does not explain it being that way. What is so tasteful about this:
# delete
git remote rm ...
git branch -D ...
git tag -d ...
git rm ...
# rename
git remote rename old new
git branch -m old new
# can't git tag ...
git mv
No - it may be useful, it may be fast, it may be efficient. But the interface sucks completely and is very inconsistent both between the commands and in what is each command's responsibility. git remote rm
This deletes the reference to a remote repository. The difference between Git and SVN here is that in Git you can have multiple remote repositories with which you can communicate.This comes in handy when pulling and pushing to/from multiple people. Imagine swapping code between you and your colleagues, doing experiments, doing code reviews, and so on. It also comes in handy when you're dealing with Heroku, or when you've got an "open-source" core that's pushed to GitHub and another branch with proprietary additions that you push somewhere else.
Also, all commands for managing these repository references start with "git remote" and to find out how to do something with them you just do "man git-remote".
git branch -D
This deletes a local branch. It has nothing to do with the above. It does not use "rm" because that can be the name of a branch and this command is heavily overloaded. git tag -d
This deletes a tag. It is consistent with the above command, as "git branch -d" (lowercase D) is also supported, but uppercase D means that the deletion is forced, even if the branch was not merged. Again "rm" was not used, as that can be confused with the name of a tag. git rm
Deletes a file, but you don't have to use it. If you're confident about your editing skills, you can just commit all the deletions with "git commit -a ..." ... git will also be smart enough to detect a file rename, even though you did a deletion + addition."rm" is also the name of the command that does the same thing in Unix, being associated with the removal of files.
git remote rename old new
As I said, "git remote" manages references to remote repositories. This just renames the reference named "old" to "new".You could say that they should have used "mv", like in the case of "git mv", however this is not a "move" command. This is just plain renaming.
git branch -m old new
This renames the local branch named "old" to "new". It is indeed inconsistent with the others, but that's because the "git branch" utility has been overloaded a lot. This command does confuse me from time to time. git mv
Like in the case of "git rm", this command does a "mv", while registering the action in Git. It is also not necessary if you're doing a "git add . && git commit -a"."mv" does make sense here, as it is the name of the Unix command for moving files.
And a final tip for beginners: use the "man" pages. In a terminal input any of the following commands when you need help ...
man git-remote
man git-branch
man git-tag
man git-rm
man git-mv
man git-push
man git-pull
man git-reset
man git-checkout
etc...My point was about inconsistencies rather than not being able to figure out which command did what.
https://news.ycombinator.com/item?id=3548824
Not sure if they have been resolved.
Probably true, but when you've changed the technology world twice before age 40 people tend to cut you some additional slack.
Then you probably didn't use any SCCS before git. Because CVS is even uglier, Bitkeeper is the reason Linus wrote git and every other I tried was more "user-hostile" than git.
> pretty much the only thing it has going for it on the usability front is Github.
You sound like a Visual Basic programmer who just saw C for the first time.
Edit: Bitkeeper, not bucket!
Surely you mean that bitkeeper is the reason Linus wrote git. Bitbucket didn't exist when he did.
Also, please write good git commit messages. A good commit message looks like this:
Header line: explaining the commit in one line
Body of commit message is a few lines of text, explaining things in more detail, possibly giving some background about the issue being fixed, etc etc.
The body of the commit message can be several paragraphs, and please do proper word-wrap and keep columns shorter than about 74 characters or so. That way "git log" will show things nicely even when it's indented.
Reported-by: whoever-reported-it Signed-off-by: Your Name <youremail@yourhost.com>
git request-pull
If you'd like to see an example, this will generate the text of a request sending the top few commits in your repository (assuming the origin / master convention) git request-pull master^^^^^ $(git config remote.origin.url)Either that, or just sending a mail with a link to your own git repo requesting a pull.
in one of his comment, "I did not realizes that Linus' shit does not stink. Thanks for clearing that up..."
Apparently, even if a comment gets deleted from a Github discussion, it still sticks to your public activity.
Considering GitHub popularized git, if I were in charge of git I'd listen to what the GitHub guys have to say about it.
Linus using git for the linux kernel, the bitkeeper drama, and doing talks about why git is better and everything is broken made git popular.
Github has done a lot to push it, but even without github, git would still be huge.
When git was announced, I got it and played around with it for a bit, but I went back to svn, it was only with all the OSS that I cared about working with (rails gems anyone?) or on that I started caring about git in a serious way. I'm only one datapoint though.
Linus' use case for a pull request would probably be to much for a popularized and casual use case that is likely typical for GitHub.
And anyway it's Linus' prerogative to dictate his requirements for contributing to his project. The description he gives doesn't make it seem overly difficult (use what's already built-in).
Github wouldn't exist without Linus' git. I am really surprised they didn't take Linus' advice (reasonable, and no difficulty at all) in the first place.
Reflowing refers to reconstructing lines broken by line wrapping. Here's the example I was referring to: Grab a couple of unwrapped paragraphs of lorem ipsum (make sure there's no explicit newlines) and email them to yourself as a plain-text email using the desktop web gmail interface. You will notice that when you open the email in your inbox, it shows up with line breaks - Gmail sent it with explicit newlines after ~80 characters. (Use Show Original if you want to confirm.)
Now open the same email in the Gmail app on Android (I'm using Gmail 2.3.6 - the newest available on my Androids 2.2 and 2.3.6). My Android screen, like most smartphone screens, isn't wide enough to hold all 80 characters in one line, it's more like 50 or 60 characters. Gmail wraps the email to fit, which is expected and desirable. The problem is it keeps the original linebreaks at 80 characters, resulting in two linebreaks. Every other line is short at 20 or 30 characters and the email looks very jagged. Reading it is very uncomfortable. It gets really messy when you have quoted text, particularly with interleaved response style.
There's actually a whole bunch of standards or semi-standards and techniques around doing this kinda stuff. Standalone mailers have been doing reflowing and format=flowed for a while now. Sad to see Gmail drop the ball on this.
You can have horrible commit messages and pull requests using e-mail pull requests. You can have the same with GitHub. Ultimately, the decisions of what sort of quality you demand on pull requests ought to be up to the maintainer, and GitHub is doing the right thing by not enforcing a standard that doesn't work for the majority of people.
What are the others?
I can't help thinking tons of "rockstar/ninja" developers out there are going to embrace this abrasive style of disagreeing with people and totally rationalize it by thinking well "that's how the guy who wrote Linux does it, so that's how I'm going to do it"
Someone that well respected should (and this is my opinion) never have to reach to the level of addressing someone so far-removed from the heights they've attained, as a 'moron', when simply ignoring them would do. But I'm nobody important, so what the hell do I know about anything ...
Fortunately, I think this sort of nastiness is self-limiting. The only really egotistical, nasty rock star I ever worked with destroyed himself, much to the delight ( and with some assistance from) his colleagues. I think that would be be a far more likely outcome than a nasty rock star continuing their ascent with a bad attitude.
Forking a project is a huge deal. Forking a git repository is no big deal.
Github does the former, and it encourages too-broad forks, and at the same time, discourages coordination and contribution with the original project. Nearly all forks should be short-lived and completely subsidiary to the main project.
This is why "forking" an open-source project was considered a nuclear option prior to the emergence of github.
I rarely even get pull requests from people forking my code on github, and when I do, they almost never have bothered to discuss with me prior to implementation. It's a relatively recent phenomena that is largely encouraged by the tools.
Seriously. Just dont' send this particular maintainer pull requests that way.
It's not really. If any other maintainer of a project finds they're cool with pull requests from github, then it's a fine tool for those projects. This guy runs a project which is an outlier in it's size, and which is also a far older project than most of what github hosts.
Now if his criticism has useful facts, that MIGHT be useful, and it does: The github format has fewer bits of info. Could some of those bits of info be important? Maybe. I didn't sense a genuine, measured analysis, but instead a rant from a maintainer about something that's not working for his project. Nor did I see a counterpoint from github why their tool does it the way it does. There may be real design decisions there, ones that might be better answers than what Torvalds has, especially for projects far smaller than Torvalds.
Don't let Torvald's status as the maintainer of the Linux kernel (and creator of git, to do that task) make you forget he's also paid attention to because he's famous as well as a useful contributor. Fame doesn't make you more right, just more adored. His ideas still require critical analysis from the rest of us.
GitHub commit messages can be really ugly. I'm guilty of this and it's not something I'm proud of. I think the small improvement they did a while ago with the display of commit messages is a step in the right direction, I wish they would apply that same style to the web interface when composing commit messages.
edit: A good fix would be a way to turn off pull requests for projects or at least redirect users on how to send pull requests.
I am also pissed when someone ignores a feature I have written and redoes something without good reason.
Torvalds probably doesn't have time to handle a whole bunch of git pull requests, and most of them from github probably have problems or aren't important so this rule probably helps him a lot, practically speaking.
But obviously the people at github should really carefully analyze what he is requesting and if possible this could result in some minor improvements in that part of the github interface or git or both.
I don't know much about the Linux kernel, but I don't think that this type of driver information should be in such a centralized place and controlled by an individual or small group of individuals.
>pirtlj commented on pull request 17 on torvalds/linux a day ago Ouch my feelings are broken... I just wish you would live up to your image, but then again you're just an imperfect human too.
>pirtlj commented on pull request 17 on torvalds/linux a day ago I did not realizes that Linus' shit does not stink. Thanks for clearing that up...
problem solved :)
Github is not Git. It's a separate product which happens to support Git, but is not Git, strictly speaking. It's basically a social network for building software. Far removed from the revision control software it depends on.
Complaining that the commit log isn't formatted in his preferred manner is similar to an engine designer complaining that the car's ODB2 reports aren't easy enough to read on his hand-held scanner. The engine designer can dislike it all he wants, but if I was the engineering team who designed the whole car, I wouldn't lose sleep over his dislikes.
Or can you sum up yours here?
http://tbaggery.com/2008/04/19/a-note-about-git-commit-messa...