Switched from Subversion to Git
concise-software.blogspot.com
concise-software.blogspot.com
I think, for Git, the GUI I'm looking for probably isn't possible. It's designed with the philosophy of small command line tools combined together -- that's not something you can paint over with pretty UI.
With git, any operation I perform can be reverted via the reflog. Even reverts can be reverted! That beats any shiny UI any day.
Once you run svn update, your working tree is gone forever. And often, you can't save your changes until you risk blowing them away. That is Very Bad.
In git, you can't destructively update your working tree (via a merge, anyway) until you have committed it. Once you commit, you can "git pull --rebase", fix the conflicts, and push the resulting tree. This is svn's workflow, except that if you don't like what happens you can just say "git reset --hard HEAD@{0}" and try again later.
I'm not saying git doesn't handle this better; I have not tried it yet myself. But in my experience it's possible to use svn without risk of losing your changes.
I'd hardly call that "gone forever".
In Search of Concise Software
Git Breezily Handles our 500,000-line Enterprise Java Project
It's not the language, it's what you do with it that counts. If someone is writing countless getters and setters, in any language, they're clearly doing something terribly wrong.
my 2c.
Things like parentheses and whitespace don't affect the ongoing maintenance of your codebase; a bunch of code that your IDE typed for you does.
An explanation of how you do it would be very valuable, at least to me.
Significant whitespace does not occupy its own lines in Python.
How do you know this?
in Java. Not to spawn any language wars, but imagine 500,000 "lines" in something like J, FORTH or even Factor.
Tortoisegit viable? Looked ok from my brief experimentations, but I know that's different to actually doing real work with it...
This is not a problem with git, and the being able to push updates directly to the staging environment can also be non -trivially handy too.
That said, that's a minor annoyance vs the full blown excellent points that the original article makes about the advantages of git over subversion, so I'm a bit puzzled as to why this question is being asked, did you not think that the things covered in the article were worth anything?
(Incidentally, you can turn off subversion's auto-updating. I try to keep all my computers running the exact same version of subversion for largely the same reasons you mention.)
Someone care to save me from a couple of days in windows again? :)
Wrt git svn, last time I tried that it started version controlling the .svn directorise o_O. Which was fine for git svn but the tortoise svn users were completely screwed on a checkout.
Wrt subversion versioning woes, yeah, it's kinda a solution, but at the same time I'm not the system administrator and really don't want to be, and trying to enforce "don't update" would suck even if I were.
Any sort of branch/merge problems I encounter are mostly coders working on mutually incompatible versions of the base system. Not on a file level but rather on a protocol/format level
No mere source control system will be a hurdle of the same size as the hurdle of co-ordinating all the developers who broke each others preconditions.
---
So a switch to git will be best for projects with extremely stable interfaces where the branch/merge mechanism is the most time consuming part. Think: linux kernel, stable protocol services.
But where developers have to collaborate while modifying a shared framework git makes little difference. Think: early stage GUI frontends, or server components which inter-depend on message formats which are evolving.
Those same mechanisms break just as badly as svn when you need to coordinate 10+ developers. The communication overhead of the developers dwarfs the way they sync files.