Click here to Skip to main content
13,449,155 members (49,363 online)
Click here to Skip to main content
Add your own
alternative version


30 bookmarked
Posted 1 Oct 2008

Visual Studio 2008 CVS Setup

, 10 Oct 2008
Rate this:
Please Sign up or sign in to vote.
This document describes how to setup a CVS server connection for Visual Studio 2008.NET.


Visual Studio 2008 CVS Setup


<a href="#_toc210692872">Table of contents

Section 1 - General Information

1 Introduction

1.1 Identification

1.2 License Notes

1.3 Requirements

Section 2 - Detailed Description


2.1 Server Access

2.2 Setup PushOK CVS Plug-in

2.3 Setup TortoiseCVS Software

2.4 Visual Studio 2008 Options adjust

3 Connect to your repository

4 Using SSH2

4.1 Tools Setup

4.2 Generate a public/private key

4.3 Upload your public key to the ssh server

4.4 Create a batch file

4.5 Test your connection


1 Introduction

<a name="_toc210692875">1.1 Identification

This document describes how to setup a CVS server connection for Visual Studio 2008.NET.

I've tested few of the available plug-ins and herein my conclusion:

o        Jalindi  ( : I was able to use Jalindi to check-in my source code but I wasn't able to use it to check-out from remote CVS server; you have to use another CVS client, this drawback prevents you from synchronizing the code with the rest of the team. Jalindi doesn't have help documentation.

o        TamTam CVS plug-in (<a href="http:"" software="" tamtam="" index.shtml"=""> supports CVSNT2.5 which maybe not compatible with old CVS systems, TamTam comes without conflict editor hence you have to download CVS conflict editor and use it, and I didn't like that.

o        PushOK CVS plug-in (see section 2.2), is easily integrated within the VS2008.NET IDE, it supports most Basic operations for working with Source Control e.g. checkin, checkout, undo checkout, get latest version, tags & branches, and visual diff/merge support. It is not cheap and doesn't support team license, so if you have N developers you will pay N * its price. I've chosen to use PushOK because it was the most stable plug-in I tested.

<a name="_toc210692876">1.2 License Notes

To install the required software tools, please be aware of the respective licensing of these software tools:

o        You need to own a valid license for Visual Studio 2008.NET.

o        You need to own a valid license for PushOk CVS plug-in.

<a name="_toc210692877">1.3 Requirements

Requirement to build this environment is an x86-based machine with

o        Windows-XP SP2 pre-installed.

o        For installation, an Internet connection to download software packages.



<a name="_ref125517197">Section 2 - Detailed Description


<a name="_toc210692880">2.1 Server Access

The Concurrent Versioning System (CVS) is used as repository for all software components needed for a build and to achieve team synchronization during development phase. Please perform the following steps to access a CVS server:

1.       Create a new repository (should be done by the CVS admin only):

a)       Connect to: \\$CVS_server_ip\ using putty tool (please refer to section 4.1 for details) or any other tool, your current directory should be your repository folder e.g. /CVS/Myproject.

b)      Write the command export CVSROOT=/CVS/Myproject/ at the command prompt.

c)       Write the command cvs init at the command prompt, now the CVS repository is initialized and the CVSROOT folder is created.

d)      On your local machine create the folder hierarchy for the repository.

2.       Use CVS client to connect to the repository e.g. TortoiseCVS (please refer to section 2.3) with the following settings:

●        Protocol: Secure Shell (:ext:)

●        Server: $CVS_server_ip

●        Port: leave empty

●        Repository folder: /CVS/Myproject

●        User name: enter your username

●        Module: enter the top most folder's name in your folder hierarchy for the repository

