Live data from Hacker News

Git for Computer Scientists (2010)

eagain.net

101–110 of 110 posts

Re: Git for Computer Scientists (2010)

#101

A friend of mine just posted this today, and I totally agree: https://weisser-zwerg.dev/posts/software-engineering-vcs/

> in my opinion, the majority of projects developed in-house in an organization by a dedicated in-house software engineering team, would be better off following the guiding principles in Why Google Stores Billions of Lines of Code in a Single Repository and rather using something like SVN rather than git.

Mmm no thanks! In any case there's no reason you can't use Git itself as a monorepo! You don't have to inflict SVN on people for that.

Very weird opinion.

Re: Git for Computer Scientists (2010)

#102
post #20

I just think of git as a graph and branches/tags as text pointers to nodes in the graph. Doesn't seem that complex to me... Maybe I "got gud" though and can no longer empathize with git beginners

I think the hard part of Git isn't the bit you've just described. It's the terrible CLI and terminology.

Give any Git newbie a decent GUI and a translation for Git terminology into sane terminology and they will have no problems.

Re: Git for Computer Scientists (2010)

#103

For me almost every Git teaching resource has gone like this: Step 1.It is explained that Git is a simple program, and that the underlined idea can be understood easily, it is only that other materials have done a bad job about it. Step 2. Tell the reader a blob is just the byte object containing the information you are source-controlling. "See how easy it is?" Step 3. Invent their own nomenclature/diagrams/metaphors…

One day I'd like to break this circle. I've been doing 2-day Git workshops with a colleague for a few years now, and "to internals or not to internals" is our constant disagreement. I don't like talking about blobs, trees and anything below the "commit hash" level because I almost never need it myself. My other personal issue is the complete opposite of the "going way too deep into details" teaching resources: showin…

Do you have slides or other resources from your workshops you’d be willing to share?

Re: Git for Computer Scientists (2010)

#104
I worked on computer science projects for 20 years. At first we had no source management, everyone did whatever they wanted. Then we used CMS, and we occasionally stepped on each others toes but things were better. Then we switched to SVN and nothing much changed except we established a way to hold locks on files while they were being changed. Then we switched to git because the students wanted to learn the cool thing. We started having meetings to teach people git. Meetings about the best way to use git. Meetings to deal with common problems in our use of git. Productivity dropped because everyone now had to deal with git problems. It made my life hell because usually I just wanted to check in my code so it would not get lost, but instead I would continually get forced into reconciling git issues. I would have to resolve issues to get my code checked in because other people had changed something entirely unrelated to my work. I stopped using git and kept my own backups and only checked in code very occasionally so I could get work done. I noticed other people doing the same thing.

The main problem I had with using git is it did not match the way we worked. Git assumes there is one person who is the gatekeeper, who decides what gets into the source, and who does some integration and testing. In research there usually is no one in charge of that, instead everyone is responsible for their own code, testing it, and integrating it. The git model was wrong for us, we never used pull requests at all, because there was no one person who understood everything well enough to approve them. Students don't have the experience or time to be the integrator, the profs don't even write code, and I had multiple other things that I had to do. So using git made a mess of what had been a simple process previously. Git was designed by Linus to make his life easier in managing changes to a kernel. It does not work well in other scenarios and should not be used in many circumstances. Yes, you can make it work, but at a cost.

Re: Git for Computer Scientists (2010)

#106

geezus this is old, has there not been more recent versions/attempts at this kind of post?

also, is submitted almost annually with hardly any interest at all. Because either everyone has seen it already around for a decade, and/or it's actually not much of an article.

Re: Git for Computer Scientists (2010)

#107

Earlier quoted context omitted.

One day I'd like to break this circle. I've been doing 2-day Git workshops with a colleague for a few years now, and "to internals or not to internals" is our constant disagreement. I don't like talking about blobs, trees and anything below the "commit hash" level because I almost never need it myself. My other personal issue is the complete opposite of the "going way too deep into details" teaching resources: showin…

Do you have slides or other resources from your workshops you’d be willing to share?

Unfortunately, those resources are company-internal. But I'm planning to create a public resource based on my experience of doing those workshops, without falling into the trap mentioned by GP.

Re: Git for Computer Scientists (2010)

#108
post #8

I ran across this little gem recently: > Git gets easier once you get the basic idea that branches are homeomorphic endofunctors mapping submanifolds of a Hilbert space. * Isaac Wolkerstorfer, https://twitter.com/agnoster/status/44636629423497217

I have never got all these jokes. When my job switched from Subversion to git it took me about one week plus reading a couple of articles to become more productive in git than I ever was in Subversion. Yes, version control is a bit tricky but git is not that hard to understand and was much easier than contemporary Subversion versions.

It is not hard to be more productive in git than in subversion... (ok, I hate subversion). I think a better point of comparison would be mercurial, which is based on the same principles as git but with different opinions.

But I think the trouble with git is that it is very flexible, there are many ways to do things (ex: merge vs rebase) and the command line interface is not particularly intuitive. I messed up with git much more than I messed up with mercurial, but git also makes it easier to fix the mess.

Re: Git for Computer Scientists (2010)

#109

A friend of mine just posted this today, and I totally agree: https://weisser-zwerg.dev/posts/software-engineering-vcs/

> in my opinion, the majority of projects developed in-house in an organization by a dedicated in-house software engineering team, would be better off following the guiding principles in Why Google Stores Billions of Lines of Code in a Single Repository and rather using something like SVN rather than git. Mmm no thanks! In any case there's no reason you can't use Git itself as a monorepo! You don't have to inflict SV…

Well, the one reason would be to avoid having to deal with Git-Apostels who insist on using git "the right way" instead of how you tell them to. If they cannot learn the 3 or 4 ways of calling svn, for sure they cannot use git the way you want them to.

Re: Git for Computer Scientists (2010)

#110
post #19

Earlier quoted context omitted.

Is this a joke or serious? I don’t understand enough of the words after “branches” to know. I’m serious btw.

It's a parody/derivation from the monad joke, where one explanation for a monad is that they're "just an monoid in the category of endofunctors".

HN makes me realize I don't know enough words.
Post reply on HN