HOWTO: CVS with VS.NET
发表于2005/1/3 10:39:00 1591人阅读
I have looked for several months how to use some kind of source control on my projects. Up to now , I had very little success, or the integration and usage of the client software were too difficult. With this, I will show you step by step how to set up a local CVS server and use that directly from within VS.NET. IOW you will be getting an enabled source control menu, and some pretty new icons and context menus.
Over the last 24 hours I have struggled with this beast and managed to get it going. OK, lets get one with it!
Why use CVS?
CVS enables you to keep record of changes in source code. It allows you to see differences between code. If that and the pictures above isnt enough, then please feel free to leave.
What do I need?
You will need the latest download available from web page ( I suggest the zip version) and you will need the latest beta from the beta page.
Extract both files into the same directory and double click install.bat. You can go back to VSS mode by double clicking the switchToSourceSafe.vbs file.
NOTE: Please make sure VS.NET is closed at this stage. OK, once that has been done, we are ready to add our first solution. This is the part where Igloo is not so nice.
- Fire up VS.NET, and open a blank solution (say CVSSol).
- Open the solution explorer and right click your solution. Then click add Solution to Source Control. You will be presented with the CVS GUI.
- Click create repository. Note: Leave all values default. You will get a message saying the repository has been created. (not very informative though )
- Click create module (and again leave module name default PLEASE!). You can however change the vendor and revision tags, but be careful, the revision tag may not contain "."'s and it must start with a letter. CVS will now do it stuff. You might get a message saying not all files has been added or checked out. Dont worry about that, it seems to happen every time and does not effect the solution. Your solution has now been CVS'd. You will notice a red tick next to the solution. That means the fill is checked out (ready for editing).
- Next we will add a project. You will notice all the files gets red ticks as well.
- Finally, to make sure the project has been added, we do a checkin. To do this you will need to bring up the Show Pending Checkins window (doing a normal checkin at this stage does not seem to work). You can add a comment and click Check In. Again you will be presented with the CVS GUI to add the new project and again leave everything default and click create module (this will be a subdirectory of the solution's module). A message box will appear on success (again not very informative to the eye). Again, you might be prompted that some files were not added, and again its ok, dont worry or have sleepness nights
- Finally (finally), right click the solution in the solution explorer and click undo checkout. And what do you know, all files are nicely in the repository and locked (readonly) and you will see pretty blue lock icons. This seems to be the only problem when you checkin files they seem to get auto checked out again. You can now close the project and reopen it and go crazy with CVS.
- Create a local repository first, the repository can be easily moved to a remote repository by just copying.
- When working with Web projects, disable FrontPage sharing mode and set solution explorer to show all files (so you can do diffs on aspx.cs files as well).
- History is not outputted to a Dialog like VSS, rather look in the output window under Source Control.
- Customize your SCC options to your liking, like I prefer that a checkin is done when a solution is closed.
This is just an introdution how to setup a local repository. I have setup a remote one as well , but for the life of me cannot reproduce it. However I didnt test moving the repository as created above to a different CVSROOT, and should work.
All suggestions/questions are welcome. Good luck! And have a look at the SCC options under Tools, Options. You can tune it to behave like you need it to be.