http://www.devguy.com/fp/cfgmgmt/cvs/cvswebIIS.htm
This code is based on the feature-rich cvsweb by Henner Zeller. Modifications for IIS were incorporated by Arthur Barrett. Thisdistribution is based on Henner's cvsweb 1.93. Visit the cvswebnt home to see cvswebnt in action and to check for newer versions. Alternative - ViewCVS
ViewCVS for Windows
Machine Requirements when running on IIS
Windows NT4 SP4 or later, Server or Workstation, with NT4 option pack
Windows 2000 Server or Professional with IIS 5
CVSWeb also runs on Microsoft Personal Web Server. These instructionsmight not properly set up such a server, however. Apache Installation
See here IIS Installation
Note: if you change the SYSTEM path, it will only take effect after a reboot.
Make sure to install a version of CVSNT other than builds 34-39.
Install IIS (on NT4, via NT Option Pack 4) on the computer that has the raw CVS repository files. This machine is named tigerin these instructions. You can use network shares, so the files don'tnecessarily have to reside on the IIS machine, but you will undoubtedlyrun into file access permissions hell.
These instructions assume that the IIS wwwroot folder is located at c:\inetpub\wwwroot. Change these instructions to match the actual path of your wwwroot.
Copy all executable files from the CVSNT program files directory to a directory in your PATH
Extract the diff distribution to a directory in your PATH
If you wish to allow anonymous access,
Set the LockDir option and give the users IUSR_ and IWAM_ "Full control" permissions to the lock folder and its subfolders e.g., c:\locks
If you don't set a a locks directory, you must give the users IUSR_ and IWAM_ "Full control" permissions to all files and folders in the CVS repository
Give the users IUSR_ and IWAM_ "Full control" over c:\winnt\temp or where ever the system TEMP and TMP environment variables are pointing
Give the users IUSR_ and IWAM_ "execute" permissions to cvs.exe and "read" permissions to the folders that it's contained in
Give the users IUSR_ and IWAM_ "execute" permissions to the files you extracted in step 3 (e.g., rcs.exe) and "read" permissions to the folders that it's contained in
Make sure the users IUSR_ and IWAM_ have at least "read" and "list contents" for all files and folders in the CVS repository
Install Active Perl to c:\perl
For Windows NT, install build 522 (warning: build 616 doesn't work properly on NT)
For Windows 2000 you may install a later build. For example, build 617 seems to work fine on Windows 2000
Youmay install Perl to any folder you like, but you will have to changethe paths referenced in these instructions -- you must select "custominstall."
Install the Compress::Zlibmodule. This is optional (yet recommended anyway, since it avoidsrunning an external process) unless you have gzip.exe in your path. If you use ActivePerl, this can be done by insalling "PPM" and running from the command line:
ppm
install Compress::Zlib
Extract all files from the cvsweb distribution to c:\inetpub\wwwroot\cgi-bin\cvsweb (use folder names!)
Move the the folder c:\inetpub\wwwroot\cgi-bin\cvsweb\icons to c:\inetpub\wwwroot\icons
Copy your company logo to c:\inetpub\wwwroot\icons\apache_pb.gif
Followthe instructions listed in the cvsweb readme file, which are summarizedas follows. There are more instructions in the readme, these are thebasics:
Set %CVSROOT folders in c:\inetpub\wwwroot\cgi-bin\cvsweb\cvsweb.conf. You must use a local path name, you can't use :cvsnt: or :pserver: or :local:. Use forward slashes instead of backslashes.
%CVSROOT = (
'Development' => 'c:/cvs/na',
'Admin' => 'c:/cvs/admin'
);
And also change the next line which specifies the default repository name to use.
Modify c:\inetpub\wwwroot\cgi-bin\cvsweb\cvsweb.conf and alter the line
#$ENV{'PATH'} = '/usr/local/bin';
Remove the leading # and enter a semicolon-delimited list of folders that contain cvs.exe and rcs.exe (use forward slashes instead of backslashes).
$ENV{'PATH'} .= 'c:/cvsbin;c:/rcsbin';
An alternative to (c) is to add the locations of cvs.exe and rcs.exe to the SYSTEM path and reboot (you must reboot for this to take effect)
Modify c:\inetpub\wwwroot\cgi-bin\cvsweb\cvsweb.cgi. Look for the line $config = early on in the file and change it to (use forward slashes instead of backslashes):
$config = $ENV{'CVSWEB_CONFIG'} || 'c:/inetpub/wwwroot/cgi-bin/cvsweb/cvsweb.conf';
As an alternative to (e), set the SYSTEM environment variable CVSWEB_CONFIG to c:/inetpub/wwwroot/cgi-bin/cvsweb/cvsweb.conf (use forward slashes!) and reboot (you must reboot for this to take effect)
Run Internet Services Manager
Right-click on Default Web Site and click Properties
Click "Home Directory"
Click the Configuration.. button
Click Add
Executable: C:\Perl\bin\perlis.dll
Extension: cgi
Check "script engine"
Uncheck "check that file exists"
In Internet Services Manager, right-click on cgi-bin/cvsweb and select Properties
Under Application Settings, click the Create button
For "Execute Permissions", choose "Scripts and Executables"
For "Application Protection", select "Low (IIS Process)"
If you performed all the steps correctly, http://tiger/cgi-bin/cvsweb/cvsweb.cgi/should display the root folder of the CVS repository. If you omit thetrailing slash you will get a page that says "Moved."
Authenticating Users on IIS
Instead of leaving CVSWeb and ViewCVS wide open to the public, you canhave IIS authenticate users. IIS's integration with Windows domainsecurity makes IIS advantageous over Apache. This method can also beused with NTFS permissions to control access to specific modules andfolders.
This applies to CVSWeb only. If some users have read-only file access, you must change your CVS setup to specify the LockDir option. For example, if the repository is at c:/cvs, put the locks in c:/locks and give the users IUSR_ and IWAM_ "Full control" over the lock folder e.g., c:/locks
Give all CVSWeb or ViewCVS users "full" control over c:\winnt\temp
Run Internet Services Manager
Navigate to the cvsweb folder in the cgi-bin folder
Right-click on the cvsweb or viewcvs directory
Click properties
Click the "Directory Security" tab
In the Anonymous Access box, click edit
Un-check Anonymous
Check"Integrated Windows authentication" if your users are connected to theNT domain; otherwise check Basic authentication (you can check both)
Click OK to close all the open dialog boxes
If you experience problems, set the Application Protection setting for the cgi-bin/cvsweb or cgi-bin/viewcvs application is "Low (IIS Process)."
If you use basic authentication or if you want to protect your CVS files from packet sniffers, you should use https to encrypt data
Run Internet Services Manager
Right-click on "Default Web Site"
Choose Properties
Click the "Directory Security" tab
Click on the Server Certificate... button
Browsing Multiple Repositories via CVSWeb
cvsweb can work with multiple repositories as long as the web servermachine has access to the raw repository files. Refer to thedocumentation that ships with cvsweb.
What Does Annotate Do?
The annotate command (also in WinCVS 1.3) displays the selectedrevision, much like "download" does. Annotate displays the latestversion that is responsible for each line. This feature is handy forseeing "who did what" to a particular revision. Click here for an example.
Known Issues
Annotate doesn't work when option is specified
This is a known issue if you have the LockDiroption specified as part of your CVS repository configuration. This may be fixed in the latest version of cvswebnt.
Troubleshooting (IIS)
If you experience problems, set the Application Protection setting for the application in cgi-bin to "Low (IIS Process)"
Error: Failed to spawn GNU rlog
Change the application protection setting to "Low (IIS Process)" -- seeabove. After doing this you may still have this problem because, asfar I know, rlog doesn't work with filenames that containspaces. If this continues to be a problem, copy all of the RCSexecutables to c:/winnt/system32.
Problemsauthenticating users in IIS If "anonymous" is turned off, all usersneed permissions to "log on" to the IIS server. Go to Start/ Programs/ AdministrativeTools/ LocalSecurityPolicy
Make sure that the checkboxes are filled in both for the 'Local PolicySetting' and 'Effective Policy Setting' for the users and groups thatneed access to CVSWeb.
When asking for diffs, the message - No viewable Change - This is the same as "Failed to spawn GNU rlog" (see #1 above) Or, you're attempting to diff a binary file.
IIS Lockdown Wizard
The page cannot be found
...
HTTP 404 File not found
Change the following line from 0 to 1 in URLSCAN.INI: AllowDotInPath=1 ; if 1, allow dots that are not file extensions
and restart IIS.