
Git Punish – The Missing Git Command - iigres
http://git-punish.io/
======
LeoNatan25
I hate such things. It creates a terrible work environment. Instead of
focusing on the _git blame_ and _git punish_ , everyone should just focus on
_git commit_ fixes to make the code work. Does it really matter who put the
bug? We are all humans, we all make mistakes.

~~~
tmd83
While the name maybe a bit unfortunate or maybe made just for fun, git blame
has actual use. While it's useful to see the commit log and figure out how the
bug came to be, it can also be useful to talk with the respective developer if
available and get an even better perspective.

~~~
icelancer
You can just also use git annotate if you want to avoid the negativity.

~~~
tmd83
Yup, wasn't defending this one :). Did the git annotate came after blame cause
in the olden time I remember seeing the git blame example.

These days I mostly use IDEA's annotate feature and don't even know what's the
command used in the backend.

~~~
bazzargh
They both came from the earlier `cvs annotate` command. annotate is the
original name (from 1996). While it was common to talk about cvs annotate as
'blame', I think it first became the name of a command in subversion 0.32.0
(~2003, rcs blame was ~2004, cvs annotate grew the blame alias ~2008)

~~~
bbatha
Subversion has blame, praise, and annotate depending on your mood. [1] Though
I think blame was first.

[1] [http://svnbook.red-
bean.com/en/1.6/svn.ref.svn.c.blame.html](http://svnbook.red-
bean.com/en/1.6/svn.ref.svn.c.blame.html)

------
tedivm
Go on, just sudo that unencrypted http link and blindly run what it downloads.
I'm sure nothing bad could happen.

~~~
Ao7bei3s
What, just because he's suggesting to use curl to download a file?

There's a difference between "curl ... | sh -" and this.

He's even separated it nicely into steps, so you can view that (very short)
file in between.

What worries me more is that he doesn't properly quote $@, so this script will
break when there are spaces in the filename. One of the reasons I hate bash.

~~~
rsy96
Not because he is suggesting curl. But because he is suggesting curling
without TLS.

~~~
Ao7bei3s
TLS wouldn't help; the greatest risk is the author himself sending a malicious
script (no offense, Sergii).

So everyone needs to check the script before running it anyway. Which is easy,
because it's a very short script.

(Of course, it's so short that it might as well have been an alias or, even
better, just a copy-pasteable git command, but I guess the author really
wanted to call it 'git punish'.)

~~~
greggman
How is this any different than any app/executable/script period? When you
download VLC did you read all the code to check it's not installing a root
kit? When you added some python lib do you go through all the code and make
sure that on the 20th run it doesn't upload your private ssh keys? Have you
checked all the vim or emacs code in your latest download before running it?
Maybe I'm missing the issue but they all seem about the same level of bad.

Am I missing something?

~~~
Ao7bei3s
No, what you're saying is exactly my point: there's nothing wrong here.

------
enqk
This is symptomatic of something that has been bothering me lately.
Programmers seem to be in some sort of twisted abusive relationship with their
tools. Tools that other fellow programmers have written.

Why do programmers hate other programmers so much? Why do they have so little
empathy and care?

Too much staying in one own's head? Lack of exposure to diverse opinions and
emotions?

~~~
wingerlang
> Programmers seem to be in some sort of twisted abusive relationship with
> their tools.

What do you mean?

~~~
enqk
The tools provide some value and we depend on them, however they also abuse us
by being very unfriendly and disrespectful of our time.

I think this emerge of a certain way that programmers think of other
programers.

There are of course exceptions, but often tools made by other programmers
don't seem to respect us as users and have bad user experience: \- Few
thoughts given to make common operations good, \- Lots of clunky menus, \-
Poor performance,

Basically going out of their ways to make us do something else than
programming by killing the feedback loop. (Think libraries that are slow to
compile, tools that run slowly or require assistance or are otherwise too
granular)

The absolute worst example I can give is something like Hudson or Jenkins.