3.       Add the folder hierarchy created on your local machine to the newly initialized repository on the server using the add content command and then the commit command. (I'm assuming min. level of CVS awareness)

<a name="_toc210692881">2.2 Setup PushOK CVS Plug-in

Setting up a CVS plug-in for Visual Studio is described in detail here:

1.       Download PushOK plug-in from <a href="http:"" soft_download.php?idprogram="2""> :

2.       Component Group: Series 1.x, Component Name: CVSSCC

3.       Install plug-in executable by double clicking on it.

<a name="_toc210692882">2.3 Setup TortoiseCVS Software

You will need a CVS client to do a check-out operation for the software for the first time as PushOK plug-in doesn't do this, do:

1.       Download Tortoise from <a href="http:"" download.shtml"=""> , choose version 1.8.32. it is more stable than version 1.10.9  which crashes upon connecting to CVS server.

2.       Install TortoiseCVS by double clicking on it.

<a name="_toc210692883">2.4 Visual Studio 2008 Options adjust

To Use the PushOK plug-in within the Visual Studio, do:

1.       Go to the "View" tab and select it.

2.       From the drop down menu select "Toolbars".

3.       From the list of toolbars choose and check "Source Control".




Then you should see the source control tool bar with the green arrow active:

1.       From Tools menu choose Options.

2.       From the left panel choose Source Control.

3.       To the right click on the Advanced button, you should see now the PushOK CVS Proxy Properties window dialogue.

4.       Click on CVS Executables tab, then select for the option CSV Executable a CVS executable which could be the one under TortoiseCVS or the one under CVSNT, I've chosen to use the one under TortoiseCVS. You can leave the GUI Executable empty.

5.       Click on Known lists tab, add the CVS connection string to the list to be used as the default connection (CVSROOT path): ":ext:$user@$CVS_server_ip:/CVS/Myproject".

6.       Click on Server Options tab, choose the default CVSROOT you just entered in step 5; for the SSH client option select any Plink executable which could be TortoisePlink.exe  under TortoiseCVS installation folder.


<img border=0 width="604" height="359 src=""">


<img border=0 width="491" height="646 src=""">

<img border=0 width="489" height="293 src=""">

3 Connect to your repository

After checking out your source code using TortoiseCVS you need to make a connection between VS2008 and the repository folder on the CVS server:

1.       Double click on the sln file to open the solution.

2.       On the source control tool bar click on Change Source Control icon.

3.       A dialogue will appear with title Change Source Control.

4.       On the dialogue choose the solution and click on the Bind icon.

5.       A dialogue will appear with title Please Select CVSROOT, module and local path.

6.       For the CVSROOT part enter the connection string e.g. ":ext:aasaleh@"

7.       Click on the Properties button to the right, the PushOK CVS Proxy properties dialogue will appear (see a snapshoot above), on the Server options tab check that you have SSH client entered e.g TortoisePlink.exe If you get a warning message about ssh connection,

8.       Click on the Check button in the  Please Select CVSROOT, module and local path dialogue, you should get The CVSROOT is OK message.

9.       For the CVS Module part, enter the module name, normally you should see it written when the dialogue appear.

10.   Click on the Check button to the right, you should get The MODULE is OK message

11.   Press the OK button for the dialogue.

12.   Now you should see the solution connected to the repository with the Connected mark checked.

13.   Repeat the above for the whole projects in the solution.

14.   Finally, a dialogue window with title Source Control will appear, you will be asked about how to treat your local files, choose the second option "Allow these files to be replaced".

<img border=0 width="350" height="122 src=""">

<img border=0 width="604" height="318 src=""">

<img border=0 width="581" height="385 src=""">

<img border=0 width="424" height="283 src=""">

4 Using SSH2

Once you connect to the CVS server you will be asked each time about your password, to avoid this you need to use the SSH2 connection with the server.

<a name="_toc210692886">4.1 Tools Setup

You will need tools provide a secure means of connecting computers over an inherently unsecured medium.

1.       Download pageant, putty, plink, psftp pscp, and puttygen from <a href="http:"" ~sgtatham="" putty="" download.html"="">

2.       Save them all under c:\windows directory.

<a name="_toc210692887">4.2 Generate a public/private key

Generate public/private key pair, you will keep the private key on your machine and no one should know about it and send the public key to the CVS server:

1.       Start puttygen by double clicking on it.

2.       Click generate key button.

3.       Save private key in a file saved in c:\windows.

<img border=0 width="484" height="472 src=""">

<a name="_toc210692888">4.3 Upload your public key to the ssh server

After you saved your private key you will need to get a copy from your public key to be copied into the server under /ssh/authorized_keys file.

1.       Start puttygen by double clicking on it.

2.       Click load private key, select file you saved under c:\windows.

3.       Copy the text in the top part of the window (Public key) and paste it into a file; don't use Save public key button because this button saves a truncated key.

<a name="_toc210692889">4.4 Create a batch file

As you close the connection with the CVS server when you shut down your machine you will need at start-up to authenticate your connection.

1.       Create a bat file with the following contents:

start c:\windows\pageant.exe c:\windows\myprivatekey.ppk


2.       Go to windows start up menu and add this batch file to authenticate automatically every time you boot.

<a name="_toc210692890">4.5 Test your connection

Test that you can login automatically to the CVS server using plink..

1.       Open a cmd prompt and go to c:\windows where you just downloaded the tools and type:

Plink user@CVS_server_ip

2.       Go to windows start up menu and add this batch file to authenticate automatically every time you boot.







<a name="_toc109045478">Legal

<a name="_toc82592757"><a name="_toc82592088"><a name="_toc82591416"><a name="_toc82853645"><a name="_toc82592762"><a name="_toc82592091"><a name="_toc82591424"><a name="_toc82853653"><a name="_toc82592770"><a name="_toc82592103"><a name="_toc82591431"><a name="_toc82853660"><a name="_toc82592778"><a name="_toc82592109"><a name="_toc82591441"><a name="_toc82853670"><a name="_toc82592791"><a name="_toc82592120"><a name="_toc82591448"><a name="_toc82853677"><a name="_toc82592804"><a name="_toc82592137"><a name="_toc82591466"><a name="_toc82853695"><a name="_toc82592814"><a name="_toc82592143"><a name="_toc82591474"><a name="_toc82853703"><a name="_toc82592820"><a name="_toc82592154"><a name="_toc82591483"><a name="_toc82853712"><a name="_toc82592831"><a name="_toc82592167"><a name="_toc82591496"><a name="_toc82853725"><a name="_toc82592842"><a name="_toc82592171"><a name="_toc82591499"><a name="_toc82853728"><a name="_toc82592845"><a name="_toc82592176"><a name="_toc82591504"><a name="_toc82853733"><a name="_toc82592850"><a name="_toc82592179"><a name="_toc82591508"><a name="_toc82853737"><a name="_toc82592854"><a name="_toc82592184"><a name="_toc82591512"><a name="_toc82853741"><a name="_toc82592858"><a name="_toc82592187"><a name="_toc82591522"><a name="_toc82853751"><a name="_toc82592868"><a name="_toc82592203"><a name="_toc82591531"><a name="_toc82853760"><a name="_toc82592877"><a name="_toc82592211"><a name="_toc82591539"><a name="_toc82853768"><a name="_toc82592885"><a name="_toc82592217"><a name="_toc82591546"><a name="_toc82853775"><a name="_toc82592892"><a name="_toc82592229"><a name="_toc82591557"><a name="_toc82853786"><a name="_toc82592905"><a name="_toc82592234"><a name="_toc82591562"><a name="_toc82853791"><a name="_toc82592909"><a name="_toc82592238"><a name="_toc82591566"><a name="_toc82853795"><a name="_toc82592912"><a name="_toc82592241"><a name="_toc82591569"><a name="_toc82853798"><a name="_toc82592917"><a name="_toc82592248"><a name="_toc82591576"><a name="_toc82853805"><a name="_toc82592923"><a name="_toc82592252"><a name="_toc82591580"><a name="_toc82853809"><a name="_toc82592926"><a name="_toc82592257"><a name="_toc82591588"><a name="_toc82853817"><a name="_toc82592935"><a name="_toc82592265"><a name="_toc82591597"><a name="_toc82853826"><a name="_toc82592951"><a name="_toc82592291"><a name="_toc82591623"><a name="_toc82853852"><a name="_toc82592969"><a name="_toc82592299"><a name="_toc82591629"><a name="_toc82853858"><a name="_toc82592976"><a name="_toc82592305"><a name="_toc82591633"><a name="_toc82853862"><a name="_toc82592982"><a name="_toc82592315"><a name="_toc82591643"><a name="_toc82853872"><a name="_toc82592990"><a name="_toc82592319"><a name="_toc82591647"><a name="_toc82853876"><a name="_toc82592993"><a name="_toc82592322"><a name="_toc82591650"><a name="_toc82853879"><a name="_toc82592996"><a name="_toc82592325"><a name="_toc82591653"><a name="_toc82853882"><a name="_toc82592999"><a name="_toc82592328"><a name="_toc82591656"><a name="_toc82853885"><a name="_toc82593002"><a name="_toc82592331"><a name="_toc82591660"><a name="_toc82853889"><a name="_toc82593006"><a name="_toc82592336"><a name="_toc82591664"><a name="_toc82853893"><a name="_toc82593010"><a name="_toc82592339"><a name="_toc82591668"><a name="_toc82853897"><a name="_toc82593014"><a name="_toc82592344"><a name="_toc82591672"><a name="_toc82853901"><a name="_toc82593019"><a name="_toc82592349"><a name="_toc82591677"><a name="_toc82853906"><a name="_toc82593023"><a name="_toc82592353"><a name="_toc82591681"><a name="_toc82853910"><a name="_toc82593038"><a name="_toc82592375"><a name="_toc82591705"><a name="_toc82853934"><a name="_toc82593052"><a name="_toc82592383"><a name="_toc82591712"><a name="_toc82853941"><a name="_toc82593058"><a name="_toc82592387"><a name="_toc82591715"><a name="_toc82853944"><a name="_toc82593061"><a name="_toc82592390"><a name="_toc82591718"><a name="_toc82853947"><a name="_toc82593064"><a name="_toc82592393"><a name="_toc82591721"><a name="_toc82853950"><a name="_toc82593067"><a name="_toc82592396"><a name="_toc82591724"><a name="_toc82853953"><a name="_toc82593070"><a name="_toc82592399"><a name="_toc82591728"><a name="_toc82853957"><a name="_toc82593076"><a name="_toc82592407"><a name="_toc82591737"><a name="_toc82853966"><a name="_toc82593083"><a name="_toc82592416"><a name="_toc82591746"><a name="_toc82853975"><a name="_toc82593094"><a name="_toc82592423"><a name="_toc82591763"><a name="_toc82853992"><a name="_toc82593110"><a name="_toc82592439"><a name="_toc82591769"><a name="_toc82853998"><a name="_toc82593123"><a name="_toc82592453"><a name="_toc82591783"><a name="_toc82854012"><a name="_toc82593131"><a name="_toc82592463"><a name="_toc82591792"><a name="_toc82854021"><a name="_toc82593138"><a name="_toc82592475"><a name="_toc82591808"><a name="_toc82854037"><a name="_toc82593155"><a name="_toc82592484"><a name="_toc82591817"><a name="_toc82854046"><a name="_toc82593163"><a name="_toc82592492"><a name="_toc82591825"><a name="_toc82854054"><a name="_toc82593171"><a name="_toc82592500"><a name="_toc82591828"><a name="_toc82854057"><a name="_toc82593174"><a name="_toc82591832"><a name="_toc82854061"><a name="_toc82592506"><a name="_toc40515229"><a name="_toc82593179"><a name="_toc82591835"><a name="_toc82854064"><a name="_toc82592509"><a name="_toc40515232"><a name="_toc82593182"><a name="_toc82591838"><a name="_toc82854067"><a name="_toc82592512"><a name="_toc40515235"><a name="_toc82593185"><a name="_toc82591841"><a name="_toc82854070"><a name="_toc82592515"><a name="_toc40515238"><a name="_toc82593188"><a name="_toc82591844"><a name="_toc82854073"><a name="_toc82592518"><a name="_toc40515241"><a name="_toc82593191"><a name="_toc82591847"><a name="_toc82854076"><a name="_toc82592521"><a name="_toc40515245"><a name="_toc82593195"><a name="_toc82592524"><a name="_toc82591854"><a name="_toc82854083"><a name="_toc82593237"><a name="_toc82592602"><a name="_toc82591931"><a name="_toc82854160"><a name="_toc82593314"><a name="_toc82591974"><a name="_toc82854203"><a name="_toc82592676"><a name="_toc40515282"><a name="_toc82593350"><a name="_toc82592006"><a name="_toc82854235"> 

VS2008, and the Microsoft logo are trademarks of Microsoft Corporation in the United States, or other countries, or both.

Other company, product and service names may be trademarks or service marks of others.

All information contained in this document is subject to change without notice. The products described in this document are NOT intended for use in applications such as implantation, life support, or other hazardous uses where malfunction could result in death, bodily injury, or catastrophic property damage. All information contained in this document was obtained in specific environments, and is presented as an illustration. The results obtained in other operating environments may vary.



This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Ahmed A Saleh
Team Leader
Egypt Egypt
No Biography provided

You may also be interested in...

Comments and Discussions

-- There are no messages in this forum --
Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.180318.3 | Last Updated 11 Oct 2008
Article Copyright 2008 by Ahmed A Saleh
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid