- moved all instructions that related to local CVS/group setup in localcvsinstruction...
authorGodmar Back <godmar@gmail.com>
Wed, 9 Jan 2008 19:48:05 +0000 (19:48 +0000)
committerGodmar Back <godmar@gmail.com>
Wed, 9 Jan 2008 19:48:05 +0000 (19:48 +0000)
- added variables recommendsourceforge, recommendvnc, and recommendcygwin to include/exclude
  recommendations to use sourceforge, VNC, and Cygwin, resp.

doc/devel.texi
doc/localcvsinstructions.texi [new file with mode: 0644]
doc/localsettings.texi

index d5439ed7e926f0ba6300ae39b4c234ef02f62ae9..ea024c164404d280f4e520ac4301e1d13407d037 100644 (file)
@@ -4,11 +4,14 @@
 Here are some tools that you might find useful while developing code.
 
 @menu
 Here are some tools that you might find useful while developing code.
 
 @menu
-* Tags::                        
-* cscope::                      
-* CVS::                         
-* SourceForge::                 
-* VNC::                         
+* Tags::
+* cscope::
+* CVS:: @ifset recommendsourceforge 
+* SourceForge:: @end ifset 
+@ifset recommendvnc
+* VNC:: @end ifset 
+@ifset recommendcygwin
+* Cygwin:: @end ifset
 @end menu
 
 @node Tags
 @end menu
 
 @node Tags
@@ -67,178 +70,15 @@ as of some given day and time.  The version control logs tell you who
 made changes and when.
 
 CVS is not the best version control system out there, but it's
 made changes and when.
 
 CVS is not the best version control system out there, but it's
-free, it's fairly easy to use, and
-it's already available on the Leland machines you're using for
-the projects.
+free, it's fairly easy to use, and it's already installed in most
+Unix-like environments.
 
 For more information, visit the @uref{https://www.cvshome.org/, , CVS
 home page}.
 
 
 For more information, visit the @uref{https://www.cvshome.org/, , CVS
 home page}.
 
