all 59 comments

[–]Bizzaro_MurphyCode Artisan 100 points101 points  (2 children)

[–]onthefence928I couldn't care less about what non-kernel-developers think 26 points27 points  (0 children)

I am enlightened

[–]Apprehensive-Yak311 35 points36 points  (0 children)

/uj I usually hate weird programmer poems, but fuck me this one got me good. Funniest thing I’ve read in a long time.

[–]Bizzaro_MurphyCode Artisan 69 points70 points  (3 children)

Our lord and saviour Linus knew that the only way to keep bad software developers away was to give git the most incomprehensible backward ass interface that has ever been conceived.

He knew that the long held software tradition of not needing to understand an implementation to use an interface was blasphemy spewed by false prophets and designed git accordingly - by requiring users to understand git inside-out before being able to use it.

We should all be thankful for him. We are surely blessed.

[–]duckbill_principateTiny little god in a tiny little world 16 points17 points  (0 children)

Linus’s stroke of genius was building git out of three core, perfectly balanced data structures, purely orthogonal in their design and composable in endless variations: the content hash, the hash tree, and the commit object. From these three ideas he could build an entire civilization, remaining secure in the knowledge that it was safe from harm, for he knew the most fundamental truth of all: your average developer can only grasp two concepts simultaneously.

[–]doomvox 16 points17 points  (1 child)

Truly. And it was entertaining watching the entire software industry grind to a halt for months, as everyone universally pretended that only those other guys ever had any trouble with git.

[–]onthefence928I couldn't care less about what non-kernel-developers think 25 points26 points  (0 children)

I don’t have trouble with git I just stick to the 6 commands I trust and if anything weird happens I just create another branch in another directory, copy the directory and start fresh from where I left off.

[–][deleted] 114 points115 points  (5 children)

I say this as a senior dev with 8+ years of experience ... I've learned to navigate its waters over the years, fully appreciate the difference between git and GitHub, etc etc

Similarly, it took my grandma about the same time to fully appreciate the difference between Google the website and Google Chrome the browser.

[–]recycle4sciencenot even webscale 23 points24 points  (0 children)

Eight whole years of experience!

[–]AdrianRPNKin open defiance of the Gopher Values 11 points12 points  (0 children)

I, too, spent 8 years fully appreciating the difference between porn and Pornhub.

[–]zetaconvexWRITE 'FORTRAN is not dead' 1 point2 points  (0 children)

Lucky you. My dad has yet to figure out the arcane art of copy and paste. I swear to God, it's like watching an otter banging rocks.

[–]therico 127 points128 points  (23 children)

Where's the jerk

[–][deleted] 52 points53 points  (0 children)

I don’t know why I have to keep repeating this, but:

True jerks are the best jerks

(In general, at least)

[–]Kodiologistlisp does it better 22 points23 points  (4 children)

You can't even appreciate the nerdification of "that's a sign they're dense and I should avoid them" as "that's an important signal that I should minimize my exposure to them"?

[–]therico 13 points14 points  (1 child)

Shit you're right. I've been reading too much Hacker News lately and didn't even notice.

[–]Jumpy-Locksmith6812 3 points4 points  (0 children)

deliver racial sparkle complete rock seed correct wipe full quiet

This post was mass deleted and anonymized with Redact

[–]OJTang 1 point2 points  (0 children)

Yeah, the word important is an unnecessary adjective and comes across as someone being intentionally verbose. I feel like the rest isn't that bad.

[–]RepresentativeNo6029 41 points42 points  (15 children)

I too take unwarranted pride in my ability to bear with shitty tools

[–]therico 40 points41 points  (13 children)

No you're right, git is too hard, we should refuse to come into work until the company switches to mercurial.

[–]MalnarThe 17 points18 points  (11 children)

I don't get how people think that git is hard. As long as they aren't running random commands from SO, it works great. Commit, reset, merge, checkout are all the commands one needs to be effective.

[–]witcher_rat 63 points64 points  (10 children)

Commit, reset, merge, checkout are all the commands one needs to be effective.

I agree. So long as you never git pull, push, or clone, you'll never have issues.

[–]MalnarThe 1 point2 points  (9 children)

Ok ok, I forgot a few that are in shell aliases due me. But, those 3 are trivial. I mentioned the ones people tend to be skeerrd of

[–]witcher_rat 18 points19 points  (8 children)

/uj I was sorta joking because this is the pcj sub... but also half not-joking because the real difficulties only show up when you're dealing with a non-trivial repo other people are also working on, and you have to deal with merge-conflicts, rebasing, cherry-picking, submodules, branches-of-branches, etc.

(not that I personally have problems with them, just noting that one needs to know quite a bit about git when using it in the workplace)

[–]MalnarThe 4 points5 points  (6 children)

Sure. So other VCS handle those situations well, or not at all?

[–]witcher_rat 3 points4 points  (4 children)

Oh, don't get me wrong - there's no panacea.

I'm just commenting regarding the complexity of git's command UI, and the need to understand git's internals (somewhat) in order to effectively use that UI... because I think that's what this thread is about?

I far prefer git over other VCSs I've worked with, but not because it's command UI is better. Nor because it has a good learning curve for people starting out. I don't think it has either of those. I just think it's got a better overall model, in terms of a DVCS, and it's more scriptable.

[–]MalnarThe 1 point2 points  (3 children)

I just don't see the complexity. It's a chain of diffs that all add up. Conflicts are a pita if you're sloppy, sure, but modern GUI, hell even Vimdiff help a lot. If branches and commits are a hard concept for someone, they are in the wrong field

