Just don’t use it, whatever you do.
It’s hopelessly buggy, it is the worst possible git client you could use.
And … for the third time, it just corrupted a git repository. This time I know it wasn’t user-error, it was just SmartGit.
Totally unforgivable.
32 replies on “SmartGit review: don’t use it.”
“corrupted a git repository”
Holy shit, that’s unbelievable. Thanks for the warning.
What version and OS are you running? I have to say, SmartGit has never let me down. Much of the time when a git repository is supposedly corrupted, it can be traced to user error. It is surprisingly difficult to corrupt a repository beyond repair. What were the exact operations you were performing? I find it hard to believe that SmartGit can directly be at fault because it uses the actual git binaries to perform its operations.
SmartGit is not perfect; I still use a lot of command-line git tools. However, it is far from the horrific nightmare you make it out to be.
don’t agree
SmartGit is the best git GUI I’ve used so far
I hate how TortoiseGit integrates itself into the system, you can’t get rid of it, it’s inconvenient and anyway it has to open lots of windows. Tower for mac is slow, gitx is ugly.
@TheBuzzsaw – smartgit had a conflict against 3 other-person checkins (fine). It then – somehow – did an overwrite of the conflicting files (should be impossible!), and – somehow – managed to delete frm the repos-index the extra files that had been checked-in during the other-checkins.
So … it did something impossible (clobbered a checkin), and it did something corrupting (the repos index now showed that files were NOT in the repos that had been put in the repos – but which had no “delete” entry in the repos log).
Easy enough to fix: we just re-uploaded the missing files, and re-did the changes that had been clobbered. But this should NOT happen.
NB: I cannot say whethre it’s “only” a smartgit bug, or a smartgit AND a git-server bug. But smartgit certainliy did somethign wrong there.
@Valentin – agreed that tortoise and gitx are terrible.
I have “hope” for Tower: it looks like it will be excellent … WHEN it’s finished. My last eval, I found it unusable. Also, their support was delusional: they were unwilling to accept two bug reports I sent them. Shrug. I’m hoping they’ll fix their process (and their software) soon, and we can switch to Tower.
Most importantly: Tower is clearly designed to work in harmony with Git, where SmartGit was *very* obviously designed against Git. The GUI that has the wrong menus, the wrong menu-options, and the wrong commands in the wrong places. It offer the wrong context-sensitive options at the wrong time.
(yes, it was clearly designed originally for some SCM that’s not git; fine – but if you’re going to sell it as “smart*GIT*” then you should put some effort into making a git-compatible UI!)
Git doesn’t just -somehow- do things. First off, do you have all your stuff committed before attempting to pull? The very fact that are freaking out over files being overwritten suggests to me that you do not. If you have everything committed before doing anything dangerous, you have nothing to fear. A merge gone wrong can be reverted/reset. Are you suggesting that it went back into your history and deleted stuff? Are you attempting to do git rebases or something? All in all, your situation sounds very fishy.
I use git extensively in Windows, OSX, and Linux. The only time I had “weird things happen” was when I was new to git and exercised terrible habits. I thought git was pretty complicated for a while, but once I understood what was going on underneath, I have had no problems since then. If you have a background in CVS/SVN, prepare to “corrupt your repository” often.
“If you have everything committed before doing anything dangerous, you have nothing to fear.”
This was exactly the situation, and yet we lost data. Maybe you see now why I was so annoyed I blogged about it specifically?
I’ve been using smartgit for at least a year, more like two years I think.
I’m no noob with it.
It is poor (to be generous), and the only good thing to say is that “there’s nothing else on OS X which is significantly better”. Which really isnt saying much, sadly.
Do you still have your SmartGit log.txt file from when your repository got hosed?
I have to say that I consider versioning systems where you can so easily get into a muddle and create problems sub-standard in their basic design. Especially for non-coders.
For this (remembering I’m a designer, and yes and it fails HARD elsewhere, but…) I actually found Alienbrain the best. Perforce is a poor second. Don’t get me started on anything else.
@adam
> smartgit had a conflict against 3 other-person checkins (fine). It then – somehow – did an overwrite of the conflicting files (should be impossible!), and – somehow – managed to delete frm the repos-index the extra files that had been checked-in during the other-checkins.
So far I can see the problems with the working tree only — SmartGit didn’t corrupt any existing commits, right? Maybe it created a new commit which misses certain files you’d expect to have after merge. It’s fairly easy to fix that via SmartGit itself.
Anyway the better place for such posts of anger is syntevo’s mailing list. Those guys have really excellent support for their products.
From my experience SmartGit is very stable (even EAP builds). After all you’ve been using it for more than a year (or two?). It’s just unfair to ask everyone not to use this application. It’s much better to report and try to fix the problem.
@TheBuzzSaw @Valentin +1.
My previous logged issues/bugs were benignly ignored (“don’t know why that happe ed. Oh well. Nevermind” kind of thing).
We couldnt get back to previous commits.
Also today I had to go through the hell of trying to regress a first commit in smartgit.
Oh. Dear. God.
It has a proprietary internal data structure which stores info on previous prOjects you created – even after you’ve deleted them – ad it has VERY weak support for deleting projects (it tells you it will delete a project but nots it’s files, and won’t allow you to delete the files – bur then it does NOT delete the git project!)
Just really terrible software that is often harder to use than the commandline. If they want to survive, they need to pay someone to do some very basic interface design – or just anyone who uses git on a frequent basis and knows how it should work.
Smartgit 2.1 works just excellent for us. Easy to use, ok GUI and no problems even though we have a huge product and a complicated branch structure. Only drawback is that it sometimes is a bit slow. Saves me almost entirely from the command-line nightmare of flags, switches and strange commands.
There’s a followup post I’ve not had time to do, but basically:
SmartGit 2.1 is capable of destroying files on your hard disk. Not just deleting – wiping. Not files that were ever opened in SmartGit, either. It’s just really really shoddy file-management code that can “accidentally” permanently-delete an entire repository. I find it hard to express my horror at the appalling code design that lead to a bug of this severity.
But it’s par for the course for SmartGit. Don’t touch it with a bargepole. (I had to use low-level disk recovery tools to get back the files that SmartGit wiped – and I only managed to recover a few of them. A whole project, ruined)
Not just files explicitly in the repository, either – it wipes a chunk of the filesystem, and will happily destroy anything that happens to be in the same location.
Uh… My company has about 40+ git repositories none of which have become corrupted and we’re all using smart git. (5 programmers 4 designers.) It is buggy but I have no idea what you mean when you say “corrupt.” I think you’re having personal problems.
@Zak – Uh … I’ve crossed the road 40+ times in my life, and none of those times did I get run over by a car. Therefore I conclude cars never hit people?
Why on earth are you using stuff like that? (SmartGit, TortuousGit, Tower etc).
Git gui and gitk, which are distributed with git, are excellent and they take you miles away from the commandline… if that is what you want…
They are working on all major platforms…
I think it’s not about “getting away from the commandline” … I think it’s about “getting a superior user experience, that lets you get your work done faster, more efficiently, with fewer mistakes”.
The git-supplied GUI’s “are graphical” but that’s about it. They are extermely poor GUI design, very confusing and convoluted. I find it easier (and faster!) to use the commandline even when I have to look up the help to find out which comamnds I want to use … than to use the supplied GUI tools. That’s a FAIL.
I think the GUI tools are a nice starting point to inspire GUI client designers, but they’re not production ready.
@adam > A whole project, ruined)
Git is not a backup tool. Did you not have a backup routine in place for your data?
I would argue it’s a *very good* backup tool :) – in fact, it’s a “perfect” backup tool: it backs up exactly what’s changed, has excellent restore capabilities, performs distributed backup effortlessly … etc.
Thinking about it, I’d actually say: by definition, any good SCM / VCS is a perfect backup tool. If not, it’s a poor (or broken) SCM.
In this specific case: I backup git repositories. If a git client destroys the contents of the repository before it even gets to the backup … there’s not much you can do.
I have to say what OP is claiming is impossible. Fist of all SmartGit is just a UI for git, it does not in any way write to the git repository directly. It communicates to git via git commands, so it can only do what git allows it to do. If your file got corrupted then the git executable corrupted them. Also likely it was user error, i.e. someone thinking they did something but really ended up doing something else due to git’s inherent complexity.
By your logic it is inpossible for apps to crqsh an OS, since they merely issue commands to it.
It is perfectly “possible” to do something *around* the git library that causes an outcome that is impossible for a user to pull off.
Most importantly, you are COMPLETELY WRONG in claiming that Smartgit is merely a “wrapper”. It is not. It contains many features that are not part of git, although tey are PARTLY IMPLEMENETED using git. I believe its bugs in these bits of code (smartgits behaviour reminds me of bugs i had in my earliest Java programs when i didnt know much about file handling, and wrote fragile crappy code)
Hey! I was considering the purchase of smartgit in order to have a better experience on linux (I can handle command line, but I need more efficiency). On OSX I have great experiences with SourceTree, but the thing is that at my work place I need to use linux and I have no knowledge of good GUI git interfaces here, I was hoping smartgit would handle it, but now I am afraid, since I will work with kind of important projects. Do you have any suggestions (I hear of git-cola and giteye but have no experience with them whatsoever)?
@Fernando – bear in mind that I haven’t re-evaluated SmartGit for more than a year – they might have fixed their development processes and be producing “good, safe, reliable” code now. But I doubt it.
Apart from that … sorry, I don’t know of any good ones for Linux. I’ve heard good about cola too – but it’s all relative. Seems that linux git clients are generally awful. It’s very hard to find good git GUI’s. Most seem to be written by self-centered programmers with no care for their users, or by cynical corporations trying to cash-in on the Git bandwagon. I’m currently using the commandline for everything, because the GUI’s are still so awful.
Sorry Adam — SmartGit executes git (and only git) to talk to repos. Anything that touches the repo passes through git.exe. Git will either accept and act on a request from a UI client because it’s well-formed, or it will error out. Anything that happened to the repo happened because Git (git.exe!) allowed it to happen. Not SmartGit. Not Tortoise. Not SourceTree. It just doesn’t work that way.
SmartGit is a Java app and did something that I know is common practice with Java but as far as I can tell isn’t part of the git executable: it created folders, then hard-deleted them (without confirmation) *and their entire contents*. This works in Java because of the way Java’s File-system API’s were designed. It does not work (usually) in linux/BSD because of the way the OS API’s were designed.
I don’t have their source code, so I’ll never know. It’s possible I found an unheard-of bug in git that no-one else has ever seen. It’s more likely that SmartGit did something in the java layer that it didn’t mean to.
I’ve used recent version of SmartGit on both Ubuntu and Windows and it’s really fantastic. It’s much more solid that it used to be, and I’ve been able to do everything I’ve needed in it without having to fall back to CLI. I highly recomend it. Particularly for windows over SourceTree, which while fine on OSX, is very buggy on windows from my experience.
We are using Smartgit in our company and I must say first you have to know git then know how to use smartgit as well. After that, you cannot really f.up your repos, on the contrary, you can manage them with ease. You should believe me when I say we do projects that have so damn irritating deployment cycle that without smartgit we couldn’t manage. There is no GUI to my knowledge that can do everything GIT can and smartgit has some difficulties I know of but the command line is always there to confirm my actions in the GUI. So I encourage everyone to give smartgive a shot and LEARN to use it first.
It’s 2014 and I started using SmartGit for Windows a month ago and I find it brilliant! I love it more than SourceTree that looks ugly and buggy. I, personally highly recommend it.
In my experience with Smartgit, it has never broken a repo either locally or remotely. And I use, create and maintain *a lot* of repos. I’ve used Smartgit since V3x.
Smartgit is a brilliant interface for git. I’m quite happy using the CLI for git and script a ton of auto-git scripts, but from a user perspective, it makes doing the day-to-day CM activities super-easy and really intuitive.
Want to cherry pick a commit from one branch to your current activity? Easy.
Merging? Easy.
Revert a commit? super-easy
Check the diffs between commits – easy.
Exactly the same interface on Linux, Windows and OSX.. though it looks the prettiest on my Mac – doesn’t everything?
There are some occasions where there’s room for improvement
Rebasing seems a bit more complicated than it needs to be (i.e. exiting when you’re done)
on windows, the OS seems to capitalise the initial and first character of the surname eg PSmith instead of psmith, which *may* cause some grief for you if you use SSH to pull repos with submodules
but for 99% of our CM needs, it’s a fantastic UI that’s super easy to train people to use. My user base covers 50+ people across 3 different countries and skill levels from HW engineers to expert SW devs
I’ve no connection to Syntevo other than being a customer. I’ve used Big Company CM tools from the likes of IBM and others, but make no mistake, Smartgit is the best I’ve used in years.
I like their support and find them a really approachable company. We pay for our licenses and have just renewed for the year ahead – that’s because they produce updates with improved and extended functionality all the time.
Yeah, I know, I sound like a Smartgit fanboi. But it really is *that good*.
I’ve have been using SmartGit on Windows for years and it’s working fine for me.
Unreliable for what it’s doing, especially the git-svn functionality. I really tried to make it work, since the UI is very nice for pretty advanced GIT operations. Cost me >5 full days’ work in corrupt checkout handling in around one month, 3 checkouts dead. Afterwards tried to use it in some pretty basic capacity, but for some reason it slowed down to being unbearable — 2 mins startup (!) and >30 seconds per operation, with Git GUI 5 sec/1sec. This is a lot of pain for a pretty big repository.
The support I got when I requested it was (a) yeah this UI option may corrupt the checkout, please disable it (b) yeah I don’t care really and (c) “please see the troubleshooting section and send logs” — in response to the message containing logs.
So — for some cases it may work well. But be wary — this is nowhere near as reliable or thoroughly tested as you’d want it to be.