# # patch "monotone.texi" # from [9b7b9ab00d31aead6a87466ff1a2d843c54084a8] # to [fe567b00feece4207218ba6314e1122a5d083882] # ======================================================================== --- monotone.texi 9b7b9ab00d31aead6a87466ff1a2d843c54084a8 +++ monotone.texi fe567b00feece4207218ba6314e1122a5d083882 @@ -15,6 +15,7 @@ Copyright 2003, 2004 Graydon Hoare Copyright 2004, 2005 Nathaniel Smith Copyright 2005 Derek Scherger +Copyright 2005 Christof Petig All rights reserved Licensed to the public under the terms of the GNU FDL (>= 1.1). See the file COPYING for details @@ -2238,6 +2239,7 @@ * Merging:: Merging with external tools, handling binary files. * Migrating and Dumping:: Changing the underlying storage system. * Importing from CVS:: Building a monotone database from a CVS repository. +* Monotone as CVS client:: Using monotone to access a CVS server. @end menu @@ -3032,7 +3034,94 @@ @end group @end smallexample address@hidden address@hidden Monotone as CVS client address@hidden Monotone as a CVS client +Importing your project into monotone is the way to go if you want to migrate +from CVS to monotone but does not help much if you can not stop using CVS on +the server. Either because you don't have full control over the server (e.g. +sourceforge) or because some developers continue to use CVS. + +Why should you prefer monotone as a cvs client over the original? address@hidden address@hidden +You want to work offline (without contacting the server). E.g. to revert +changes, diff between versions, commit new changes or browse commit logs. address@hidden +You want to use monotone-viz (graph visualization) against the repository. +Unfortunately a CVS graph is rather boring since it's linear. address@hidden +You like to use kdiff3 for easy three way merging. address@hidden +You prefer monotone's features for repeated merging and propagation between +branches over CVS hand-operated tagging and merging. address@hidden +You can experiment with bigger reworkings without putting them on the server. address@hidden itemize + +How to use it: + +Change your working directory to the topmost directory of a CVS project and +enter + address@hidden address@hidden +$ monotone --branch=org.gnome.cvs.glade-- cvs_takeover glade-- address@hidden group address@hidden smallexample + +This imports your working directory into monotone under the branch name address@hidden You can delete the CVS directories and +continue to work on this project with monotone. + +If the CVS module name @code{glade--} is identical to the name of the +toplevel directory (common use) you can omit it, sometimes it is a path +(e.g. @code{glade--/src/SourceWriter}) and you have to specify it. + +Side note: If you have changed files since your last checkin monotone creates +two nodes: The unknown contents but known revision number of your last update +and the known contents of your future checkin yet unknown to the server and +without a revision number. + + +Alternatively you can import (a part of) the history of the project from the +server: + address@hidden address@hidden +$ monotone --branch=org.gnome.cvs.glade-- --since=2005-01-01T00:00:00 cvs_pull :pserver:anonymous@@anoncvs.gnome.org:/cvs/gnome glade-- address@hidden group address@hidden smallexample + +This command retrieves the full history since Jan 1st 2005 of the address@hidden project from @code{anoncvs.gnome.org} via the @code{pserver} +protocol. If you omit @code{--since} you get full history. + +Beware! The CVS server is not designed to efficiently access really old +revisions, so generating the full history is really stressing the server. + +If you want to pull new revisions on the server into your monotone database +(like @code{cvs update}) simply enter @code{monotone cvs_pull}. + +So how to get your changes back into the server: + address@hidden address@hidden +$ monotone --branch=org.gnome.cvs.glade-- cvs_push address@hidden group address@hidden smallexample + +This pushes all commits back to the CVS server. Monotone will pass your +changelog along with commit time and author certificate to the CVS server. +If you merged two branches, monotone will gather all changelogs unknown to +the server and attach it to the merge. + +FIXME: write about --direction flag + +If you change into your working directory you can omit specifying the branch +as usual. + @page @node CVS Phrasebook @chapter CVS Phrasebook