Merge branch 'mirbsd'
[alioth/cvs.git] / windows-NT / README
1                    Concurrent Versions System (CVS)
2                     ported to Microsoft Windows NT
3
4 Check the ../INSTALL file for information on the most recent version
5 of CVS which has been known to be tested with NT and/or Win95.
6
7 This port implements the full set of CVS commands, both local and
8 client.  It does not provide a CVS server for NT.  Multiple users can
9 access a common CVS repository, if they can mount the repository,
10 either directly or via a networked file system.
11
12 We don't distribute a .ZIP source distribution partly because, as far
13 as I can tell, PKZIP insists on munging long file names, which would
14 confuse the makefile for Visual C++.
15
16 To compile, use Microsoft Visual C++ on the file cvsnt.mak in the
17 distribution's top directory.  At least with the tar port I'm using,
18 the sources get extracted without carriage returns and you must add
19 carriage returns to the end of every line in cvsnt.mak.  It doesn't
20 seem to be necessary to add them to any other file.  This makefile was
21 generated with Visual C++ 5.x.  With Visual C++ 6.x you can also try
22 cvsnt.dsw.  For Visual C++ 2.x you probably are in the position of
23 digging through old versions of CVS for a cvsnt.mak and then updating
24 it.  Feel free to let us know about problems of this sort as with
25 other bug reports.
26
27 If you end up regenerating the MSVC makefiles and submitting a patch back to
28 us, please be careful.  MSVC appears to be trying to write absolute paths into
29 the diff/libdiff.mak file and a relative path to a file in the local MSVC
30 install in cvsnt.dep (this last only with MSVC 6.x).
31
32 Send bug reports to bug-cvs@nongnu.org.
33
34 As of May 1996, this port passed all of the tests in src/sanity.sh,
35 save the one that deals with reserved all-upper-case tags (BASE and
36 HEAD), due to a limitation in the NT command shell.  sanity.sh
37 provides pretty minimal feature coverage, but still gives me some
38 confidence it isn't totally broken.  The tests were run by defining
39 KLUDGE_FOR_WNT_TESTSUITE (see src/main.c).
40
41 To operate in client mode with old versions of CVS (1.9 and older),
42 you will need GNU patch.  To do compressed transfers with old versions
43 of CVS (1.8 and older), you also need gzip.  Note that you do NOT need
44 an rsh client if you are using the :server: access method (which uses
45 the internal rsh client), except perhaps for debugging.
46
47 To operate in local mode, you should need nothing other than CVS (that
48 is, you no longer need RCS, diff, &c, in order to run CVS).
49
50 One useful site may be the Congruent ports of various packages to
51 Windows NT, binary and source:
52
53         ftp://microlib.cc.utexas.edu/microlib/nt/gnu/
54
55 In particular, microlib seems to have versions of GNU tar and gzip
56 which support long file names, which you will need to unpack the CVS
57 source distribution.
58
59 The Cygwin project is a port of various GNU tools for NT, providing
60 bash as the shell and gcc as the compiler.  Basically, you don't want
61 the stuff in this directory for CVS running under Cygwin; you want
62 the same stuff as for unix (../configure, Makefile.in, &c).  For
63 Cygwin information see
64
65         http://www.cygwin.com/
66
67 Morten Hindsholm's port of CVS 1.4A2 to Windows NT may be useful if
68 you're modifying CVS itself:
69
70         ftp://ftp.digex.net/pub/access/schueman/cvs/cvsnt14b.zip
71
72 Here are some other things which may be of interest for unix junkies:
73
74         http://www.halcyon.com/gvr/vim/       (VI clone)
75         ftp://wuarchive.wustl.edu/systems/ibmpc/gnuish/less177.zip
76
77 If you want to browse/edit the sources using Visual C++, we recommend
78 setting tab stops to 8 spaces, since that is what the CVS sources
79 expect.  The tab stop setting is in the "Editor" or "Tabs" section of
80 the "Options..."  dialog which is in the "Tools..." menu.
81
82 The following harmless warnings are known:
83
84 - regex.c: 103 warnings, mostly signed/unsigned comparison conflicts.
85   I am not going to *touch* this code. :-) I got my fill of it when I was
86   hacking GNU Emacs.
87
88 .\lib\getdate.c(760) : warning C4013: 'getdate_yyparse' undefined; assuming extern returning int
89 .\lib\getdate.c(1612) : warning C4102: 'yyerrlab' : unreferenced label
90 .\lib\getdate.c(1612) : warning C4102: 'yynewstate' : unreferenced label
91
92 Oct 1998 update: there are more now.  I've gotten lax about removing
93 the warnings lately :-( -kingdon.
94
95 CODING STANDARDS for Windows
96
97 For general coding standards, see ../HACKING.
98
99 In my opinion win32 is the right API to write to.  Microsoft seems to
100 be better about compatibility across versions than unix vendors (on a
101 good day, anyway)--the Visual C++ package I bought has not only win32
102 but also win16 too (that is, they also include Visual C++ 1.x).  As
103 far as I know there is only one win32 (not counting win32s or win32c
104 or whatever), not multiple versions.
105
106 ANSI C is also good.  As far as I know these calls work fairly well on
107 NT.
108
109 What one should avoid like the plague on NT (IMHO) is POSIX calls such
110 as stat().  These tend to be very poorly supported, and tend to break
111 from version to version or vendor to vendor (the latter being
112 particularly an issue on OS/2, with IBM, Watcom, and EMX all having
113 _very_ different C libraries).