-@menu
-* Setting Up CVS::              
-* Using CVS::                   
-* CVS Locking::                 
-@end menu
-
-@node Setting Up CVS
-@subsection Setting Up CVS
-
-To set up CVS for use with Pintos on the Leland machines, start by
-choosing one group member as the keeper of the CVS repository.
-Everyone in the group will be able to use the CVS repository, but the
-keeper will actually create the repository, keep its files in his or
-her home directory, and maintain permissions for its contents.
-
-The keeper has to perform several steps to set up the repository.
-First, create a new AFS group for the repository by executing
-@samp{pts creategroup @var{keeper}:pintos-cvs}, where @var{keeper} is
-the keeper's Leland username.  Then, add each group member to the new
-group by repeatedly using the command @samp{pts adduser -user
-@var{username} -group @var{keeper}:pintos-cvs}, where @var{username}
-is the name of a group member.  After the group is created and its
-members added, @samp{pts membership @var{keeper}:pintos-cvs} should
-report that each group member is a member of the
-@samp{@var{keeper}:pintos-cvs} group.
-
-The keeper now creates the repository directory and gives the group
-members access to it.  We will assume that the repository will be in a
-directory called @file{cvs} in the keeper's home directory.  First
-create this directory with @samp{mkdir $HOME/cvs}, then give group
-members access to it with @samp{fs setacl -dir $HOME/cvs -acl
-@var{keeper}:pintos-cvs write}.  Group members also need to be able to
-look up the @file{cvs} directory in the keeper's home directory, which
-can be enabled via @samp{fs setacl -dir $HOME -acl
-@var{keeper}:pintos-cvs l} (that's letter ``ell,'' not digit
-``one.'').@footnote{This command will allow group members to list the
-files in your home directory, but not read or write them.  It should not
-create a security risk unless the names of files in your home directory
-are secret.}
-
-Now initialize the repository.
-To initialize the repository, execute @samp{cvs -d $HOME/cvs init}.
-
-Finally, import the Pintos sources into the newly initialized
-repository.  If you have an existing set of Pintos sources you want to
-add to the repository, @samp{cd} to its @samp{pintos} directory now.
-Otherwise, to import the base Pintos source tree, @samp{cd} to
-@file{/usr/class/cs140/pintos/pintos} (note the doubled
-@samp{pintos}).  After changing the current directory, execute this
-command:
-@example
-cvs -d $HOME/cvs import -m "Imported sources" pintos foobar start
-@end example
-
-Here is a summary of the commands you have now executed:
-
-@example
-pts creategroup @var{keeper}:pintos-cvs
-pts adduser -user @var{username} -group @var{keeper}:pintos-cvs
-mkdir $HOME/cvs
-fs setacl -dir $HOME/cvs -acl @var{keeper}:pintos-cvs write
-fs setacl -dir $HOME -acl @var{keeper}:pintos-cvs l
-cvs -d $HOME/cvs init
-cd /usr/class/cs140/pintos/pintos
-cvs -d $HOME/cvs import -m "Imported sources" pintos foobar start
-@end example
-
-The repository is now ready for use by any group member, as described
-below.  Keep in mind that the repository should only be accessed
-using CVS commands---it is not generally useful to examine them by
-hand, and you should definitely not modify them yourself.
-
-@node Using CVS
-@subsection Using CVS
-
-To use CVS, start by check out a working copy of the contents of the
-CVS repository into a directory named @file{@var{dir}}.  To do so, execute
-@samp{cvs -d ~@var{keeper}/cvs checkout -d @var{dir} pintos}, where
-@var{keeper} is the CVS keeper's Leland username.
-
-(If this fails due to some kind of permission problem, then run
-@command{aklog} and try again.  If it still doesn't work, log out and
-back in.  If that still doesn't fix the problem, the CVS repository may
-not be initialized properly.)
-
-At this point, you can modify any of the files in the working copy.
-You can see the changes you've made with @samp{cvs diff -u}.  If you
-want to commit these changes back to the repository, making them
-visible to the other group members, you can use the CVS commit
-command.  Within the @file{pintos} directory, execute @samp{cvs
-commit}.  This will figure out the files that have been changed and
-fire up a text editor for you to describe the changes.  By default,
-this editor is @file{vi}, but you can select a different editor by
-setting the @env{CVSEDITOR} environment variable, e.g.@: with
-@samp{setenv CVSEDITOR emacs} (add this line to your @file{.cvsrc} to
-make it permanent).
-
-Suppose another group member has committed changes.  You can see the
-changes committed to the repository since the time you checked it out
-(or updated from it) with @samp{cvs diff -u -r BASE -r HEAD}.  You can
-merge those change into your working copy using @samp{cvs update}.  If
-any of your local changes conflict with the committed changes, the CVS
-command output should tell you.  In that case, edit the files that
-contain conflicts, looking for @samp{<<<} and @samp{>>>} that denote
-the conflicts, and fix the problem.
-
-You can view the history of @var{file} in your working directory,
-including the log messages, with @samp{cvs log @var{file}}.
-
-You can give a particular set of file versions a name called a
-@dfn{tag}.  First @samp{cd} to the root of the working copy, then
-execute @samp{cvs tag @var{name}}.  It's best to have no local changes
-in the working copy when you do this, because the tag will not include
-uncommitted changes.  To recover the tagged repository later, use the
-@samp{checkout} command in the form @samp{cvs -d ~@var{keeper}/cvs
-checkout -r @var{tag} -d @var{dir} pintos}, where @var{keeper} is the
-username of the CVS keeper and @var{dir} is the directory to put the
-tagged repository into.
-
-If you add a new file to the source tree, you'll need to add it to the
-repository with @samp{cvs add @var{file}}.  This command does not have
-lasting effect until the file is committed later with @samp{cvs
-commit}.
-
-To remove a file from the source tree, first remove it from the file
-system with @command{rm}, then tell CVS with @samp{cvs remove
-@var{file}}.  Again, only @samp{cvs commit} will make the change
-permanent.
-
-To discard your local changes for a given file, without committing
-them, use @samp{cvs update -C @var{file}}.
-
-To check out a version of your repository as of a particular date, use
-the command @samp{cvs -d ~@var{keeper}/cvs checkout -D '@var{date}' -d
-@var{dir} pintos}, where @var{keeper} is the username of the CVS
-keeper and @var{dir} is the directory to put the tagged repository
-into..  A typical format for @var{date} is @samp{YYYY-MM-DD HH:MM},
-but CVS accepts several formats, even something like @samp{1 hour
-ago}.
-
-For more information, visit the @uref{https://www.cvshome.org/, , CVS
-home page}.
-
-@node CVS Locking
-@subsection CVS Locking
-
-You might occasionally see a message like this while using CVS:
-
-@example
-waiting for blp's lock in /afs/ir/users/b/l/blp/cvs
-@end example
-
-This normally means that more than one user is accessing the repository
-at the same time.  CVS should automatically retry after 30 seconds, at
-which time the operation should normally be able to continue.
-
-If you encounter a long wait for a lock, of more than a minute or so, it
-may indicate that a CVS command did not complete properly and failed to
-remove its locks.  If you think that this is the case, ask the user in
-question about it.  If it appears that an operation did go awry, then
-you (or the named user) can delete files whose names start with
-@file{#cvs.rfl}, @file{#cvs.wfl}, or @file{#cvs.lock} in the directory
-mentioned in the message.  Doing so should allow your operation to
-proceed.  Do not delete or modify other files.
+@include localcvsinstructions.texi
 
 
+@ifset recommendsourceforge
 @node SourceForge
 @section SourceForge
 
 @node SourceForge
 @section SourceForge
 
@@ -249,7 +89,9 @@ You can use it to store files, track bugs, and post notes about
 development progress.  You can set up your own
 project in SourceForge at @uref{http://sourceforge.net, ,
 sourceforge.net}.
 development progress.  You can set up your own
 project in SourceForge at @uref{http://sourceforge.net, ,
 sourceforge.net}.
+@end ifset
 
 
+@ifset recommendvnc
 @node VNC
 @section VNC
 
 @node VNC
 @section VNC
 
@@ -257,6 +99,22 @@ VNC stands for Virtual Network Computing.  It is, in essence, a remote
 display system which allows you to view a computing ``desktop''
 environment not only on the machine where it is running, but from
 anywhere on the Internet and from a wide variety of machine
 display system which allows you to view a computing ``desktop''
 environment not only on the machine where it is running, but from
 anywhere on the Internet and from a wide variety of machine
-architectures.  It is already installed on the Leland machines.  For
-more information, look at the @uref{http://www.realvnc.com/, , VNC
+architectures.  It is already installed on the lab machines.  
+For more information, look at the @uref{http://www.realvnc.com/, , VNC
 Home Page}.
 Home Page}.
+@end ifset
+
+@ifset recommendcygwin
+@node Cygwin
+@section Cygwin
+
+@uref{http://cygwin.com/, ,Cygwin} provides a Linux-compatible environment
+for Windows.  It includes ssh client and an X11 server, Cygwin/X.  If your
+primary work environment is Windows, you will find Cygwin/X extremely
+useful for these projects.  Install Cygwin/X, then start the X server
+and open a new xterm.  The X11 server also allows you to run pintos while
+displaying the bochs- or qemu-emulated console on your Windows desktop.
+@end ifset
+
+@localdevelopmenttools{}
+
diff --git a/doc/localcvsinstructions.texi b/doc/localcvsinstructions.texi
new file mode 100644 (file)
index 0000000..467bf52
--- /dev/null
@@ -0,0 +1,172 @@
+@c
+@c Instructions on how to set up a group environment, permissions, 
+@c CVS repository, dealing with local locking issues etc.
+@c
+@c While some of the discussion may apply to more than one environment,
+@c no attempt was made to untangle and split the discussion.
+@c
+
+@menu
+* Setting Up CVS::              
+* Using CVS::                   
+* CVS Locking::                 
+@end menu
+
+@node Setting Up CVS
+@subsection Setting Up CVS
+
+To set up CVS for use with Pintos on the Leland machines, start by
+choosing one group member as the keeper of the CVS repository.
+Everyone in the group will be able to use the CVS repository, but the
+keeper will actually create the repository, keep its files in his or
+her home directory, and maintain permissions for its contents.
+
+The keeper has to perform several steps to set up the repository.
+First, create a new AFS group for the repository by executing
+@samp{pts creategroup @var{keeper}:pintos-cvs}, where @var{keeper} is
+the keeper's Leland username.  Then, add each group member to the new
+group by repeatedly using the command @samp{pts adduser -user
+@var{username} -group @var{keeper}:pintos-cvs}, where @var{username}
+is the name of a group member.  After the group is created and its
+members added, @samp{pts membership @var{keeper}:pintos-cvs} should
+report that each group member is a member of the
+@samp{@var{keeper}:pintos-cvs} group.
+
+The keeper now creates the repository directory and gives the group
+members access to it.  We will assume that the repository will be in a
+directory called @file{cvs} in the keeper's home directory.  First
+create this directory with @samp{mkdir $HOME/cvs}, then give group
+members access to it with @samp{fs setacl -dir $HOME/cvs -acl
+@var{keeper}:pintos-cvs write}.  Group members also need to be able to
+look up the @file{cvs} directory in the keeper's home directory, which
+can be enabled via @samp{fs setacl -dir $HOME -acl
+@var{keeper}:pintos-cvs l} (that's letter ``ell,'' not digit
+``one.'').@footnote{This command will allow group members to list the
+files in your home directory, but not read or write them.  It should not
+create a security risk unless the names of files in your home directory
+are secret.}
+
+Now initialize the repository.
+To initialize the repository, execute @samp{cvs -d $HOME/cvs init}.
+
+Finally, import the Pintos sources into the newly initialized
+repository.  If you have an existing set of Pintos sources you want to
+add to the repository, @samp{cd} to its @samp{pintos} directory now.
+Otherwise, to import the base Pintos source tree, @samp{cd} to
+@file{/usr/class/cs140/pintos/pintos} (note the doubled
+@samp{pintos}).  After changing the current directory, execute this
+command:
+@example
+cvs -d $HOME/cvs import -m "Imported sources" pintos foobar start
+@end example
+
+Here is a summary of the commands you have now executed:
+
+@example
+pts creategroup @var{keeper}:pintos-cvs
+pts adduser -user @var{username} -group @var{keeper}:pintos-cvs
+mkdir $HOME/cvs
+fs setacl -dir $HOME/cvs -acl @var{keeper}:pintos-cvs write
+fs setacl -dir $HOME -acl @var{keeper}:pintos-cvs l
+cvs -d $HOME/cvs init
+cd /usr/class/cs140/pintos/pintos
+cvs -d $HOME/cvs import -m "Imported sources" pintos foobar start
+@end example
+
+The repository is now ready for use by any group member, as described
+below.  Keep in mind that the repository should only be accessed
+using CVS commands---it is not generally useful to examine them by
+hand, and you should definitely not modify them yourself.
+
+@node Using CVS
+@subsection Using CVS
+
+To use CVS, start by check out a working copy of the contents of the
+CVS repository into a directory named @file{@var{dir}}.  To do so, execute
+@samp{cvs -d ~@var{keeper}/cvs checkout -d @var{dir} pintos}, where
+@var{keeper} is the CVS keeper's Leland username.
+
+(If this fails due to some kind of permission problem, then run
+@command{aklog} and try again.  If it still doesn't work, log out and
+back in.  If that still doesn't fix the problem, the CVS repository may
+not be initialized properly.)
+
+At this point, you can modify any of the files in the working copy.
+You can see the changes you've made with @samp{cvs diff -u}.  If you
+want to commit these changes back to the repository, making them
+visible to the other group members, you can use the CVS commit
+command.  Within the @file{pintos} directory, execute @samp{cvs
+commit}.  This will figure out the files that have been changed and
+fire up a text editor for you to describe the changes.  By default,
+this editor is @file{vi}, but you can select a different editor by
+setting the @env{CVSEDITOR} environment variable, e.g.@: with
+@samp{setenv CVSEDITOR emacs} (add this line to your @file{.cvsrc} to
+make it permanent).
+
+Suppose another group member has committed changes.  You can see the
+changes committed to the repository since the time you checked it out
+(or updated from it) with @samp{cvs diff -u -r BASE -r HEAD}.  You can
+merge those change into your working copy using @samp{cvs update}.  If
+any of your local changes conflict with the committed changes, the CVS
+command output should tell you.  In that case, edit the files that
+contain conflicts, looking for @samp{<<<} and @samp{>>>} that denote
+the conflicts, and fix the problem.
+
+You can view the history of @var{file} in your working directory,
+including the log messages, with @samp{cvs log @var{file}}.
+
+You can give a particular set of file versions a name called a
+@dfn{tag}.  First @samp{cd} to the root of the working copy, then
+execute @samp{cvs tag @var{name}}.  It's best to have no local changes
+in the working copy when you do this, because the tag will not include
+uncommitted changes.  To recover the tagged repository later, use the
+@samp{checkout} command in the form @samp{cvs -d ~@var{keeper}/cvs
+checkout -r @var{tag} -d @var{dir} pintos}, where @var{keeper} is the
+username of the CVS keeper and @var{dir} is the directory to put the
+tagged repository into.
+
+If you add a new file to the source tree, you'll need to add it to the
+repository with @samp{cvs add @var{file}}.  This command does not have
+lasting effect until the file is committed later with @samp{cvs
+commit}.
+
+To remove a file from the source tree, first remove it from the file
+system with @command{rm}, then tell CVS with @samp{cvs remove
+@var{file}}.  Again, only @samp{cvs commit} will make the change
+permanent.
+
+To discard your local changes for a given file, without committing
+them, use @samp{cvs update -C @var{file}}.
+
+To check out a version of your repository as of a particular date, use
+the command @samp{cvs -d ~@var{keeper}/cvs checkout -D '@var{date}' -d
+@var{dir} pintos}, where @var{keeper} is the username of the CVS
+keeper and @var{dir} is the directory to put the tagged repository
+into..  A typical format for @var{date} is @samp{YYYY-MM-DD HH:MM},
+but CVS accepts several formats, even something like @samp{1 hour
+ago}.
+
+For more information, visit the @uref{https://www.cvshome.org/, , CVS
+home page}.
+
+@node CVS Locking
+@subsection CVS Locking
+
+You might occasionally see a message like this while using CVS:
+
+@example
+waiting for blp's lock in /afs/ir/users/b/l/blp/cvs
+@end example
+
+This normally means that more than one user is accessing the repository
+at the same time.  CVS should automatically retry after 30 seconds, at
+which time the operation should normally be able to continue.
+
+If you encounter a long wait for a lock, of more than a minute or so, it
+may indicate that a CVS command did not complete properly and failed to
+remove its locks.  If you think that this is the case, ask the user in
+question about it.  If it appears that an operation did go awry, then
+you (or the named user) can delete files whose names start with
+@file{#cvs.rfl}, @file{#cvs.wfl}, or @file{#cvs.lock} in the directory
+mentioned in the message.  Doing so should allow your operation to
+proceed.  Do not delete or modify other files.
index 6a3dc3ee4b7dff52a58de345de7b5b9a0118d23e..e8bb45b07e3a61f18c2e5ec31d0a1c1c20b07fba 100644 (file)
@@ -5,6 +5,10 @@
 @set localpintoshttppath http://@/www.stanford.edu/@/class/@/cs140/@/pintos/@/pintos.@/tar.gz
 @set localpintosbindir /usr/class/cs140/`uname -m`/bin
 
 @set localpintoshttppath http://@/www.stanford.edu/@/class/@/cs140/@/pintos/@/pintos.@/tar.gz
 @set localpintosbindir /usr/class/cs140/`uname -m`/bin
 
+@set recommendsourceforge
+@set recommendvnc
+@clear recommendcygwin
+
 @macro localmachines{}
 The CS 140 ``officially supported'' Pintos development machines are
 the machines in Sweet Hall managed by Stanford ITSS, as described on
 @macro localmachines{}
 The CS 140 ``officially supported'' Pintos development machines are
 the machines in Sweet Hall managed by Stanford ITSS, as described on
@@ -71,3 +75,6 @@ reviewing that document.  We expect code at the ``Peer-Review Quality''
 level described there.
 @end macro
 
 level described there.
 @end macro
 
+@macro localdevelopmenttools{}
+@c Descriptions of additional, local development tools can be inserted here
+@end macro