Details on the Modified CvsNt server.

CvsNt was written in such a way that it could not use network shares as repository locations. There are any number of reasone why this is good however with a robust network and solidly configured system it should be fine to do such a thing.

LucasSheehan has created a modified version that allows for this.

(Please do note that there are some very valid reasons this could be bad, but I have successfully had CVS repositories on NFS and CIFS shares with no problems, results may vary, dont yell at me if you hose your data doing this. As the community in general hates this idea will not release a version of CvsNtModified yet, I might down the road.)

Changing the Source

  1. Download the source code for CvsNt from http://www.cvsnt.org/.

  2. Using MicroSoft Visual C++ open the workspace for CvsNt.

  3. Select the cvsntcpl project as your active project.
  4. Under the cvsntcpl project edit the NewRootDialog.cpp and cvsnt1.cpp files.

  5. In NewRootDialog.cpp comment this out the below text (note that "\\" is the comment string in MSVC++):

    if(GetDriveType(shortfn)==DRIVE_REMOTE)
          {
    AfxMessageBox(_T("You must store the repository on a local drive.  
                     Network drives are not allowed"),MB_ICONSTOP|MB_OK);
                 return;
          }
    
  6. And comment the below out of cvsnt1.cpp:
    if(bOk && GetDriveType(shortfn)==DRIVE_REMOTE)
    {
            bOk=FALSE;
            SendMessage(hWnd,BFFM_SETSTATUSTEXT,NULL,(LPARAM)
                         "Network drives are not allowed");
    }
    
  7. Now build a new cvsnt.cpl file by compiling through MSVC++, note that you must build a clean win32 release and not a debug release. A debug release depends on other files and will not function correctly when moved to another server.
  8. The hacked control panel (this is what you just built) needs to replace the one installed in c:\winnt\system32\. (note: this implies that you have previously installed cvsnt, so if you have not go do that first using the windows installer found at www.cvsnt.org)

Using the New Control Panel

You can now point the system at network shares (mapped as drives) for repository locations HOWEVER there are some critical steps below that must be followed for this to work.

  1. You MUST run the CvsNt and cvslock services as a user other then the local system account.

  2. The account you use if authenticating to a domain must have rights to authenticate users against the domain controller. (if you are using local users for pserver authentication you should be fine if you give the user admin privliges on the server)
  3. The network share you are using for your repository MUST allow the user that the services run as full access.
  4. The drive must be mapped on the system via the local console (we learned the hardway that mapping a drive via remote desktop/terminal services does not work, VNC will work as it gives you a console login).
  5. The most annoying part is that the user running the service must be logged into the system. On windows NT/2000 you can configure a user to automatically login at boot, which is one way to deal with this.
  6. Make sure you turn "impersonation" off under the advanced tab of the cvsnt control panel, this makes sure everything is done as the user we just configured.

Notes


CategorySoftware

CvsNtModified (last edited 2003-11-25 04:33:08 by AdamShand)