Source control redux
-
I've recently come full circle on this source control topic. After trying to use subversion, and having little success, I started to question the "Conventional Wisdom" out there, that says that VSS is horrid. First - Tell me why you think its horrible: Is it VPN? Ok, that is valid, its improved greatly in the latest version, but still its slow. Is it slower than everything else? Is it slower than Subversion? Lets see some data on that.... Is it because of Pessimistic locking? That is now a setting in VSS now.. and its always supported optimistic locking, in a "work around" sort of way... using "Get Latest Version" ...which I have come to respect. You nkow ahead of time that there might be problems merging back... and you can plan for some time to make that smooth. I like my source control IN the IDE, ..not in Explorer thank you very much.... I like my source control to be so easy, nobody can find a reason to avoid using it. I like it to be "Not in the Way", and not add more Admin activities to the team... (Subversion and Tortoise, besides having to teach everyone how to use these, need a lot of TLC on the server side.) So - I am saying: Take another look at VSS, and stop going with the latest thing people think is so sexy... Subversion is not as easy to implement in team dev as has been said.... and I see no Cost / Benefit by using it. Also - Ask me about how we tried to implement Microsoft Team Foundation Server, and then discarded it, as Alpha ware crap. Another product that is too expensive, tries to do too much, and does nothing particularly well. We try to develop software, not spend all day as network admins, or Beta Testers.
Where there's smoke, there's a Blue Screen of death.
I'll agree that IDE integration is pretty necessary. Thankfully, that's taken care of with Ankh (open source)[^] and Visual SVN (cheap commercial product)[^] But on VSS, personally I've seen it corrupt it's database several times. And even with the 2005 release, the only difference I could see was updated icons. I'm sure (and by that I actually mean hopeful) that there were under the hood improvements, but nothing I can see as a user. But my personal favorite VSS bug, is when the IDE dies for some reason, and VSS won't log you in because an empty file named after your profile doesn't exist in it's user directory. I guess it mainly comes down to personal choice and what you're most familiar with. VSS is sometimes a pain, but it's a working product. I'm just looking for something new. And SVN looks to be the most apealing choice at the moment.
Try code model generation tools at BoneSoft.com.
-
I've recently come full circle on this source control topic. After trying to use subversion, and having little success, I started to question the "Conventional Wisdom" out there, that says that VSS is horrid. First - Tell me why you think its horrible: Is it VPN? Ok, that is valid, its improved greatly in the latest version, but still its slow. Is it slower than everything else? Is it slower than Subversion? Lets see some data on that.... Is it because of Pessimistic locking? That is now a setting in VSS now.. and its always supported optimistic locking, in a "work around" sort of way... using "Get Latest Version" ...which I have come to respect. You nkow ahead of time that there might be problems merging back... and you can plan for some time to make that smooth. I like my source control IN the IDE, ..not in Explorer thank you very much.... I like my source control to be so easy, nobody can find a reason to avoid using it. I like it to be "Not in the Way", and not add more Admin activities to the team... (Subversion and Tortoise, besides having to teach everyone how to use these, need a lot of TLC on the server side.) So - I am saying: Take another look at VSS, and stop going with the latest thing people think is so sexy... Subversion is not as easy to implement in team dev as has been said.... and I see no Cost / Benefit by using it. Also - Ask me about how we tried to implement Microsoft Team Foundation Server, and then discarded it, as Alpha ware crap. Another product that is too expensive, tries to do too much, and does nothing particularly well. We try to develop software, not spend all day as network admins, or Beta Testers.
Where there's smoke, there's a Blue Screen of death.
DumpsterJuice wrote:
I like my source control IN the IDE, ..not in Explorer thank you very much....
You probably know this already, but for the benefit of others, there are options for this with Subversion. At our office we use AnkhSVN http://ankhsvn.tigris.org[^] as a plugin within Visual Studio. I bet there are others as well. Not that I'm advocating you switch to Subversion. Our shop uses both Subversion and VSS and we've had no problem with either for as long as I've been here. BDF
-
El Corazon wrote:
SVN also has the svnsync which lets you mirror subversion servers.
That would actually be very useful if we could sync to our L.A. server and here in house for added protection. I'll look into it thanks.
El Corazon wrote:
most people who set up subversion are trying to avoid backing up
:wtf: Now that is unequivocally stupid. I was a network tech for hire for many years, I've seen so much loss as a result of not backing up properly I think it's ingrained now at the cellular level. My wife and I were both network techs for hire and I find it funny sometimes when we talk about things in everyday life in those terms, like I bought a new mixer for making bread and my wife wanted me to sell the old one but I said it was good to have a hot swap backup without really meaning to say it like that. We talk about backup stuff all the time like we have two shovels, two wheelbarrows etc etc. Anything important that we use all the time.
Never trust machinery more complicated than a knife and fork. - Jubal Harshaw in Stranger in a Strange Land
Yep, most shops with any experience have a regular backup regiment that includes primarily backing up source control and database. Anything short of that would be running through a mine field with scissors.
Try code model generation tools at BoneSoft.com.
-
This is certainly off topic, but I couldn't ignore this.
PIEBALDconsult wrote:
Acme.Math.Abs.cs might contain: Acme.Math.Abs ( int ) , Acme.Math.Abs ( double ) , etc.
I think this is a little extreme. So now you'll only have 20 lines of code per file, but now you'll have to many files to look through. You haven't simplified anything.
PIEBALDconsult wrote:
Maybe you have a Data Access Layer class and you can split it up by what sort of data are accessed by the methods; employee methods, client methods, etc.
Maybe data access for each of these entity types should just be a different class, not just a different partial class file! If you have a single class file that is "too big", then maybe that class is doing too much. Refactor, Refactor, Refactor. The best usefullness of partial classes is to separate auto-generated code from manually generated code.
Michael Lang (versat1474) http://www.xquisoft.com/[^]
Mike Lang wrote:
I think this is a little extreme. So now you'll only have 20 lines of code per file, but now you'll have to many files to look through. You haven't simplified anything.
But now one person can make fixes to the ABS functionality while another is fixing another method. This is great with common routines where the methods are probably static and used throughout the application(s). Since doing this and looking at the changes in 3.0, this will be replaced with extension methods. :-D
WarePhreak Programmers are tools to convert caffiene to code.
-
Douglas Troy wrote:
VSS 6.0d is the last release of this product; now it's that Team Server thing (I know nothing about it)
Actually, that's not true. VSS 2005 was released with VS 2005. It's not a HUGE difference from VSS 6, but it seems to be more stable, and offers some extra remote features (web checkin/out). http://msdn2.microsoft.com/en-us/vstudio/aa718670.aspx[^] Also, there's SourceOffsite that lets you use VSS client/server and make remote access much easier. I recommend *NEVER* using VSS remotely under normal conditions, there's too much risk for database damage if you do. 99.9% of peoples problems with SourceSafe database damage is related to trying to use it over flaky networking, IMO.
-- Where are we going? And why am I in this handbasket?
We used Source OffSite for an out source team in India we were using once upon a time. They complained that our VPN would take them hours to get latest version. SOS seemed to do a great job of allowing VSS access that was fast and reliable.
Try code model generation tools at BoneSoft.com.
-
Erik Funkenbusch wrote:
there is *NOTHING* that i've used that is easier for newbies to version control to understand.
Sure, i'll buy that. I'd never heard of source control the first time i used VSS, and i still got the hang of it in maybe an hour or two of use. A little longer to figure out merging, etc. But then i spent the next three years doing all i could to avoid using it. I'd check in my stuff when it was time for a build, but in between i stuck with my old system of batch files, zip, and a handy network drive.
Erik Funkenbusch wrote:
If all you do is is simple stuff (and don't want to learn anything complex), and you'll never use it over dialup or a WAN, and you primarily use Visual Studio, then VSS is a perfect solution.
Ok, so if you're gonna just check a couple of files in maybe once or twice a month, or you rely entirely on the VS integration (which is maddening in its own way, but i'll leave that for another discussion), then VSS is good enough. But what's the point of that? Batch files and a network drive are good enough if you're only using it occasionally, and they have even less of a learning curve since most of us were doing it that way from jump. It's like one of those cheap food processors that are just about the right size for chopping an onion, but take so long to disassemble and clean that you end up spending more time than you would have just grabbing a knife. And that's assuming you don't accidentally end up with onion puree (the corruption issues). Don't get me wrong - i work on one fairly large project that does still use VSS for everything, and we get by - at some point, i'd like to move away from it, but 'till then it is "good enough" (at least, with a bit of help from SOS it is). That said, i'm constantly aware of how much more time i spend babysitting it: checking and double-checking merges, filling out check-in comments over and over, trying to keep changes consistent across multiple branches... all stuff that i have done in seconds in Subversion, without having to even think about it. That's why i encouraged John to read the book and read up on the concepts in general. Putting in a bit more time up-front ends up saving days in the long run.
every night, i kneel at the foot of my bed and thank t
Shog9 wrote:
That's why i encouraged John to read the book and read up on the concepts in general
True, and he did express a specific interest in branching and merging.
Try code model generation tools at BoneSoft.com.
-
Mike Lang wrote:
I think this is a little extreme. So now you'll only have 20 lines of code per file, but now you'll have to many files to look through. You haven't simplified anything.
But now one person can make fixes to the ABS functionality while another is fixing another method. This is great with common routines where the methods are probably static and used throughout the application(s). Since doing this and looking at the changes in 3.0, this will be replaced with extension methods. :-D
WarePhreak Programmers are tools to convert caffiene to code.
Ware@Work wrote:
But now one person can make fixes to the ABS functionality while another is fixing another method.
I think this is the point with two features in most source control systems; auto-merge and non-exclusive checkouts. Two developers can work on two different methods in the same file, and both can check in their changes without having to manually merge the files. Off Topic:
Ware@Work wrote:
this will be replaced with extension methods.
Hopefully people aren't planning to make every method an extension method with no methods in the actual class. That would just be too hard for most developers to understand.
Michael Lang (versat1474) http://www.xquisoft.com/[^]
-
Douglas Troy wrote:
VSS 6.0d is the last release of this product; now it's that Team Server thing (I know nothing about it)
Actually, that's not true. VSS 2005 was released with VS 2005. It's not a HUGE difference from VSS 6, but it seems to be more stable, and offers some extra remote features (web checkin/out). http://msdn2.microsoft.com/en-us/vstudio/aa718670.aspx[^] Also, there's SourceOffsite that lets you use VSS client/server and make remote access much easier. I recommend *NEVER* using VSS remotely under normal conditions, there's too much risk for database damage if you do. 99.9% of peoples problems with SourceSafe database damage is related to trying to use it over flaky networking, IMO.
-- Where are we going? And why am I in this handbasket?
I think the question of source control, is mostly dependant on scale. Single Developer has the most options... If you are in a multiple developer project, you simply must use source control. If you have people scattered about the world, then VSS is likely not the best tool. (I have to admit that SVN is a much better choice than VSS for Hundreds of developers, scattered from Indiana to Mumbai.) In a small shop, its first about personal preference, then features. In a small shop, you might be the network admin, all the way to the bottle washer... the last thing you need is an Apache server for SVN, or a Square peg install of SVN on Win2K3. However, in a large professional effort, you need something more powerful, and its really no argument that SVN is a good choice over VSS. I dont agree that SVN is in any way "easier" than VSS. It's not easier to setup, its not easier to maintain, and in my humble experience I did not find it easier to use, if you consider VSS sits right inside the IDE.
Where there's smoke, there's a Blue Screen of death.
-
Ware@Work wrote:
But now one person can make fixes to the ABS functionality while another is fixing another method.
I think this is the point with two features in most source control systems; auto-merge and non-exclusive checkouts. Two developers can work on two different methods in the same file, and both can check in their changes without having to manually merge the files. Off Topic:
Ware@Work wrote:
this will be replaced with extension methods.
Hopefully people aren't planning to make every method an extension method with no methods in the actual class. That would just be too hard for most developers to understand.
Michael Lang (versat1474) http://www.xquisoft.com/[^]
That's true, but I haven't (yet) used one that does that, so I'd be nervous about whether or not it merged properly... but that's just me. On the other hand, in an organization which doesn't have a really solid coding style standard, maybe the two developers have different styles; brace placement, indenting, etc. If each tells VS to format the file his way, then the whole file will be affected, and won't that complicate things? I expect part of the check-in process could be to run the file through a company-standard beautify routine. At any rate, this leads to a question about modern CVS VCS systems... can they be set up to ignore whitespace or otherwise reduce the effects of "style"?
-
I think the question of source control, is mostly dependant on scale. Single Developer has the most options... If you are in a multiple developer project, you simply must use source control. If you have people scattered about the world, then VSS is likely not the best tool. (I have to admit that SVN is a much better choice than VSS for Hundreds of developers, scattered from Indiana to Mumbai.) In a small shop, its first about personal preference, then features. In a small shop, you might be the network admin, all the way to the bottle washer... the last thing you need is an Apache server for SVN, or a Square peg install of SVN on Win2K3. However, in a large professional effort, you need something more powerful, and its really no argument that SVN is a good choice over VSS. I dont agree that SVN is in any way "easier" than VSS. It's not easier to setup, its not easier to maintain, and in my humble experience I did not find it easier to use, if you consider VSS sits right inside the IDE.
Where there's smoke, there's a Blue Screen of death.
DumpsterJuice wrote:
developers, scattered from Indiana to Mumbai.)
I know a few who should be. :-D
-
That's true, but I haven't (yet) used one that does that, so I'd be nervous about whether or not it merged properly... but that's just me. On the other hand, in an organization which doesn't have a really solid coding style standard, maybe the two developers have different styles; brace placement, indenting, etc. If each tells VS to format the file his way, then the whole file will be affected, and won't that complicate things? I expect part of the check-in process could be to run the file through a company-standard beautify routine. At any rate, this leads to a question about modern CVS VCS systems... can they be set up to ignore whitespace or otherwise reduce the effects of "style"?
PIEBALDconsult wrote:
At any rate, this leads to a question about modern CVS VCS systems... can they be set up to ignore whitespace or otherwise reduce the effects of "style"?
It was (IIRC) hidden in a config file, but there was an option to ignore whitespace in clearcase. I don't recall seeing any option for more theological style issues like brace placement.
-- If you view money as inherently evil, I view it as my duty to assist in making you more virtuous.
-
DumpsterJuice wrote:
I like my source control IN the IDE, ..not in Explorer thank you very much....
You probably know this already, but for the benefit of others, there are options for this with Subversion. At our office we use AnkhSVN http://ankhsvn.tigris.org[^] as a plugin within Visual Studio. I bet there are others as well. Not that I'm advocating you switch to Subversion. Our shop uses both Subversion and VSS and we've had no problem with either for as long as I've been here. BDF
Big Daddy Farang wrote:
Our shop uses both Subversion and VSS and we've had no problem with either for as long as I've been here.
Were you able to integrate both into VS at the same time, or only one of them?
-- If you view money as inherently evil, I view it as my duty to assist in making you more virtuous.
-
Big Daddy Farang wrote:
Our shop uses both Subversion and VSS and we've had no problem with either for as long as I've been here.
Were you able to integrate both into VS at the same time, or only one of them?
-- If you view money as inherently evil, I view it as my duty to assist in making you more virtuous.
No, both at the same time would be way too cool for us. :laugh: We have some older stuff that's in VSS. Out of that stuff there's one product that I still support in good old native VC++ 6. Our bigger C# products, and I think all of our Linux stuff is kept in Subversion. So I've got the Tortoise thing for Explorer and Ankh plugin for VS 2003 (currently.) BDF
-
Ok, after the major flamefest yesterday over my assertion that I personally in my shop had no use for source control a lone member of this board finally posted a single point that convinced me it might be a good idea if it doesn't slow us down too much and is a reliable product that will *NEVER LOSE OUR CODE*. Full credit to Scott Dorman in this post[^] for bringing up the entirely valid and useful point that, while we never release branch versions of our software, we do actually have a branch when we release a new version and want to separately work on the next release and bug fix of the old released version then merge them later. That's a brilliant point that I had never thought of and no one else suggested but Scott. I see subversion mentioned a lot, I also see VSS mentioned in a negative way a lot. This will be new for me and this is not hobby code it's very valuable code for a world wide used software product, I can't take any chances on losing anything. So my question is, given I want as little hassle as possible but still need something that can do the above and not much else, what source control systems should I look at for testing and suitability?
Never trust machinery more complicated than a knife and fork. - Jubal Harshaw in Stranger in a Strange Land
I don't know exactly what qualifies as "little hassle as possible", but let me plug Git. I'm using it on Windows and it's absolutely easy for the scenario you just described above. First, I'm a seasoned Subversion user. I like it and think it's great, but it's forgetfulness when merging from branches to the trunk have always been a sore point (though this item will be fixed in 1.5.0). Also, I've never cared for having to have specific server software for it, whether it be the Apache mod or its standalone server. If the server was down, you're hosed. Last, I don't care for the .svn directories all over the place. But as I said, it's about the best thing there is. Then I had a fellow dev recommend git. I thought at first it was just a Linux thing, and I'm a Windows guy, so I didn't put much credence into it. Then I saw him demo how the merging and branching worked, and how fast it was, and I was sold. Another great thing is that by virtue of its distributed model, it's easy to push a copy of your repository up through an HTTP server for others without requiring special server software. Lastly, it only has a single .git directory that's a breeze to backup and/or cleanup. However, all is not panacea. Git doesn't have great Windows integration with tools. There is no Visual Studio Git plugin, nor is there anything like TortoiseSVN (a great tool BTW). However, I don't mind, but that might be a deal breaker for you. It does have GUIs, but I haven't tried them. It's CLI is more than sufficient for me. In short, here are the pros and cons of Git over SVN as I see them: Pros: 1) Git is small and fast. 2) It's very easy to backup and doesn't leave .svn droppings 3) It doesn't need any server software because it's a "distributed" source code control system, which also makes it easy to put your code up on the web. 4) git can import and export to svn repositories with git-svn Cons: 1) It has a strong linux heritage, though that is slowly being overcome. 2) Tool integration is not. The GUIs look a bit amateurish from what I've seen, though this too is changing. The web interface though does look pretty good. 3) Subversion does have momentum. Things like Trac are great. Again, I'm not advocating ditching svn. It's great, and I continue to use it for some things, but git is fast gaining my mindshare. Jay -- modified at 15:05 Saturday 22nd September, 2007
-
No, both at the same time would be way too cool for us. :laugh: We have some older stuff that's in VSS. Out of that stuff there's one product that I still support in good old native VC++ 6. Our bigger C# products, and I think all of our Linux stuff is kept in Subversion. So I've got the Tortoise thing for Explorer and Ankh plugin for VS 2003 (currently.) BDF
Big Daddy Farang wrote:
No, both at the same time would be way too cool for us.
*Sigh* I was hoping you were cleverer than I and had managed to figure out how to do it.
-- If you view money as inherently evil, I view it as my duty to assist in making you more virtuous.
-
That's true, but I haven't (yet) used one that does that, so I'd be nervous about whether or not it merged properly... but that's just me. On the other hand, in an organization which doesn't have a really solid coding style standard, maybe the two developers have different styles; brace placement, indenting, etc. If each tells VS to format the file his way, then the whole file will be affected, and won't that complicate things? I expect part of the check-in process could be to run the file through a company-standard beautify routine. At any rate, this leads to a question about modern CVS VCS systems... can they be set up to ignore whitespace or otherwise reduce the effects of "style"?
It is smart enough to recognize the difference between whitespace in a string definition vs whitespace between code statements. If you want to see how good the diff tool is, you can use that independently of the source control. This is a free tool. http://www.sourcegear.com/diffmerge/index.html[^] I compared these class files to verify my assertions:
namespace DiffTest { public class SomeClass { public string myField_ = "some string"; } }
namespace DiffTest{ public class SomeClass{ public string myField_ = "some string"; } }
It highlighted the extra space in the string literal as a 'significant difference', but not the extra space before the equal sign. To reproduce these results, ensure you select menu item "View->Hide unimportant differences". The UI shows the lines with curly braces are different, but not with the significant difference color. The way the tool does this is there are rulesets configured per file extension type. However, If you don't like the sourcegear diff tool, you can configure vault to use another diff tool. http://download.sourcegear.com/misc/sos/help/externalprograms1.htm[^] (I don't work for or benefit from sourcegear for these statements. I just like the tools.)Michael Lang (versat1474) http://www.xquisoft.com/[^]
-
It is smart enough to recognize the difference between whitespace in a string definition vs whitespace between code statements. If you want to see how good the diff tool is, you can use that independently of the source control. This is a free tool. http://www.sourcegear.com/diffmerge/index.html[^] I compared these class files to verify my assertions:
namespace DiffTest { public class SomeClass { public string myField_ = "some string"; } }
namespace DiffTest{ public class SomeClass{ public string myField_ = "some string"; } }
It highlighted the extra space in the string literal as a 'significant difference', but not the extra space before the equal sign. To reproduce these results, ensure you select menu item "View->Hide unimportant differences". The UI shows the lines with curly braces are different, but not with the significant difference color. The way the tool does this is there are rulesets configured per file extension type. However, If you don't like the sourcegear diff tool, you can configure vault to use another diff tool. http://download.sourcegear.com/misc/sos/help/externalprograms1.htm[^] (I don't work for or benefit from sourcegear for these statements. I just like the tools.)Michael Lang (versat1474) http://www.xquisoft.com/[^]
Excellent, thanks.
-
Ok, after the major flamefest yesterday over my assertion that I personally in my shop had no use for source control a lone member of this board finally posted a single point that convinced me it might be a good idea if it doesn't slow us down too much and is a reliable product that will *NEVER LOSE OUR CODE*. Full credit to Scott Dorman in this post[^] for bringing up the entirely valid and useful point that, while we never release branch versions of our software, we do actually have a branch when we release a new version and want to separately work on the next release and bug fix of the old released version then merge them later. That's a brilliant point that I had never thought of and no one else suggested but Scott. I see subversion mentioned a lot, I also see VSS mentioned in a negative way a lot. This will be new for me and this is not hobby code it's very valuable code for a world wide used software product, I can't take any chances on losing anything. So my question is, given I want as little hassle as possible but still need something that can do the above and not much else, what source control systems should I look at for testing and suitability?
Never trust machinery more complicated than a knife and fork. - Jubal Harshaw in Stranger in a Strange Land
Hi John, I have worked with TFS (Team Foundation Server), which is a Microsoft production. It was quite strong in branching and taking care of the branches (fixing bugs and patching them back into previous releases while adding new features into the up-coming release). I would recommend it. It is by far better and more reliable than VSS, the other Microsoft source control. The other benefit of TFS is, as far as its core database is SQL server, not only you have the scalability of the db engine, you can also run your own queries to extract some special information out of the data. Cheers, Mehrbod
-
Why CVS Sucks[^] CVS Sucks[^] Bye Bye CVS. I've been Subverted[^]
-- Where are we going? And why am I in this handbasket?
I still use cvs in windows mainly for the client. wincvs is better than any other client I have tested in windows. As for moving files and folders. On the rare occasion I want to do that (move or rename a file) I manually do it on the server by copying/moving the files.
John