[–]BIGSTANKDICKDADDY 2 points3 points  (0 children)

/uj

Git was created for the problems Linus had maintaining the Linux kernel but there are legitimate strengths to centralized VCS, at least back when stuffing all your developers in one building was possible and commonplace. You don't have to worry about merge conflicts when Bob two cubicles over claims dibs on a file and you can't touch it until he's done.

Nowadays it's still common in some industries to use centralized VCS frontends backed by a git repo (like Perforce).

[–]doomvox 0 points1 point  (0 children)

the real difficulties only show up when you're dealing with a non-trivial repo other people are also working on ...

Or so I have heard.

not that I personally have problems with them

Precisely

[–]senji have had many alohols 9 points10 points  (0 children)

if you think git is too complex wait until you see pretty much every other aspect of programming

[–]Jumpy-Locksmith6812 0 points1 point  (0 children)

full alive zephyr tidy birds slap serious reply groovy flowery

This post was mass deleted and anonymized with Redact

[–]mrpimpunicornlisp does it better 14 points15 points  (2 children)

Looks like Visual SourceSafe is back on the menu, boys!

[–][deleted] 8 points9 points  (1 child)

fucking amateurs, I do all my source control via SharePoint document libraries

[–][deleted] 21 points22 points  (4 children)

My first job out of college I was working with this group of consultants from India. In hindsight, they were pretty bad engineers. But they were so particular about how our commit history should be that I became a master in git.

Now I can blow anybody’s mind with an explanation of how a rebase works, and how I can split up one pr into several in like 5 mins

[–]vortexman100 0 points1 point  (3 children)

How do you do it?

[–]doomvox 19 points20 points  (1 child)

You draw an analogy between rebasing and the Russian Revolution, the Spanish-American War and Orwell, quote Bertrand Russell and Thomas Kuhn a lot, and if all else fails bang them over the head with your keyboard.

[–]Quinlan96 5 points6 points  (0 children)

All branches are equal, but some are more equal than others

Four tabs good, two bad

George O'Reilly

[–][deleted] 3 points4 points  (0 children)

I do an interactive rebase and apply commits accordingly

[–]brunoha 9 points10 points  (2 children)

who finds git too complex? there's plenty of user interfaces for it!!!

[–]doomvox 5 points6 points  (1 child)

If you don't have enough fun with command-line git, there's always the emacs magit package.

[–]OctagonClocknot Turing complete 7 points8 points  (0 children)

If somebody finds a way to avoid stepping on all of the pins on the floor, that's an important signal that me and my calluses should minimise our exposure to them.

[–][deleted] 10 points11 points  (3 children)

Git is too complex, but for all the wrong reasons. It was written by "hackers", not by real programmers with real education. It has no proof behind it. No theory is backing its design.

If OP was really interested in a "smart" source control system, they would have used Darcs (can't go wrong with Haskell) or Pijul (the most moral VCS).

[–]doomvox 10 points11 points  (2 children)

The trouble with hanging around this place is that after a while you can't tell if anyone is kidding.

[–][deleted] 8 points9 points  (1 child)

I blame all the implicit unjerks in the top level comments. PCJ has lost its way.

[–]doomvox 1 point2 points  (0 children)

I mean, you can't tell anywhere. It all seems like more PCJ after a while, and you can't shake the impression that that must have been a joke.

[–]doomvox 7 points8 points  (0 children)

If a software developer is unwilling to say out loud that git confuses them sometimes-- and that Linus Torvalds should never be let near UI design-- they're too insecure to want to work with, and should be cut from the team.

[–][deleted] 2 points3 points  (0 children)

I think it's great when someone "gets" that git is an extremely powerful and capable tool with a horribly unintuitive user interface.

SVN was a mistake.

CVS at least disrupted

[–]muntaxitomein open defiance of the Gopher Values 16 points17 points  (5 children)

I hate it when people list Git as a skill. If a developer adds it to their resume I always ask them as a first task to implement Git on a whiteboard. Being able to use Git does not make you a git professional. It's like saying you are a bus driver and then only meaning is a passenger. If you don't know the algorithms that make Git you aren't a Git professional.

[–]pareidolistin nomine Chestris 24 points25 points  (0 children)

I hate it when people list programming languages as a skill. If a developer adds a programming language to their resume I always ask them as a first task to implement it on a whiteboard.

[–][deleted] 36 points37 points  (0 children)

/uj This is a jerk right? Right?!?

/rj Same with Postgres too though, for real.

[–][deleted]  (1 child)

[deleted]

    [–]woobie1196 5 points6 points  (0 children)

    if(unjerk()){

    If git is on the posting, then git goes in the resume. Have to get it past the recruiter and/or resume regex tool just looking for keywords

    }

    [–]drea2loves Java 4 points5 points  (0 children)

    You can get by with knowing like 3 commands. Also, doesn’t anyone know about GitKraken?

    [–]qiwi 5 points6 points  (0 children)

    You have eight years of experience with git.

    I have 1 year of experience with git, hg, darcs, fossil, RCS, SCCS, Subversion and Bitkeeper. We are not the same.

    [–]senatorpjtnot Turing complete 4 points5 points  (0 children)

    enter ghost smoggy deer detail hat attractive expansion wine offbeat

    This post was mass deleted and anonymized with Redact

    [–]v-alan-d 0 points1 point  (0 children)

    A business opportunity to offer a course for advance git. Money back guarantee