By Shamus Posted Wednesday May 2, 2012

Filed under: Notices 155 comments

EDIT: So after spending the better part of an hour trying to make this work, I see a comment from someone pointing me to an old post where I talked about using Mercurial for my project. I sort of vaguely remember looking at Mercurial at some point. I think I installed it?

I look, and sure enough I see Mercurial files in the Project Frontier directory. Hm. So I guess all I need to do is create an account on BitBucket?

I do so, but it turns out I already have an account. I log in, and I find weeks and weeks of meticulously tracked changes. Apparently I not only used Mercurial, but I used BitBucket, and I used both extensively. I can read through hundreds of changes. All written by me.

It is really, really creepy realizing that I did all this stuff and no longer remember it. It’s like looking at someone else’s work. Or like someone else is reading my work. Or something. I don’t know.

I’m worried there’s something wrong with my brain that makes me forget things. Also… what if there’s something wrong with my brain that makes me forget things?

Okay, I’ll be making the repository public, but I need to go freak out for a little while.

So I’m trying to add Project Frontier to GitHub. This is not going well.

Created an account. Created a repository. Installed Git locally. Followed the directions to set up git locally, which includes typing stuff into a Linux shell, which is trivial if you know what you’re doing and utterly, utterly mysterious if you don’t. Created ssh key. Set up a local repository. Added files meticulously one at a time from a list of hundreds of files because the Git GUI just lists all files and I don’t see how to filter for JUST source files. I hit commit and… nothing showed up.

Okay. This was supposed to be a quick & easy thing, and I’m now 40 mins in, I’ve got Git infrastructure spewed all over my computer and I can’t get it to do this very simple thing. I’ve used source code control before, and it was always pretty straightforward. Even thirteen years ago, I never had to type crap into a console window to perform simple tasks. Is Git only for people who understand Linux? (The front end is all friendly and Windows-like, which is what led me to believe I’d be able to do this. If it started with a console window I would have realized this was for someone with a different skill set and looked elsewhere.)

I see to get it to ignore the hundreds of unwanted files I just need to create a file called… .gitignore. Damn it. Stupid Windows will allow filenames starting with a period to EXIST, but it won’t let you CREATE them. (Minecraft has this same problem: the install directory is called .minecraft, which means if you want to backup & restore, you have to COPY files in and out of it, instead of renaming the directory.) You can blame Windows (I do) but the upshot is that I can’t use this feature on this operating system.

I have no idea what Git wants or how it works. I don’t see ANYTHING that tells me how to push changes to the remote repository. If doing simple things like “submit changes” means using a terminal window, then… damn. What year is it? I know you Linux coders have a high tolerance for this sort of thing, but damn – there are better ways of using a computer these days. Case in point: If I had a menu, I would be able to work this out for myself.

So, I’m willing to put time into this if it means it will be done right. But if Git is useless to a non-Linux person on a Windows machine, then it’s time to uninstall this mess and look elsewhere. So how about it? Is it possible to use GitHub with this GUI front end? Can Git work without using a terminal? If Git works on Windows, can someone explain how to go about getting files from here to there?

Sorry to use the community as a search tool, but Google isn’t helping and I’d like to know if I’m wasting my time before I do any more of this.

EDIT: Based on the comments, looks like GitHub is the wrong way to go for me. I’m going to try out BitBucket.


From The Archives:

