What I like with SVN:
- it is easy to fix commit messages
- the externals are easy to understand
- the properties
- the file locking

What I don't like:
- after more than a decade the umlaut problem of composed/decomposed UTF-8 has not been solved

What I like most about Git:
- it allows to create clean commits, because I can modify all my local commits, e.g. reorder and squash them, in case I detected an error in a previous, unpushed commit

- it is still much stronger merging renamed, modified files

- I can solve every conflict locally, try again and again, without losing any changes (imagine a complicated merge in SVN where you now have solved a couple of conflicts, but an update brings new conflicts)

- I can switch branches very quickly back and forth without the need to transfer the whole project over a network (even having to wait a couple of minutes with a decent connection is too slow if you are used to Git's seconds - we are not talking about the fact that it is wasted energy to transfer the same data again and again just because SVN does not cache it)

- Git allows me to create a feature in my own branch, turn all my commits in this branch up-side-down if I need (even after pushing to the repository) and finally rebase it on top of the main development branch

Of course, the latter only works fine if there is just one developer of this feature branch, but usually this is the case for me. More than 5 years ago we have massively refactored our products to switch from one GUI library to another (Swing -> SWT). Without Git and rebasing this would have been much more complicated.

Most of the things I like in Git are not possible with other DVCS, or require some non-standard extensions, or may produce weird states you don't know how to get out.

I don't know what SVN 2 would need to have, so I would consider to use it for a software product repository again.

--
Best regards,
Thomas Singer
=============
syntevo GmbH

Reply via email to