Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Git is the most appropriately named piece of software, ever

  1. Apr 10, 2015 #1

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    So why has it caught on so mightily?

    Git is arguably the most popular revision control software out there. Why?

    I have an occasionally like, but more often hate relation git. If there was a command "git make-salsa", it would tell me to open a can of tomato soup. Voila!

    Git aficionados will tell me the problem is in me rather than the tool: "You aren't using the right workflow!"

    In this case, the right workflow means using "git make-salsa --rebase chopped-fresh-tomatos --add chopped-onion --add squeezed-lemon --add chopped-jalapeños --add secret-ingredients". What about those "secret-ingredients"? "git help <command>" inevitable says something about those "secret ingredients". They typically involve words such as "default glob refspec".

    As a user, I personally find it almost unusable. I have to ask others what the "--secret-ingredients" recipe is for this command, that command, and many times, they turn out get it wrong because they too aren't "using the right workflow".

    And yes, this was a rant.
     
  2. jcsd
  3. Apr 10, 2015 #2

    nsaspook

    User Avatar
    Science Advisor

  4. Apr 10, 2015 #3

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    Generally, it's hate, for me. The documentation is so bad, so very, very bad. For example, the one-liner summary for git push is "Update remote refs along with associated objects." Similarly, the one-liner for git rebase is "Forward-port local commits to the updated upstream head." Seriously? What in the world does that mean? Reading the details on any git command drives me even crazier. It appears to me that they didn't just out of there way to write gobbledygook; it's as if they mandated gobbledygook. I can envision the behind-the-scenes conversation: "Someone suggested we say that git push 'uploads changes from your local repository to the remote repository'. What do you think?" "Oh, no. We can't say that! That's plain English! We can't use plain English; it's against the rules."
     
  5. Apr 10, 2015 #4

    nsaspook

    User Avatar
    Science Advisor

    It's software originally written by a systems programmer for other systems programmers where the documentation was the code base. The basic concept for git is different from most revision systems, there is in effect is not a remote repository that you check in and out files as you work.
    http://git-scm.com/book/en/v2/Getting-Started-Git-Basics
     
  6. Apr 10, 2015 #5

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    Of course there are remote repositories in git. You are perhaps thinking I wrote "central" rather than "remote". I didn't. I wrote "remote".

    git is a distributed revision control system; it doesn't enforce the concept of a central repository. I like that basic concept of distributed revision control. That there can be multiple repositories is a central concept in git. That there are remote repositories is the whole point of git clone, git push, git pull, git remote, git branch -r, etc. Note that "remote" might mean anything from some other git repo on my local machine to a git repo on a machine at my antipode (the point opposite the Earth to me).

    The problem I have with git is how they implemented the concept, not the concept itself.
     
  7. Apr 10, 2015 #6

    nsaspook

    User Avatar
    Science Advisor

    I hear what you're saying about cryptic help and have had a few 'fast-forward' gotchas but in the end it works better than just about anything else for looking at revisions when tracking down some obscure regression.
    You can always use a friendly front-end for the command line.
    http://git-scm.com/downloads/guis

    I'm currently using NetBeans IDE for most projects. The current version has integrated git support.
    https://netbeans.org/kb/docs/ide/git.html
     
    Last edited: Apr 10, 2015
  8. Apr 10, 2015 #7

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    There are some things that I dislike even more than git. GUIs and IDEs, for example.

    I like descriptive words, descriptive commands. Icons don't speak to me, and when they do (e.g., via alt text), it's usually lousy. More often, it's nonexistent. I like to see what the system is going to do to me. GUIs and IDEs hide all that from me. I like to keep my fingers on the keyboard. I can type far faster than I can mouse, and just typing (no mousing) lets me keep my thought processes intact.
     
  9. Apr 10, 2015 #8

    nsaspook

    User Avatar
    Science Advisor

    Coming from a command line/VI background I don't use the mouse much either but NetBeans has remote host compile capabilities that lets you develop on embedded Linux systems with limited power from a much more capable host, that's a big win for what I do.
     
  10. Apr 10, 2015 #9

    DaveC426913

    User Avatar
    Gold Member

    Hate.

    I just quit my job over GIT.

    I pulled my hair out one too many times over some stupid can't-go-forward-can't-go-back logical nonsense, and got written up for it.

    I had to get out of that stupid environment. Started my new job on Monday.

    Still hate GIT.
     
    Last edited: Apr 10, 2015
  11. Apr 10, 2015 #10

    nsaspook

    User Avatar
    Science Advisor

    Can I put you down as undecided?
     
  12. Apr 11, 2015 #11

    FactChecker

    User Avatar
    Science Advisor
    Gold Member

    I am curious about what the git haters prefer to git and why. I like git, but my only other option for version control (due to company policies) is creating a new directory structure for each version. So I was thrilled a month ago when we were allowed to install git. I only use it for my individual work. I don't put it to much of a strenuous test.
     
  13. Apr 12, 2015 #12

    TheDemx27

    User Avatar
    Gold Member

    First off, I'm so glad I'm not the only one who feels befuddled by the more complex functions of git. If I ever start doing anything more complicated than a simple push, I pull out the GUI, simply because I don't feel like learning all the command lingo.
    Best thing I've read today. :DD
    I once tried reading the official documentation, then I started wondering why I was wasting my time on that rather than writing code. Maybe I'm not proficient enough at "computering".

    tbh I don't really code too much, but when I do, I find the source control part the most tedious.

    Relevent:
     
  14. Apr 13, 2015 #13

    fluidistic

    User Avatar
    Gold Member

    Hopefully this can help: http://resrc.io/list/10/list-of-free-programming-books/#git.
    I use github mostly as a back up and quick share between my desktop pc and laptop. I'm slowly self learning programming and to me the git system is easier than programming itself even though it is an extreme pain to learn.
    I probably misuse it sometimes. For example when I want to contribute to one of my repository that I started on my deskptop pc, from my laptop. I write a file, then git add nameoffile.extension, then git commit -m "x commit", git push origin master and bam I get an error, I must first pull... And pulling means downloading the whole repository on my laptop while I don't want to do this at all since my repository is a bunch of non related random data/stuff. So I pull and then push and then I delete all the files on my laptop but the one I just uploaded. I'm guessing it's a bad habit and that I'm misusing git here...
     
  15. Apr 13, 2015 #14

    DaveC426913

    User Avatar
    Gold Member

    There's no question that it's powerful - pretty much the most powerful tool there is for version control.

    But is all that power worth the crushed souls of users it leaves in its wake? :nb)
     
  16. Apr 13, 2015 #15

    FactChecker

    User Avatar
    Science Advisor
    Gold Member

    Well, when you put it that way, no.
     
  17. Apr 13, 2015 #16

    DaveC426913

    User Avatar
    Gold Member

    My Facebook wall, not 25 days ago (10 days before I quit):

    In a thousand million billion years, I will never understand GIT.

    > GIT push
    "Updates were rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes (e.g. 'git pull ...') before pushing again.

    > GIT pull
    "There is no tracking information for the current branch."

    These are actually CONTRADICTORY.
     
  18. Apr 14, 2015 #17
    Ugh, tell me about it :oldruck:. The words it uses are not intuitive. They are more like counter intuitive. Anyhow, the best tutorial I found for extremely slow people like me is:

    https://www.atlassian.com/git/tutorials/

    Very good tutorial, I recommend it. Simple and to the point.
    I was told at uni: "Put all your projects at GitHub. Employers like when you show them that you've worked at teams with someone and have the evidence there" and I replied with: "Guess who's not getting a job then." :oldlaugh:
     
  19. Apr 14, 2015 #18

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    I've used so many different revision control systems. The very first one I used, SCCS, had a widespread pronunciation. Just add a "U" after the "S" and pronounce. RCS, well it SCCS RCS (just fill in the missing vowels). Progeny of SCCS and RCS such as CVS and subversion -- each of them also offered some hateful "features". Clearcase is a very nice tool from IBM's perspective; it earns them a nice chunk of change. Most others have a rather different perspective of clearcase.

    In short, every revision control system I've worked with SCCS RCS in one way or another.

    I've played a bit with Mercurial (hg), and I liked what I saw. That wasn't a real test. The rock sucking commences only after deploying a revision control system on a real project with multiple authors. And then it's too late.

    My biggest problems with git:
    - The documentation SCCS.
    - Almost every command needs just the right --secret-sauce option to make it work.
    - Sometimes git just says "no". No amount of coercion, no --force option works. And you are stuck.
     
  20. Apr 14, 2015 #19

    FactChecker

    User Avatar
    Science Advisor
    Gold Member

    It sounds like you would currently recommend looking at Mercurial, but you are not optimistic. Thanks for the input.

    PS. It's just an academic question on my part. I'm only allowed to use git and I only use it for my own work. I can't stand using nothing.
     
  21. Apr 15, 2015 #20

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    I'm not optimistic because playing around a version control system doesn't expose you to the real fun to be had with that system once it is used in a real-world setting.

    I'm using "fun" a bit sarcastically here. In this sense, running into a concrete wall is "fun". When that gets tiring, one can apply newly learned karate techniques against said concrete wall. Even more fun! All of that pales in comparison to the real fun that can be had with version control software.

    That applies to any and every version control system I've used. I have zero expectations that Mercurial somehow manages to avoid that "fun". In fact, I know that it hasn't. There's a very popular Q&A website that I won't mention by name (Greg doesn't like mentions of that website) whose popularity would be far smaller if it wasn't for all the fun that version control systems foist on their users. A huge number of questions at that site involve people having fun with git, but also a good share about fun with Mercurial.

    A lot of the fun is self-induced (or team-induced), but it happens. For example,
    • Someone once committed a test script that contains, in clear text, a user name and password to a secure site. This happened a long time ago; that file is in every user's repo.
    • Someone didn't set their filters correctly and has been committing compiled and linked executables to a test directory. The official tests don't use that directory, so the problem wasn't noticed until someone complained about the many hours it takes to make a fresh clone the repo.
    • Someone did a bad octopus merge that has turned the repo into a tangled mess.
    You would like to completely erase those from the repo, each and every instance of them. Have fun!


    That's the real problem. While they're all bad in their own unique ways, not using anything is worse, much, much worse. The amount of fun to be had when one doesn't use version control at all is mind boggling.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted



Similar Discussions: Git is the most appropriately named piece of software, ever
  1. C++ software (Replies: 5)

  2. Fit software (Replies: 1)

Loading...