~~~
mikestew
> The absolute worst example I can give is something like Hudson or Jenkins.

Though I agree with you to some extent, IMO you chose a bad example. Jenkins
has one of the most shallow learning curve of any the tools I use, and doesn't
require a lot of fussiness. If I can it to build from a terminal window, I can
get it working on Jenkins in 30 minutes.

Might I suggest Appium for your example? The one where, in the _official_
docs, it says "If install fails, keep trying to install a few times." Rest
assured that you'll need those instructions. Gawd, I hate Appium.

~~~
enqk
My experience is using Jenkins with Matrix jobs (and various plugins) for
building native code on multiple platforms. There, the Jenkins UI doesn't
shine.

Problems navigating between pages and knowing what one is looking at abound.
Organizing jobs in various tabs works but isn't extremely easy. The UI doesn't
handle well dealing with large lists of nodes/labels.

The plugin based architecture might be to blame for it, however I think it's a
conscious choice from the original designers and they should be hold
responsible for it.

------
arnarbi
As always, kudos for taking an idea and executing it. But this is juvenile and
harmful to your work environment. Please think twice before using it.

------
iigres
> git clone git@github.com:yavorskiy/comment-parser.git

> cd comment-parser/

> git punish -L1,24 index.js

[http://git-punish.io/3EWZW](http://git-punish.io/3EWZW)

code and committers you see on the page are parsed out from `git blame`﻿

------
bigethan
If most of the comments here are about how this is pretty hostile and
unfriendly, how is it on the front page? The Silent Brojority?

~~~
Khao
Because those who comment that it's bad simply missed the joke and are taking
this seriously.

------
Sir_Cmpwn
Wow, guys. This is clearly a sarcastic tool. Banter between devs is common and
healthy.

~~~
organsnyder
What may seem like banter to one person may be extremely hurtful to another.
This is especially true for new devs, who are acutely vulnerable to Imposter
Syndrome.

Of course, banter between long-time colleagues is usually harmless. But it's
often difficult knowing where to draw the line.

~~~
Sir_Cmpwn
You also have to praise and reward devs for their successes. It's not black
and white - you don't have to pick between banter OR praise. You can have
both. It's a dynamic. Show them that you care and that they're doing good
work, genuinely. Tease them about small mistakes with tools like this,
sarcastically and socially, and it helps build up rapport and make the team
that much more tightly knit. Pointing out simple mistakes in a tongue in cheek
manner is a good way to show someone that they've made a mistake, but it's not
a big deal and no one is _actually_ upset with them about it.

~~~
organsnyder
It's still difficult to know when the line has been crossed. What's perceived
as harmless (even productive) banter by everyone else may still be hurtful to
the recipient. You never know whether someone is okay with it, or simply
hiding their emotions well.

I do agree that a copious amount of praise goes a long way toward developing a
healthy environment.

------
_jomo
The "background" image should have a z-index smaller than the text (and the
text should have transparent background).

Otherwise selecting text sometimes results in grabbing the image instead.

------
bjackman
What does it do?

------
devit
This doesn't seem very effective at what it's trying to do. Once you create
the page, what then?

It should be a service that mails all other contributors in the commit log
something like this: "Mr. <insert name> introduced a CATASTROPHIC security bug
right here! Look at that! <insert code> <insert insults> Are all his
contributions hidden landmines that might jeopardize the project at any time?
Clearly they need to be checked! <insert list of all his other commits>"

Maybe "git shame" would be more appropriate too.

And yeah, you should probably not do that if it's a company project or a
noncritical open source project.

------
biggestbob
WTF is this?

~~~
conception
It's git punish, the missing git command.

~~~
LeoNatan25
No. git was not created to make a hostile development environment.

~~~
icelancer
Oh yeah? Why is it git blame when it was svn praise?

~~~
samuellb
"svn praise" seems to be simply an alias for "svn blame". Try "svn praise
--help"

------
macjohnmcc
Isn't using Git punishment enough?

