11 ms·
Switched from Subversion to Git
- gruseom 17y agoAn amusing combination of titles: In Search of Concise Software Git Breezily Handles our 500,000-line Enterprise Java Project
- henning 17y agoI wonder what that 500,000 lines buys them.
- jrockway 17y ago200,000 getters and setters.
- axod 17y agoI'm not convinced language snobbery is something to be encouraged personally :/ If it was lisp it'd be 200,000 lines of parenthesis, if it were python it'd be 200,000 of significant whitespace, perl? 200,000 of random punctuation characters etc etc. 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.
- tjogin 17y agoSure, but at the same time all languages were not created equal. Some are better designed and more powerful than others. They're not all just equally great at different things and let's sing "Kum ba yah" together now.
- jrockway 17y agoBut has anyone fixed this in Java yet, or does every large app still consist of thousands of nearly-identical methods? 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.
- windsurfer 17y agoI think it's called inheritance, but most programmers try to stay away from that because of the headaches of the diamond problem.
- axod 17y agoUsing your IDE to type code for you is the problem. Not Java. Place the blame where it should be. If a programmer is foolish enough to use an IDE to generate code, and doesn't mind if it's near identical rubbish, then it's not the languages fault anymore.
- jrockway 17y agoSo could you explain the "right way". I'm not a Java programmer, and googling did not reveal any way to generate accessors other than inserting code in your source file. An explanation of how you do it would be very valuable, at least to me.
- eru 17y ago> 200,000 of significant whitespace Significant whitespace does not occupy its own lines in Python.
- axod 17y agoJava doesn't require getters and setters :/
- deleted 17y ago[deleted]
- gruseom 17y agoIf it was lisp it'd be 200,000 lines of parenthesis, if it were python it'd be 200,000 of significant whitespace, perl? 200,000 of random punctuation How do you know this?
- frossie 17y agoI am also not sure why it matters - we switched 3,000,000+ lines of code from subversion to git, but the effort was not really correlated with LOC. The major overhead of switching from subversion to git is the learning hit on the developers (though it is certainly worth it for many of the reasons described in the OP).
- JulianMorrison 17y agoIn a comparably sized codebase at my job, there's connectors to this and that idiosyncratic/complex external system (some of which require for example extinct dialects of SOAP), there's legacy cruft, there's systems that draw together multiple providers and present a unified interface, or that distribute commands to the proper subsystem, and there's a ton of reports and front ends and back ends for multiple years of customers, which get remixed and reused.
- axod 17y ago500,000 lines may be extremely concise for what it does :/
- barrkel 17y ago500,000 lines isn't a lot of code. The compiler I work on has almost that many lines, but the larger product (IDE) has many millions.
- plinkplonk 17y ago"500,000 lines isn't a lot of code." in Java. Not to spawn any language wars, but imagine 500,000 "lines" in something like J, FORTH or even Factor.
- wvenable 17y agoI wish git was bit more user-friendly on Windows. With TortioseSVN, using subversion is so smooth and easy I almost forget it's there. I've got a bunch of Git tools installed in Windows, but it's all so horrible. The GUI tools are significantly worse than using Git bash at the command line. 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.
- ghshephard 17y agoHave you tried TortoiseGit? http://code.google.com/p/tortoisegit/ http://code.google.com/p/tortoisegit/
- davidw 17y agoHow is that shaping up? Ready for production use? For people who don't know too much about version control?
- jrockway 17y agoI don't consider SVN user-friendly. It might use pretty fonts in the UI, but one wrong move, and your data is lost forever. ("svn update" is especially bad about this.) With git, any operation I perform can be reverted via the reflog. Even reverts can be reverted! That beats any shiny UI any day.
- sokoloff 17y agoAny more details on svn update being especially bad at killing your data forever? We've been using svn for 5.5 years now and I've never personally lost data with any of the available clients. (I can admit that svn revert does irretrievably destroy client-side changes, but that's what the command is designed to do, so...)
- jrockway 17y agoConsider the (common) case where you modify some files, want to commit them, get the "your tree is out of date, run svn update", run svn update, and then have the svn update merge fail; some files updated, others conflicted. 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.
- etherael 17y agoDoes anyone have a real world example of a busy dev shop with a bunch of stretched coders that are accustomed to tortoise svn only based source control switching to git? the coders at this place range from brilliant to pretty good, but I don't think some of them would be capable of wrapping their heads around msysgit and they're thoroughly wedded to windows. Tortoisegit viable? Looked ok from my brief experimentations, but I know that's different to actually doing real work with it...
- litewulf 17y agoWhy do you want to switch to git? I say this as someone who uses perforce, subversion, git and mercurial on a regular basis. Version control is largely similar for the 90% of your work life, and that 10% can usually be solved by hand.
- etherael 17y agoquite a few reasons, none of which aren't covered in tha parent post except for one, which is that subversion on test environments is a real pain to get working on various environments. As the dev team uses tortoise and always gets "there is a new version available, please update here" I have seen the unenviable position of having repos on staging environments rendered un-updatable except by tarball because subversion on the remote end refusees to work with the newly incompatible repository post a single commit from tortoise SVN 1.6.3 for example. 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?
- litewulf 17y agoI'm just saying in your case it seems as if people are busy enough as is. Switching VCS will disrupt workflow as they learn. My experience is that branches, while a pain in non-git systems are still used in the places you really want them to be used (release management), and most of the other features are mostly in the "nice to have" category. At that point it seems a better idea to simply use git-svn so you have the power of git without having to force a change in infrastructure. (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.)
- smithjchris 17y agoMost "industry" developers can barely use Subversion. How are they supposed to handle Git?
- nudded 17y agoby reading this book : http://progit.org/book/ http://progit.org/book/
- jrschulz 17y agoIf only those developers read books...
- smithjchris 17y agoPrecisely my problem... apathetic developers!
- tjogin 17y agoThat seems to presume Svn is easier to use than Git, in my opinion it is the other way around.