155 thoughts on “Github

  1. RodeoClown says:

    Can you use “git push”?

    I use mercurial, rather than git, but committing and pushing are two different steps in distributed version control. Committing saves the diffs locally, but you still need to push them out to the remote server.

    1. Psithief says:

      Once again, the Internet sadly must tell Shamus “You’re doing it wrong.”

      1. Shamus says:

        Once again someone is a smug jerk to someone else who has asked for help. Yes. Obviously I’m doing it wrong. That’s why I asked for help, because I didn’t know what I was doing wrong. I knew when I posted this that SOMEONE would be an ass about it. Congratulations.

        Also: Note the error message I posted. “Push” is mysteriously broken. I’ll let you sort that one out. I’m going to use Bitbucket.

        1. Psithief says:

          Clearly I missed the last paragraph of the post in which Shamus is already aware of this and my response was unnecessary.

          The layout of the post could use a lot more work though. This starts out like “let me tell you about how terrible my day was, and how stupid every piece of software I’m not familiar with is” instead of “hey I have a problem and this is what I’m trying to do and what I’ve tried.”. Please don’t bait and switch.

          1. Soylent Dave says:

            You don’t seem to get it – the problem isn’t that you ‘missed’ the point of the post, or that Shamus’ post (on his own blog!) is structured badly.

            It’s that your reply does exactly sod all other than say “Nyah nyah nyah, Shamus is stupid”

            What exactly are you trying to defend here? At what point would that response have been necessary? Really?

            (not that I don’t expect people to be bullying, condescending and/or sarcastic on the internet – but at least own it when that’s what you’re doing)

          2. John Lopez says:

            The posts to this site are normally incredibly well mannered.

            This isn’t one of those moments. Please be kind to our host, who clearly has more forbearance that I do in these situations. I’m more of a ban hammer for the sky kinda guy when someone belittles me by way of failed reading comprehension, much less when being belittled a second time for calling them out of those incorrect foundations.

            *Especially* after suffering at the hands of new software. Shamus, can you share those chill pills?

          3. Psithief says:

            You’re assuming I was being sarcastic. I was not, I was sad. “sadly” means “with regret”. We don’t want to feel like Shamus’ normally insightful blog posts are becoming less so. Fans are the harshest critics.

            My reading comprehension failed me, and I subsequently suggested a way to format technical posts requesting input in a way that would assist people like me in reading it correctly.

            Text communication is hard, so please believe I honestly am only critical of the contents of this blog post and not the author in general.

            1. John Lopez says:

              I assumed no such thing: I said pretty clearly that your assaults on our host would get you a ban hammer in my forums. Acting like a troll is a zero tolerances thing for me.

              I have zero interest in parsing, backpedaling, “I really meant” or the other BS that trolls use to prolong the “fun”. Act as ass, off you go.

              See: you angered the host with your error and then instead of backing off you attacking *again*. There is no equivocation there, just internet dickery.

              1. Shamus says:

                Okay. I don’t see any point in continuing an argument about an argument. Let’s move on.

      2. BeardedDork says:

        I’m increasingly under the impression that people who respond to requests for help in this fashion, don’t know the answer either, they just want you to think they do.

    2. RodeoClown says:

      Check out Eric Sink’s book on Distributed Version Control: Version Control By Example

      He’ll send you out a free copy if you click on the link there (he sent one to me, it’s sitting next to me on the desk). Walks through how DVCS works in a really useful manner, comparing it to all the old styles you’ve used before too.

  2. Mark Erikson says:

    I haven’t used Git much myself yet, but I think RodeoClown’s on the right track. There’s committing stuff to your local repository, and then there’s pushing those changesets to the remote repository.

    You may also want to try a GUI client for Git. I think the two main ones for Windows right now are Git Extensions ( http://code.google.com/p/gitextensions/ ) and TortoiseGit ( http://code.google.com/p/tortoisegit/ ).

    But yeah, Git started life as a bunch of Linux shell scripts, and still has a lot of that heritage. One of the reasons I’ve mostly been using Mercurial lately.

  3. Shamus says:

    Addendum: Hitting “Push” in Git GUI results in:

    window name "push_setup" already exists in parent
    window name "push_setup" already exists in parent
    while executing
    "toplevel $w"
    (procedure "do_push_anywhere" line 7)
    invoked from within
    invoked from within
    ".vpane.lower.commarea.buttons.push invoke "
    invoked from within
    ".vpane.lower.commarea.buttons.push instate !disabled { .vpane.lower.commarea.buttons.push invoke } "
    invoked from within
    ".vpane.lower.commarea.buttons.push instate pressed { .vpane.lower.commarea.buttons.push state !pressed; .vpane.lower.commarea.buttons.push instate !di..."
    (command bound to event)

    1. Dan Everton says:

      What Git GUI are you using? It sounds like it’s having problems. I’d strongly suggest shift to TortoiseGit as suggested above which is very mature and reasonably friendly.

      Git should be usable under Windows, but remember it’s not just Git and it’s own commands you have to learn, it’s also general concepts about working with a Distributed Version Control System. For example, understanding the difference between committing locally and pushing your changes to a remote repository.

    2. Luke Maciak says:

      This looks like a problem with the GUI. Those are not actual Git error messages, but rather the Windows UI. It’s hard to tell what it is about. I would recommend the following:

      1. Manually delete the .git folder in your project directory
      2. Re-create the repository again

      This may or may not resolve the issue.

      1. Soylent Dave says:

        “turn it off and on again”

  4. SavageMessiah says:

    Mercurial is much more pleasant and integrated on windows. This isn’t a dig against git, it’s just a fact.

    Get http://tortoisehg.bitbucket.org/, sign up for bitbucket. Create the repo on bitbucket. Open Hg Workbench, go to settings -> extensions, tick mercurial_keyring. (This isn’t strictly necessary but will make your life easier later). Right click in explorer -> Tortoise HG -> Clone. Copy and paste the https clone url from bitbucket, put in your password (your username should be in the url if you are logged in) [mercurial_keyring will save the password so you don’t have to put it in again when you push]. You’re cloned. Do stuff. Commit. Push from Hg Workbench or right click in explorer -> Tortoise Hg -> Synchronize.

    No dealing with the command line or with ssh keys. Tortoise does come with the full hg command line client if you want to use it though.

    Hg also uses dot files but for ignoring stuff you can use the gui.

    A good tutorial on how to use hg (from the command line, but it maps easily to the gui) is here: http://hginit.com/

    Mercurial is used via TortoiseHG by many people with zero command line or linux knowledge every day at my workplace so it seems to be a reasonable choice.

    As for git’s linux-ness, it was initially written by Linus Torvalds after all.

    Man I’ve edited this comment way too many times.

    1. Blanko2 says:

      i second this. Bitbucket also has better setups for projects: GitHub only lets you make public ones, bitbucket lets you make private ones (up to five people).

      1. Primogenitor says:

        … for free. If you pay enough then anythings possible.

        1. Blanko2 says:

          Yes, an important addition. Free private repos.

    2. droid says:

      I was about to say this, but now I will just add: hginit is awesome.

      Also, Kiln is another hg hosting thingamajig that has been advertised on your site, I have used it and it seems legit but I haven’t compared it to bitbucket.

      1. nmichaels says:

        Kiln is Joel Spolsky’s (who wrote hginit) company’s product. It’s very windows-centric so I haven’t checked it out, but I hear good things.

  5. Justin says:

    Calm down and remember that Git and the terminal want to help you. Start by typing:
    git help

    Look, it lists the tasks you’ll want to do most frequently. And it tells you how to get more specific help. Try:
    git help add
    git help commit
    git help push

    Those commands should see you through most of this initial phase. Also, most git commands will take patterns instead of filenames, so you can do things like:
    git add *.c

    1. DrMcCoy says:

      “most git commands will take patterns instead of filenames”

      OT, but is this true on Windows too? On Unixoid shells, those do the pattern expansions, but IIRC, on Windows, the pattern expansion is not done by the shell but by the commands themselves.

      1. Justin says:

        Windows?! The problem begins to come into focus: http://dilbert.com/strips/comic/1995-06-24/

  6. Jake Albano says:

    You’re already using Mercurial for this, right? (http://www.shamusyoung.com/twentysidedtale/?p=12061) Just use Bitbucket. It’s the best Mercurial code hosting site ever.


    There’s an awesome tutorial when you start a repository.

    Oh, and if you want a Mercurial GUI, check out TortoiseHG.

    1. SolkaTruesilver says:

      If this post eventually turns out to be an elaborated hoax to cause Shamus’s sanity to slowly slip into a stable state of delirium, well played sir.

      Shamus: if it does indeed turns out to be the case, you can’t compete with such determination. Just slip already XD

      1. Jake Albano says:

        Hah, I wish I had that kind of power. :P Alas, I’m just a guy with a reasonably good memory and a decent amount of technical know-how.

  7. Psithief says:

    How to create a file like “.minecraft” or “.gitignore” in Windows.

    It’s very simple. Just type in “.minecraft.” or “.gitignore.”. You can find this information with a simple google search. However you first have to stop assuming that this information isn’t out there, Shamus. Confirmation bias!

    1. Exetera says:

      The truth is out there. (I want to believe.)

    2. SiliconScout says:

      Are you a troll or an idiot? Sorry but it gets hard to tell.

      Did you try doing this yourself?

      Go ahead open windows explorer, create a new folder and try to name it with a leading period and it will tell you

      “You must type a file name.”

      I just tried it 2 different ways through the GUI.

      Seriously guy there are probably 100,000,000 sites where you can be an asshat and it’s perfectly accepted, hell even encouraged but this is not one of them.

      Thanks for coming out though.

      Shamus for the record it is possible but you have to do it through the command shell and use the MD command.

      1. Adam Bloom says:

        You didn’t read his post very carefully. If you create a file with the name “.gitignore” it will be rejected, if you create one with the name “.gitignore.” it won’t.

        1. SiliconScout says:

          Ahhh right you are , I didn’t see the trailing period amongst the deluge of punctuation.

          I stand corrected on that point, indeed windows drops “extensions” from any folder name thus the trialing period will allow the creation of such a folder.

          1. Psithief says:

            ?? If I didn’t add the deluge of punctuation, how would the second period be noticed?

            I’m just trying to share information. One part of the information is that there is a way to create those files. The other part of the information is that assuming that Windows is irredeemable prevents you from looking for such a solution.

            If you want me to elaborate, I would say it is merely ‘awful’ in some aspects.

  8. Wykydtron says:

    Sorry to sound like such a nub, but what’s so hard about putting code on the Internet? Is it possible to just stick it into a .zip and throw it out there?

    1. Dev Null says:

      Fair question. It is possible, but:

      1) Depends on whether you want it to land somewhere where anyone will find it.
      2) Making changes to anything in that zip file is an enormous pain.
      3) If more than one person tries to work on the zipped project at the same time, the universe implodes.

    2. Mark says:

      Sharing code is a common problem for which version control systems are a solution designed specifically for it. They’re much easier to deal with than just hosting a zip… if you know how to use them, in addition to offering substantial benefits when doing things with the code besides sharing it. A bit of up-front investment leads to long-term gains.

    3. Blanko2 says:

      There are literally two papers of my swen degree that are devoted to teaching you how to use source control. What you said there may have killed one or more of the lecturers.

  9. Wes says:

    I use the git CLI on Windows personally, but my boss uses a GUI called SmartGit (free for non-commercial use) that he’s pretty happy with. Sorry you’re having trouble; it’s a pretty big jump between traditional version control and a decentralized VC system like git.

    Honestly, git doesn’t even try to be a Windows program at all. It’s meant to be run from a linux-y shell and the only compromises it makes are in how much of that linux-y shell it installs on your Windows machine.

  10. Dues says:

    I remember git being such a pain in the ass that I uninstalled it and then installed Mercurial . Which means I don’t have much in the way of advice.

    1. Chris says:

      Actually, the advice “switch to Mercurial” is pretty helpful.

      The main project I’m on at work started with a Git repository, so three experienced software engineers familiar with version control all started learning and using it. After a month we gave up, converted the whole repository to Mercurial, and never looked back.

      Git was designed by engineers for engineers, and enshrines all those lovable quirks like cryptic error messages, obscure command lines with esoteric options, and a workflow that requires you to grok the internals of the operations of the commands to make sense.

      Mercurial feels like it was designed by engineers for humans. The commands are straightforward and it’s easier to understand what’s going on. Since there’s virtually no difference in functionality between Git and Mercurial, I have a difficult time understanding why anyone would willingly choose the former.

      1. Blanko2 says:

        The answer is “because they don’t know about mercurial”
        or alternatively “because they learned Git and by god theyre gonna use it”

      2. Blake says:

        I learnt it for work (using TortoiseGit at first then just into the bash shell), I suggested it because it works better than the others I’ve experienced. It does everything basically.
        I haven’t had to set it up though, which sounds like the biggest issue here, so something more Windows friendly might make sense perhaps.

  11. Mark says:

    Shamus, you might find it more productive to use your IDE’s built-in support for version control, which will abstract away the syntax for a lot of commands (though depending on how it’s implemented you might still need to baby it). If this is for the project you’re doing in QT Creator, here’s Nokia’s official documentation on the subject. Since you prefer Visual Studio overall, StackOverflow is, as always, a valuable resource.

    1. SavageMessiah says:

      That doesn’t help him with hosting though. Qt Creator does support Mercurial out of the box, for what it’s worth.

  12. Atarlost says:

    Someone already mentioned it, but Tortoise Git is a properly windows integrated system. Everything’s in the right click menu.

    Just as an example: Want to ignore a file? Right Click. Find the tortoise git submenu. Click “add to ignore list.”

  13. Chad says:

    I’d say you’re getting old, but you’re about the same age as me, and since I refuse to allow that I’m getting old, you can’t be either. Ah well, all’s well that ends well.

    1. Dasick says:

      He’s not old. I get the same kind of feeling reading over my past works and I’m 19 with a very good memory (for minor, completely irrelevant details).

      In fact, I keep my past works just so that I can rediscover them once in a while while cleaning or something. It’s a very interesting experience, and I’m usually more concerned with figuring out who I was and who I’ve become rather than freaking out about any potential brain damage.

      TL;DR Yes, there is something wrong with your brain that makes you forget things. It’s called being human. Deadly, but slow acting disease. Genetically transferable, it afflicts almost %99.99 of our population. Known to cause madness and irrationality in a myriad of forms, and it generally makes this world an interesting place to live in.

    2. Blanko2 says:

      one time i read harry potter 5 in its entirety. about a year or two later i came across the book at home and wondered when it was bought and why i had not read it before. About halfway through i realized that i had read the entire book but couldnt actively remember any of it. I was about 15 years old or so.

  14. Aaron says:

    You stated that you set up a local repository, but did you tell git the remote repository to push to? If not, the command is:

    git remote add origin [email protected]:repo.git

    This will add a value in the .git/config file in your working directory that your app is likely looking for. When you’re ready to put all your code on the git server, you’d run:

    git push origin master

    if you decided to stick to the command line. “master” here is the name of the branch you’re working on and would be the sensible default in this case.

    1. Blake says:

      To clarify some of that, remote repositories in git are exactly like your local repository, except they’re not in your current folder. They could be a url, or just another folder on your hard drive.
      Git remote is basically a list of key/value pairs of repository names and addresses.

      So git remote add origin [email protected]:repo.git basically says “git remote, add ‘origin’ to your list with the address ‘[email protected]:repo.git'”, then you can fetch and push to that repo all you wish.
      git push origin master then means “git, push a branch to the repo named ‘origin’, master is the branch I want to push”.
      This will try to push your local master to what that repo has called master (or create the branch), if you wanted to make a new branch on that repo you could call ‘git push origin master:newBranchName’ which would push your local master branch to newBranch name over on origin.

      If in doubt, you can call ‘git help remote’ to look at the docs, or this site http://gitref.org/remotes/ seems to explain things alright (except they go for merges where I much preter rebasing).

  15. Rylinks says:

    If you need to create a file that begins with a period, notepad will let you save it if you enclose the name in quotes in the save dialogue.

  16. Exetera says:

    Well, if you were already using Mercurial, no reason not to stick to it. My personal preference is for git, and I think most people who have gotten used to both agree, but eh… it’s not a big enough deal to convert. Hg and BitBucket will be fine for now.

    It’s a shame you’re having such a hard time working with Git. I’ve never had problems of the sort you are, but then I use an UNIX and the command line, which Git is heavily geared towards. (Actually, Git was written by Linus Torvalds, better known as the guy who wrote the Linux kernel. So it stands to reason that his stuff might have a small affinity for it.)

    1. Exetera says:

      Also, I hate to be a downer, but you seem not to have included any images or models in what’s on BitBucket right now. Might be easier to run if there were textures and models…

      For that matter, it would be really nice if you included an executable. We don’t all have Visual Studio, y’know… actually, we’re not even all on Windows, but I hope Wine will behave.

      1. Shamus says:

        Okay, thanks for the heads up. I obviously haven’t looked at it in ages.

        I am wondering about these DLL’s and LIB’s it’s using. At my old job we used to add that stuff to SCC for convenience. The repository was private, so no big deal. But it’s actually bad form to distribute libraries publically like this. I guess I’ll need a dependency list for people to follow.

  17. tjtheman5 says:

    Shamus, don’t you see, you wrote that code and don’t remember it! Now your wife will be kidnapped and dark shadowy figures will attack you with axes! Quick grab a flashlight and call Alan Wake!

    1. Exetera says:

      I wonder what Shamus’ commenters would be like as Taken?

      “We’re here to bring you TAAAAAKE-OUT!”
      “Your stupid VIDEO is set to PRRRRRIIIIVATE! Again!”
      “This battle’s FLARING UUUUUP!”

      1. Gamer says:

        JOSH is thE WORst plAYER ever!
        YOU Guys forGOT ONE CRITICAL deTAIL!!!
        Gah!!! WHAT’S WRong wiTH MUMble’s AUDIO!!!

        Personally, I think it’s even more funny to think about what Shamus would sound like as Taken.

        In the ORIGINAL FALLOUT, the wRITing was SO MUch BEttER!!!
        Josh. I wish I COuld HaTE you to DEATH!!!
        WHEre’s my VERsimILITUDE???!!! (to be fair, that’s more Josh)

        1. tjtheman5 says:

          No, Josh is just STOP shoOTINg ME! and GAMEplay YOu GuYS!

    2. Gamer says:

      Does that mean that Shamus is going to suddenly get a really bad temper and punch old dudes who talk in unbelievably smug voices?

      Also, I’m glad I wasn’t the only one thinking this.

      1. Guvnorium says:

        It was my first thought, too.

        Also, for the record, I can see any Spoiler Warning Commentator Taken (Save Campster) saying:

        “Half Life Two had a SYSTEM that did it BETTER.”

  18. Sean Hagen says:

    Sorry to hear that you had such a pain dealing with Git. I guess I didn’t realize how hard it is to use with Windows ( I’ve used it on Linux and Mac, so maybe they have an edge due to their Unix-ness ).

    I’ve heard good things about Mercurial too, though. Apparently Mercurial works a lot better for you ( even if you don’t remember it ), so hooray!

    Looking forward to seeing more progress on this project!

  19. Core Xii says:

    The simple mistake you made was assuming that committing commits to Github; it doesn’t. Git is decentralized – when you commit, you commit to your copy of the repository. To give Github your changes, you need to push. (and the inverse operation is pull, which gets changes from another repository to yours)

  20. Dave B says:

    I'm worried there's something wrong with my brain that makes me forget things.

    I’ve had memory lapses like that too, and I know the feeling. I suspect, though, that it is not actually a rare experience (for people in general.)
    People just don’t like to think about it, because it can really shake your faith in your own memory for a minute…

    1. MichaelG says:

      My theory is that my memory is fine, but the universe changes when we aren’t looking. Probably due to the actions of time travelers.

      1. Kathryn says:

        Michael, YES. My cousin’s birthday has changed twice; it was May 20 for many years, then changed to May 19 sometime before winter 2005-2006. Last year, her birthday changed to May 26. Clearly, the only explanation is time travel.

        I record the changes in my logbook now…perhaps a pattern will eventually emerge.

  21. andy_k says:

    Heh – sounds like mercurial is the way to go.

    Functionally, from what I can tell, there is not a great deal of difference between mercurial and git, and Bitbucket and Github are also eerily similar. People who argue about the philosophical/architectural advantages of one over the other seem to be arguing over what type of black olive on a pizza with the lot is best.

    I am a big fan of git (and github) but mainly use it for Java development in Linux on the Eclipse IDE for hobby projects (which are all on hiatus at the moment). The git support is built into eclipse and the command line stuff makes sense / doesn’t bother me as I am used to linux, but I have found it… clunky… on Windows. I kind of knew how to do it since I had it on linux already; but anytime you need to install a bash terminal on windows to get something to work a little alarm bell goes off in my head. Given Git was built by Linus to solve the specific problem of developing the linux kernel in a distributed fashion, it is not surprising it can be a pain to use on windows, but that doesn’t mean it isn’t a bit disappointing – as you say it is 2012 and Git is being developed/used far outside the original scope of linux kernel development.

    As other commenters have pointed out, I think Tortoise Git is pretty good for UI stuff, but your best bet is probably to go with mercurial.

    On a side note – I also dislike the way these things spray their infrastructure around my pristine filesystem…

    Also – I don’t think you are the first person (nor will be the last) to forget that you have created an account and put a whole bunch of work up on the interwebs!

    1. Simon Buchan says:

      As someone who’s used bitbucket for work a whole bunch: github is way better. I wish Git sucked a little less on Windows (you can get it working, but there’s no well-lit garden path like for Mercurial: as Shamus shows)

  22. Alan says:

    Git is awesome. I use it daily, both professionally and for personal projects. But Linux/Unix assumptions permeate the software. Not surprising given that it was originally developed by the original creator of Linux for the purpose of tracking Linux itself. If you’re a Linux developer, git fits in well with the tools, techniques, and idioms you already use. The Windows side is a clunky; as the Windows developer on our team occasionally grumbles. So sadly, although it’s my favorite revision control system, it’s probably an ill fitting solution for your needs.

  23. harborpirate says:

    Bummer that you had trouble using Git.

    I don’t think the tools for it have reached the level of maturity that other source control tools have.

    I really like it, but it took me a little time to scale the learning curve.

  24. Arvind says:

    Huzzah for Mercurial! I prefer it to git for pretty much the same reason (it’s a lot of hassle to get it working in Windows).

  25. Ross Bearman says:

    For anyone who is wondering how to use git and GitHub, I wrote short article on using git with GitHub.

    It covers the eight commands you’d most commonly use, all of which have a short syntax and are fairly straight forward.
    * Download the repository (clone)
    * Create a new branch (checkout)
    * Pull in changes from the remote repository (pull)
    * See an overview of the files in the repository (status)
    * Stage files for a commit (add)
    * Commit files to your repository (commit)
    * Merge changes from your development branch into the trunk (merge)
    * Push your changes up to the remote repository (push)

    As well as covering how to fork and provide patches for other public repositories.

    It should be possible to get comfortable working with it in a couple of hours of coding.

    Alternatively, I hear good stuff about the recent versions of TortoiseGit. I’ve not used it myself, but TortoiseSVN was great.

    EDIT: There’s a tutorial for TortoiseGit on another blog.

  26. Rohit says:

    I’m getting an error where it cannot find CVars/CVarVersion.h. Is this supposed to be included with GLConsole?

    1. Rohit says:

      I think I’ve fixed this. I renamed CVarVersion.h.in to CVarVersion.h and changed CVARS_MAJOR_REV to 2, and CVARS_MINOR_REV and CVARS_PATCH_REV to 0.

    2. Rohit says:

      Finally built the solution, but I just get a black screen. Hopefully all I need are the assets now.

      EDIT: The console works, so at least it’s showing something.

  27. While mercurial is probably easier, I haven’t had a big problem using git under windows (well, moving files back and forth between windows and unix with git). I used gitgui — add files from a context window, commit, then open up gitgui and push to a remote repo (like github or a repo on another machine) from there. In gitgui, I see a whole “remote” menu that you use to manage the remotes accessible from the machine so you know what branch you’re pushing where.

  28. Guvnorium says:

    EDIT: Gah, was supposed to be a reply. Please ignore.

  29. Luke Maciak says:

    Ok, Shamus – I know exactly how you feel. I was in the same boat when I started with git. I wanted a nice GUI tool that just works. I struggled for months, tried about a dozen different GUI clients and was progressively more confused.

    Then I decided to give the shell a try and it was like a moment of enlightenment. Git is actually easier via the shell. No, seriously – there is like 5 commands you need to remember, and it just works. GUI tools present you with a million options all at once, and will confuse the crap out of novice users. It is a design failure, yes – but I found it to be a common thread in all source code management tools. All the GUI clients suck – mercurial, subversion, etc..

    I’m going to try to give you a very easy, step by step instructions on how to do this with the shell. Please give it a try. I know it’s annoying – I know it feels like a step backwards. I’m not trying to be a shell evengelist douchenozzle here – I’m being pragmatic. If you just try it once, pieces will fall into place, and working with git will become a joy… Well, at the very least manageable.

    Step 1: delete .git folder from your project. Now you have a clean un-git’ed project folder. We will be starting over from scratch. It’s best this way.

    Now, right click on that folder and choose “Git Bash Here”. Shell should pop up. Now type in this:

    git init

    Boom, now your folder is a git repository. Now do:

    git add .

    This will put *all* the files in the folder under source control.

    git commit -m "First commit"

    Now you have commited all of these files.

    Now, let’s tell your local repository about Github:

    git remote add origin https://[email protected]/ShamusYoung/Project-Frontier.git

    This basically means “Yo, git – I want you to become aware of a remote repository, which I named “origin” and it’s located at this address”. You notice I used the https rather than git: or ssh: address. Why? Because this is easier – you don’t have to mess around with keys this way. Git will simply ask you for a password when you “push” to github.

    Now, lets push your code to Github:

    git push origin master

    It will prompt you for your Github password and then start uploading. Master is the name of the branch – the default one is always master, unless you have changed it. If everything worked correctly, you should see your files show up on Github.

    Now, whenever you make changes you just do:

    git add .
    git commit -m "I made changes"
    git push origin master

    Personally, when I work I try to commit after every feature or goal, but don’t want to spam Github with millions of updates. So I commit locally, and then “push” at the end of my coding session. The added benefit of this is that it is relatively easy to “undo” a commit locally. It gets slightly more difficult when you push it out (add an extra step or two).

    I hope this helps. If you need more info, feel free to email me. I can walk you through this stuff. The shell is really, really straightforward.

    Oh, and the shell also lets you create those pesky .files:

    touch .gitignore

    Boom, the file magically exists.

    Again, I know you would prefer a GUI. The default GUI client for windows is really, really bad. There are better ones though. You could try Tortoise Git. If you have ever used Tortoise for SVN, it’s essentially the same setup. It is much more user friendly and adding/ignoring files is less of a hassle. I used it for a while, but I ditched it for the shell because it honestly, genuinely works better. And not because I’m a Linux fanboy, or shell enthusiast – it just works better from practical point of view. You really don’t have to know any linux commands to use it – all you need is git add, git commit and git push. :)

    1. 0) This comment is after Shamus’ Edit of the post.

      1) +1

      2) Also: Create file named “foobar.gitignore”, rename to “.gitignore”

      3) If you have Mecurial and BitBucket working, call that your master repository and that’s it. If anyone else wants to put code in Git, that’s their problem.

      4) Yes, I prefer Git. On Windows.

      5) Again, don’t maintain a public repository of a project multiple places.

    2. Simon Buchan says:

      I should note that TortoiseHg is *actually good*, shockingly. I often prefer the shell and .foo files like any Unix weenie, but for mercurial I now use the thg workbench nearly exclusively. Just *seeing* the history and state of your working copy at a glance, esp. once you start getting into patch queues and other cursed-by-the-elder-gods techniques.

    3. Blake says:

      I agree using the shell is easier than any IDE I’ve found (again, I usually like my tools, I work on Windows, used TortoiseGit for a while, etc.), there’s just so many features that are easier to do that way.
      One of my favourite commands is
      git add -p
      It goes through each chunk you’ve changed in each file, allowing you to add only the parts you want (skip over those debug traces you put in everywhere for example).
      Then I just follow it up with a
      git commit -m “Message explaining what I did”
      and maybe a
      git checkout -p
      which goes through each chunk letting me remove changes (to get rid of those random new lines I added which people don’t need in their diffs).

      After a bunch of commits when I’ve finished off what I’m working on, I go for
      git fetch
      git rebase origin/master (rebase adds your commits after what’s on origin/master instead of trying to merge the 2 heads directly)
      And if anything conflicts I run a
      git mergetool (I have that set up to open up Beyond Compare)
      followed by a
      git rebase –continue
      repeating that for any and all conflicts (if anything goes wrong, “git rebase –abort” and you’re back where you started, nothing lost).

      Then at the end a
      git push origin wip:master (I like to have my working branch named wip with my local master generally mirroring origin/master)
      and I’m all done.

      Some of those steps in tortoise are awful (I’m looking at you chunk-adding and rebasing).

      1. Simon Buchan says:

        Rebasing is pretty easy, though you have to add the extension. But chunk editing at that level is a pain, yeah. The best way I’ve found is the TortoiseHg shelving tool to shelf all but what I want to commit, (then make sure it still builds right), then commit, then unshelf. I don’t know of any good way to commit *part* of a chunk though.

  30. Uristqwerty says:

    I’ve occasionally seen people having issues with Git, which seems odd to me, as I’ve usually found it to be fairly nice and quick.

    Looking at the Github help pages, it becomes a bit clearer.

    (Note in advance: As I started typing, it went from a quick description of how Github’s help pages were showing less-than-ideal information, to an overall simple guide to making a Github repository with Git Gui, focusing on avoiding terminals and command prompts as much as possible (the opposite of what their guides seem to be))

    First, I use git-cheetah, but in the installation images, they have the plain context menu entries option selected (though that seems to be more of a 32/64 bit thing). What I see when right clicking on a floder that doesn’t contain a repository, is three options, initialize it as a repository, open Git Gui, and open Git Bash. For a folder that is already a repository, it instead shows six options, including viewing history, and a submenu for switching between branches. I haven’t tried installing Git with the other option, but I assume it provides a far less useful set of options.

    And then, just one image down: It shows the option set to only use Bash? Well, that’s just wrong, if you prefer, or are used to, the windows command prompt. If you have a way to open a command prompt to the current folder easily, at the very least having Git recognized as a command is rather nice.

    That’s it for installation, but what about the SSH keys? Well, the way I found it, was to open the Git Gui window, click help, and on the dropdown menu that appears, select Show SSH key. The window that pops up for me right now has the public key, already selected; a button to copy it, and a greyed out “Generate Key” button. Hmm… That seems suspiciously easier than entering commands into a Bash prompt…

    Next, the username and email? Well, for the more complex Git Gui window that appears for an existing repository (or one just created), the Edit menu has a selection titled “Options…” which pops up a rather large and complex option window with a field for the username to display with each commit, one for the email to display with each commit, and a second set (one set is global, and one is specific to the open repository).

    Well… That’s the full help page for setting up Git, without ever opening a prompt of any sort.

    So, creating a repository on Github?
    Well, that’s fairly easy (and it looks like they can generate a readme and even a .gitignore for you, now), but, sadly, putting your content up there does require a command prompt at this point. Lets assume the worst: You don’t know Bash, and can’t open a Windows command prompt to the current folder. Well, you can open a plain prompt, type CD and then a space, then drag and drop the folder there to copy the path in! Just hit enter, then, and you have a command prompt in that folder. If you have git in the PATH somewhere (you *did* pick that option during install, right?), then you can copy a single line that it shows on their page for an uninitialized repository. The one that looks something like “git remote add origin [email protected]:Uristqwerty/Test.git”.

    Right click in the friendly Windows prompt, click paste, hit enter. Now, you *can* add a remote repository from within Git Gui, but from my experience (I don’t have the latest version, so something may have changed), it doesn’t accept the link Github provides, at least not from the Gui (Complaining that it is a git:// style link, rather than something it understands. Git itself doesn’t have a problem with it).

    Anyway, after that one, single, line of prompt horror, you can open Git Gui, select the Remote menu dropdown, and you’ll be able to see “Origin” in the submenus (Just click Remote > Fetch from > Origin, and you’ll retrieve any changes made to the Github repository by other people, and/or from other computers), but that’s not the important part. What is important is to initialize the repository. To do that, you’ll need at least one commit. If you don’t have anything to commit, perhaps write an empty .gitignore? There is probably some way to do it, I just resort to opening a command prompt, and typing something like “echo > .gitignore”. Or maybe a quick little “test.txt” would work well enough.

    So, with a file to commit, Git Gui will show it in a box with a title “Unstaged Changes”. In newish versions of Github, clicking the Stage Changed button also asks if you want to stage untracked files. Do so. Otherwise, you can select one ore more files in the Unstaged Changes list (shift-click or ctrl-click, like any list in Windows where you may select multiple elements at once), click on Commit in the menu bar, then “Stage To Commit”.

    Type something as the Commit message, then press the commit button. Your local copy of Git now remembers exactly what the committed files were like at the time you staged them. (Advanced users: In the large rectangle that shows information about the selected file, you can right click a line, and stage that individual line, or that individual hunk (a number of lines), rather than commiting the whole file at once. This generally matters later, for example if you are in the middle of some changes, and a bug is discovered which requires, literally, a one line fix. You can fix the bug, commit the lines, and get back to work, even if you have altered other parts of the file).

    With a commit finished, you now have something to push to the Github repository. Click the Push button. You probably won’t have to change anything there, so simply continue. Git will work for a moment, then hopefully give you a popup with a nice green bar at the bottom, saying “Success”.

    Now, on the Github page, you’ll see actual content, including different types of links to the repository. The one you already got, a different Git link (read-only) which Git Gui has no problem adding from the Gui itself (Argh! Though this will be useful if you want to fetch someone else’s repository), and a HTTPS link to the repositroy (Which Git Gui doesn’t have any issue with, either…)

    Finally, if you were only creating a repository to try to figure out how to do so, and don’t intend to actually use it, you can delete it from the Github page by clicking the Admin button (With the wrench beside it), and clicking the “Delete this repository” button near the bottom of the page that shows up (with a confirmation box, to ensure that it wasn’t an accident)

  31. Primogenitor says:

    Ah yes, now I remember what I felt like when I first switched from SVN to Git. The Pain.

    This is a link I have found very useful:


    Not only does it explain the commands to do stuff, but it explains what Git is doing conceptually with those commands – using ASCII art, no less.

  32. Rick says:

    If you want to learn Git then Git Pro is a great book. It explains everything from the ground up.

    The main strength of Git is the branching. You can really easily create branches and merge them back in. The intention is for every unrelated sequence of changes to be in its own branch before being merged back in.

    The downside is horrendous experiences with different line endings (something I thought we overcame years ago) and apparently UIs that don’t function so well.

    A CMS I contribute to is currently moving to Github to try and get more attention. Even though I think SVN suits it better. Certainly is better for me to use various branches and tags from a single repo, whereas with Git you can only “use” one branch or tag at a time.

    I guess it’s the same principal as a camera. The best camera is the one you have on you. The best version control system is the one you’ll use. Although we sacrificed some of our own usability in order to gain publicity.

    1. X2Eliah says:

      If you want to learn Git

      Does he, though? From the posts, it sounds more like Shamus is trying to learn a coding environment (QT) and work on his projects, not learn the intricacies of a single variation of a version-control software.
      Why would he have to learn through a whole book to get a simple “save local, save remote, load local, load remote” sequence working?

      1. Rick says:

        Sorry, you have a very good point… I should have emphasized the
        IF in that sentence. I understand how annoying it is sometimes to have to learn stuff tangential to your main goal if it doesn’t interest you. And Git isn’t even tangential, it’s merely one option of which others have already proven themselves more suitable and usable to him.

  33. Kdansky says:

    Actually, I did recommend you to use Bitbucket and Mercurial, but wasn’t absolutely sure whether you had taken my advice, or only stuck with hg, ignoring the online portion. Apparently you did the sensible thing. :)

  34. karln says:

    I’m sure the vast majority of your comments are fair, but the suggestion (the ‘what year is it’ dig) that command-line invokation of programs is simply outdated and needs replaced… I couldn’t let that one go. CLI has the huge advantage that it makes the program very easy to invoke from other programs and scripts. You just build text strings and pass them to the OS to execute. Many languages are very good at building text strings.

    This doesn’t mean it’s not a fair comment that CLI is pretty opaque if you’re not used to it, and it requires more time researching any given program to learn its invokation syntax, and that GUI is better for some applications… but it’s not fair to claim CLI is strictly worse than GUI in general. A decent GUI could even be written as a frontend to the CLI, it just sounds like the GUI you tried wasn’t decent.

  35. Z says:

    ï»¿(Tongue-mostly-in-cheek) Please allow me to take one for the team and be the lightning rod for Shamus calling people “ass” or “jerk” for pointing out the obvious or easily findable:

    a) Since pretty much win95, file names can be specified in quotes to allow nonstandard characters. You can create a file or directory called “.Â¿Â¶whàœÂ¢]à‘[” in freakin’ notepad. This is not about a piece of trivia people may or may not know; this is about understanding how your operating system works with files.

    b) “I’m an old-school programmer” and “the command-line is scary” do not belong on the same brain. Really, dude, did you try typing “help”? And then reading it? Come on, reread your own post about glConsole before saying things like “what year is it?” The command line is your friend, and with “help” (and google) is much easier to find what you need than poking through badly designed menus and dialog boxes with broken buttons. You know you know this, so come off it.

    c) Your panicking is unbecoming, and your blaming the tool for your inability to use it is, at best, slovenly presentation of your project and credentials. Dozens of knowledgeable people pointed you in this direction; you spent a couple of hours and were lost. Were the directions wrong, or your driving? Why blame the console, or the tool, rather than your driving?

    The above jackassery aside, git is a great source control system, and it solves incredibly complex problems in a simple and elegant fashion, but it’s not for everyone or for every project. It may be a square-peg-round-hole problem. And it does make assumptions of adequacy on the part of the user.

    The problems git was designed to address, and its philosophy, are described in detail by Linus himself on this Tech Talk given to Google back in 2007. If you are seriously interested about distributed source control, watching this talk is absolutely worth an hour of your time: http://www.youtube.com/watch?v=4XpnKHJAok8

    It is abso-friggin’-lutely great at what it does. It’s up to you to decide whether what it does is something you want or not, but for decentralised, distributed source control, it kinda rocks the world already. Don’t knock it just because the console scared you.

    1. Rats says:

      You can rename/create files begginning with “.” (and many other similar characters) by using the command line in windows (and hence by using batch files), its explorer that stops you. Saving from *some* programs also allows this behaviour (including notepad).

      I hope that helps your minecraft backups (among other things).

      EDIT (this isn’t meant to be in reply, but as a new comment. and the edit box does not have an option to move it. *sigh*)

      1. ClearWater says:

        You beat me to it by 3 minutes.

        Also, this:

        C:\> mkdir -h

        C:\> mkdir -help


        Huh, I guess mkdir doesn’t have a help function in Windows.

        1. Simon Buchan says:

          It’s “help mkdir”. Commands built into CMD get help that way. I’d put a sad face here, if only it were clear that it’s CMD I’m sad facing, and not you.

          1. ClearWater says:

            mkdir /? also works, but try the above and then run dir. ;)

    2. Shamus says:

      This is not tongue in cheek. This is just you being as ass. Which you admit to. This does not make it okay. Particularly since after you got done making excuses and insulting me multiple times, you never made any effort to address my concerns. You are not here to help. You’re just lashing out because I said something mean about your favorite software.

      It is not a badge of honor to put up with horrible interfaces. It does not make you a good developer. It makes you bad at using your time. Github may or may not be great, but the Windows front end is a mess and your sneering elitism doesn’t change that.

      Also, to everyone: This is the last one of these sort of posts I will entertain in this thread. I HATE looking around the internet and seeing honest questions answered with arrogance and rudeness. Curious minds should not be punished or belittled for attempting to learn. I can’t do anything about those assholes on the rest of the internet but you can be assured I delete them with rapturous glee when they bring their “it’s easy once you learn how, but I can’t be bothered to tell you” act on my site.

      1. Shamus says:

        Also: Time from setting up Tortoise Hg to full-function usability: ten minutes. I just submitted my Project Frontier data files, so those playing along at home should now have usable art assets available.

        1. Rick says:

          Tortoise make some good tools. I haven’t used Hg but I’ve used both Tortoise CVS and Tortoise SVN on Windows and they’re great. Especially their shell integration.

          1. X2Eliah says:

            I can second this, the TortoiseSVN really is a good gui (we use subversion+tortoisesvn for a mod project, and it does all that we need it to do), that can be used without a 100-page manual.. Based on that, I can guess that the tortoise-git, or whatever it is called, should be pretty decent too.

          2. Blake says:

            TortoiseGit isn’t as good, but certainly got me going before I learnt how to command line it all.
            I use TortoiseSVN still but again, it takes ages to actually load up a changelist when writing ‘svn status’ in the command line responds almost immediately.

        2. Luke Maciak says:

          Shamus, there is a tool called Tortoise Git. I know you settled on Mercurial for now, but if you are willing to give Git another chance in the future try that one. The default GUI tool for Git is horrible. The Tortoise Git is styled after Tortoise Hg and Tortoise Svn and you should feel right at home.

      2. X2Eliah says:

        A slight off-shoot of a sentence there, have you (and I mean all the commenters, not just Shamus) seen an alledged “this is tongue-in-cheek, yo” use that wasn’t just plain insulting/demeaning? I sort of feel that the whole term “tongue-in-cheek” is really just an acronym for “jackass mode on” – just like the popular “no offence, but..” is really “Come at me, sucker!”, and “With all due respect, ..” means “I don’t respect you at all”.

        Because, seriously – every time something is preceded/succeeded by “This is tongue-in-cheek”, it’s completely unfunny, hurtful, offensive and insulting. Every time.

        1. Anachronist says:

          It’s like in the southern US, where awful insults are made good by prefacing or appending “bless his heart” or “bless her heart” to them. “She was born fat and ugly and stayed that way, bless her heart.”

        2. nmichaels says:

          I accept your challenge.

          (tongue in cheek:)
          No offense, Shamus, but this article is troll bait. Asking for help on the Internet? What were you thinking? With implied criticism of software that’s not only incredibly powerful (ensuring that its user base is significant) but hard to use (ensuring that same user base has invested considerable time in it). Tsk tsk.

          In case anyone’s sarcasm detector is seriously broken, the above should be read in a sardonic tone.

          1. X2Eliah says:

            Yeah, but now you are doing this t-i-c clause on purpose, and consciously write a very mild paragraph with it, with the express intent of pairing the two. That’s hardly indicative of an actual situation or use-case.

            1. Sagretti says:

              True, but I’ve seen it used that way before. “Tongue in Cheek,” when not used in a completely jerky way, usually means someone making an over-the-top statement mocking a standard dumb or annoying response. I guess you could say that it can be used for good or evil.

        3. Sumanai says:

          I’ve felt for a long time that “with all due respect” doesn’t mean “with respect” in any sense. There’s nothing that implies a lot of respect, just as much respect as the one saying believes the person deserves.

          It’s sort of an old version of “Sorry, but…”

      3. Simon Buchan says:

        Shamus: I love you man, and I’m not even saying you’re wrong, but you’re being a bit of an ass yourself. Remember your own advice: “Be nice, don’t post angry, and enjoy yourself. This is supposed to be fun.”

        1. MichaelG says:

          Grouchy old man is grouchy… :-)

        2. Blake says:

          Yeah, I think he let his frustration with getting git set up seep into his comments thread.

          Reading or posting comment threads while worked up will do that to anyone.

    1. SolkaTruesilver says:

      It is only a matter of time before a youngster geek openly challenges Shamus for rulership over TwentySidedTales…

      Shamus, have you planned a webdeath switch to self-destruct the website in case of your netdemise?

  36. ClearWater says:

    Dude, creating a directory or file that starts with a dot is simple: just install cygwin and turn your windows cmd shell into a linux shell of your choice, and then… oh.

    Actually, it looks like cmd can create directories that start with a dot even without cygwin. So… yay DOS? May save you some trouble next time when backing up minecraft. Or cause some.

    1. Sumanai says:

      I don’t think there’s a DOS anymore with Windows. The shell just got an upgrade at some point between WinXP and the release of Win7.

      1. Blake says:

        In win7.
        copy con “.gitconfig”

        File created.

        1. Sumanai says:

          Somewhere else here it is mentioned that you can create a file starting with a period in the explorer by ending it with a period. The ending period gets removed, but the heading period stays.

  37. This sort of thing seems to be a feature to a lot of Linux people; if you can’t figure out how to do it command line style, they don’t want you in their userbase. And then they bitch why their obviously superior OS doesn’t have a larger market share.

    1. X2Eliah says:

      So very much this. Because of that exact attitude (command line or gtfo noob!), I have a very negative impression of Linux as an OS in and of itself now.

      1. Tse says:

        Linux may have a chance to shine soon, when Windows mobile on desktop PCs comes.

        1. X2Eliah says:

          Fair enough. I’d rather would like to move to Linux because it and it’s support-user-base gets better, not because Windows gets worse. Because the implied Win mobile on desktops suckitude ultimately leads to TWO bad choices, not two good ones.

          1. Sumanai says:

            It was already two (or more) bad choices. The best operating system for a person is the least worst.

            But yes, it would be really nice if Linux would become the go-to OS because it was getting better instead of Windows getting worse.

            People have been talking about Ubuntu having good support, but at least the help I’ve ran into online tells a different story. Not that it’s really better for Windows, or from what I’ve heard for the MacOS.

            Maybe I should look into a BSD OS.

        2. Simon Buchan says:

          As someone using Windows 8 on his work machine: The haters are, as usual, greatly exaggerating. It’s *at worst* as bad as Vista, which means… I’ll be stuck supporting clients still running Windows 7 for a couple more years in 2020? I’ve had worse. (In fact, I actually like many of the desktop side features. But then, I’m not paying for it.)

          1. Sumanai says:

            Doesn’t it have content control? That is MS can dictate, even to some degree, what I can or cannot run. Because that’s what I’m not too thrilled about.

      2. Shamus says:

        My wife made the jump to Linux years ago. I remember days of misery as she sorted through some fussy problem in the depths of the system. (This was before Ubuntu really started to shine. I forget what distro she used back then.) I remember her being endlessly angry and frustrated. Not at the problem, but at how she was treated.

        She runs into a problem. She KNOWS the answer is probably very simple. She could spend an hour slamming her head into it, or she could ask and be done in 30 seconds. But to get her answer she’ll need to let half a dozen people slap her in the face.

        It’s an amazing thing. Dozens of people come together to build this beautiful, efficient, free operating system. But if anyone comes to use it the community treats them with disdain. It reminds me of the scene in Time Bandits where Robin Hood is giving away loot to the poor, and one of his own guys is going down the line, punching each beggar in the face once they get their loot.

        1. nmichaels says:

          Modern desktop Linux user communities (like Ubuntu’s) have largely gotten away from that sort of thing. I’m still unimpressed with Ubuntu’s changes to Debian, but their community is much more welcoming to new users.

          1. Dave B says:

            Ubuntu has gotten a lot better in that regard, but it is still missing something. I have never seen any distro that has a beginners’ tutorial, even distros like Ubuntu that claim to be newb-friendly. Is it really so hard to make some kind of “Welcome to Linux, this is how you do stuff” set of basic knowledge for the beginning user? Am I the only one who thinks this?

            1. X2Eliah says:

              As with all crowd-sourced open-source projects, the people technically able to do that stuff are not likely to do it (they are either too advanced to realize the need for that, too involved to determine what is obvious and what isnt to a new user, or they are the actual problem people that post their snark and bile instead of helpful responses).. That’s why such a thing is unlikely.

              For there to be a beginner-tutorial, the linux coder-community needs to first realize that there are such beasts as linux-beginners.

              1. Zukhramm says:

                Of course they know new users exist. The reason is more likely that people simply make what they need rather than what they think others need. Since Linux doesn’t need to make sales to survive, there’s simply a lot less focus on getting more users.

            2. Zukhramm says:

              Windows doesn’t seem to have one either, yet everyone managed to learn to use it.

              Edit: Actually seems there is one.

            3. Sumanai says:

              No, no you’re not. The interface jump in the 11.10 version of Ubuntu wasn’t exactly welcoming if you had experience with Windows only. I didn’t find it all that difficult, but I can see why it would be a problem for others.

              That’s not to say there weren’t, and aren’t, problems, but they’re not related to the interface itself, but rather to the stupid idea to roll out with buggy software. I’ll look into “updating” (clean install) to 12.04 soon and looking if things have been fixed.

          2. Sumanai says:

            There are still problems. For instance I checked if people were having problems with the automatic updating to a newer version of Ubuntu. There were, and of course people were going “oh the solution is simple, just follow this short 50 step guide”

            There are also (not for that issue) the longstanding “the problem is solved, follow this link which is either broken or for an old version so it no longer works”. Not to forget the super useful “make a bug report, wait for fix, remember to send appropriate error files with and no I won’t tell what those are”.

        2. Luke Maciak says:

          This is very true. But Linux community is not the only one that suffers from this. A lot of online communities are like this.

          Whenever you have bunch of highly skilled people hanging out online, there is a chance that they will go into self-indulgent self-congratulatory feedback loop and develop false sense of superiority and an “us vs the unwashed masses” type of mentality.

          Programmer communities are very bad at keeping the lid on this. And sadly it often spills out to other corners of the internet – as you have witnessed. I would like to apologize for my elitist brethren. They forget themselves sometimes (and by sometimes I mean way too often).

          1. Sumanai says:

            I’ve actually ran into a Windows user who did the “RTFM” thing, but with a Windows spin. They basically told the other person to use the help program in the OS. The fun part is that the only help page for it was the basic “turn the computer on and off, lose all will to live because that didn’t work” suggestions.

          2. blue_painted says:

            Have you seen alt.sysadmin.recovery on Usenet? Oh my, what a load of self-satisfied SAH … and it is also “Tongue in cheek”

        3. Ragnar says:

          May I ask how you solve similar irritating problems when you are using Windows? I ask because I find that all Windows problems I have are incredibly difficult to find a good answer to.

          I suspect that a part of the experienced difference is that for Windows you have a lot more experience finding the right resources and forums where you can get the answers. And if you are more familiar with the OS, so it becomes much easier to use the right terminology and formulating the right questions.

      3. Zukhramm says:

        I would have had a terrible impression too if I encountered that, but fortunately I never have.

    2. Rick says:

      From what I understand Git was built by the top developers from Linux because they ran into licencing issues with whatever version control system they had previously been using. So they built a tool for themselves and since they were kernel developers (essentially hardcore coders) they built it how they’d use it… For the command line.

      Others have made GUIs for it, just like SVN, CVS and the others. Though some of the fundamental differences in Git (eg Commit and then PUSH, line ending annoyances) cause a learning curve even with a good GUI.

      I was comfy with SVN but I’m having to learn Git and it’s frustrating. But I’m choosing to learn what’s happening on the command line before I trust a GUI to do it for me. It’s a big change from SVN though.

      1. Blake says:

        git help {commandname} (brings up the help file for that command).
        git add -p (lets you add each chunk of each file individually, take only the changes you want)
        git checkout -p (y removes a chunk, n keeps a chunk, get rid of changes you don’t want)
        git rebase over git merge, makes reading a change log much easier.
        gitk (shows a log in a gui, works quite nicely)
        Learn to see each commit as its own object, you can
        git cherry-pick any commit object you want to place it over your current head.

        Once you get used to the git cmd, you’ll likely hate using the guis. Command lines just work way faster.

    3. Luke Maciak says:

      This is true, but… Sometimes the command line is the exactly right tool for the job and GUI wrappers just suck and cause monumental headaches. A lot of times there is just no good GUI tool for the job because no one has stepped up and made one.

      So sometimes you know that the GUI tool that exist is ugly, confusing, that it trashes config files 4 out of 5 times and is just a horrible way to go. You gently try to explain that command line is really the best, most direct way to go and offer to walk them through it.

      The newbie then throws a fit, and says that your OS sucks, your community sucks, that open source sucks, etc..

      Open source software is what people make it. It has different priorities sometimes – and making simple, user friendly GUI tools for everything is often not one of them. The community has a lot of brilliant hackers but few usability experts and UI designers and it shows.

  38. Muttley says:

    Git is a little painful to use on Windows (although it has improved over the last couple of years). For this reason alone I’ve been perfectly happy with Mercurial (on Windows and Linux).

    Joel Spolsky has a great introduction to Mercurial here: http://hginit.com/

  39. Rohit says:

    Anyone have luck in seeing something on the screen? Even with the textures and model, I see only black. Render.wireframe = 1 or Render.textured = 0 do nothing. I have no idea if my changes to the CVAR folder, or way of building cvars.lib with CMake are causing this.

    Also, the console is complaining that the animation .bvh files are missing. Can you upload those, too?

    I just want to see some terrain.

    1. Shamus says:

      Ok, I’m looking into this now. The good news is, it’s broken for me, so it shouldn’t be too hard to track down.

      1. Shamus says:

        Fixed it – type “game new xxxx” where xxxx is the seed number you want to use.

        1. Shamus says:

          Hey! It works. You know… this program isn’t half-bad.

          Also use:


          For some reasons these default to stupid values.

  40. Andrew says:

    > stupid Windows will allow filenames starting with a period to EXIST, but it won't let you CREATE them.

    Curious. Never noticed that before. Weird. Also, it appears DOS (or a DOS shell) is fine with creating “.name” files. So you can always do it in a command window or write a batch file.

  41. Wilson says:


    I was astonished at this, and even more so to find that it’s a holdover from Windows 3.1 (see the second comment on that question).

    However, in reading about this issue, I found this Superuser answer which notes out that if you name the file with a dot at the beginning and at the end, Windows will remove the trailing dot (!) and you’ll be left with a file whose name starts with a dot:

    .dotstart. becomes .dotstart

    It tested it. It’s weird, stupid, non-intuitive and obscure, but true.

    Since it looks like you have solved your initial issues, Shamus, I only post this for interest’s sake.

    1. MelTorefas says:

      I for one appreciate posts like this. If I ever need to create a filename that starts with a dot, I will remember this now.

    2. Blake says:

      Or in notepad.
      File->Save As
      [Save As Type] All Files (*.*)
      [File Name] “.gitconfig” (including the quotes).
      No issue.

  42. Coke says:

    Sorry you had trouble, Shamus.

    If you’ve never used git before, it can be tough to navigate, even on linux. I typically use the command line, even on windows (msysgit), but often use tortoisegit, and have had good luck with that as well. If you use an IDE, some include a plugin that will let you speak git directly from the IDE (I use the eclipse plugin, e.g.)

    If you ever consider trying git again, I can recommend some IRC channels that are for particular open source projects, but have a bunch of friendly people willing to help someone out with the occasional git question.

    As for the .gitignore files, one more option: you can also save from (e.g.) notepad (rather than creating the file first and then editing it.)

  43. Duncan says:

    I was trying to set up a git repo server on my US hosting provider for collaborative game projects a few months back. I know a little linux and I have a friend who knows a lot who helped me a bit. But I was too stupid. I worked at it for three days. I got it 98% done, but those last 2% were kind of needed. After 3 days I gave up and tried subversion. I already had tortoisesvn installed from my old job. I find my hosting provider has a 1 click installer for subversion. Install subversion: sure, what do you want the url to be for that? default is /001. Ok write a list of users you want to have access. Ok now would you like a trac server too?

    5 Minutes vs 3 days. I never want to hear about git again.

    1. Blake says:

      Depends what you want them for though, SVN is great for data, or any time you know every commit can go in order, but branch merging is awful.
      Other big problem with SVN is that you can’t commit work-in-progress stuff without everyone getting it.
      If you want to try something out or swap to working on something else in the middle of things it can get mighty ugly trying to commit those changes all together.

  44. Steve C says:

    Git : A decentralized version control software system.
    Hub : A centralized repository

    Github = 6 characters that form the shortest oxymoron in history.

  45. Ragnar says:

    I really don’t understand this disdain for command line interfaces.

    Yes, graphical user interfaces are better for a lot of things (including web browsing!). And CLI:s often have a pretty steep learning curve. Most often though, the benefits when you have learned them far outweighs the learning you had to do. A lot of the things I do constantly (like searching through code trees, grep:ing (regexp-searching) through logfiles, etc. is possible in GUI:s but I find them much more clunky to use. Especially when I can combine the command line programs in interesting ways. As an extra bonus I have automatic history of everything I do so I can easily repeat the same thing I did recently.

    To say “What year is it?” about CLI:s are to me on the level of saying “There have been movies for a hundred years and people are still reading books?”.

    “I know you Linux coders have a high tolerance for this sort of thing, but damn ““ there are better ways of using a computer these days.”
    It’s not about tolerance. It’s about being effective in what you do and using the right tools for the job.

  46. Try Github for Windows program. That may make your life easier.


You can enclose spoilers in <strike> tags like so:

You can make things italics like this:

You can make things bold like this:

You can make links like this:

You can quote someone like this:

Leave a Reply to Muttley Cancel reply
