Recently, I cloned a Git repo under Mac OS X and wondered why all files were stored in a separate folder and not at root level.

Turns out that most grapical Git clients on Mac OS X (haven’t tested on Windows yet!) suck at mimicing the behaviour of git-clone I’m used from the shell.

If you select a destination directory in one of those graphical Git interfaces, they will try to clone your remote repository into this directory instead of using your selected folder as a parent directory, creating a new folder with the name of your repository and cloning the content into this repository-named directory – like git-clone does.

Worse even: you can’t disable this behaviour - you are stuck with it. Tower is the only exception to the rule and mimics git-clone semantics more closely than other graphical clients.

What now?

As a workaround, one could still initially clone a Git repository via shell and use graphical interfaces only as a means to get the daily work done.

But this is a hack.

No one wants to leave their comfort zone of the graphical user interface just to start working with a repository: it is a hassle.

So please: if you are a developer of a graphical Git interface – or any VCS for that matter –, try to mimic the semantics of the CLI programs as closely as possible! This would ease the (correct!) use of a VCS with your interface and make it an overall more pleasant experience.

You would even win a die-hard shell user like me over.

References