Scroll to navigation

CDV(1) General Commands Manual CDV(1)


cdv - codeville command line client tool


cdv command [options]


cdv is a client for codeville, a distributed version control system. It aims to perform the same job as SVN, CVS, RCS, arch, etc.


Add new files to the repository. All files must be added before they will be part of the version control system.

Commits all changes made to the repository since the last commit. A comment is required for every commit. It may either be supplied via the -m option for simple comments or if the -m option is omitted, whatever editor is specified in the EDITOR environment variable will be launched. If no editor is specified, vi is the default in all unixy environments (including OS X and cygwin) and Notepad is the default in Windows. In the editor, a comment may be added at the top, and file changes which the user does not wish to have in a given changeset can be removed by deleting them from the "### files" list at the bottom (although merging cannot be avoided through deleting things from the "### merge files" list). Every commit creates a changeset. If there are changes since the last update, files will be merged. In the event of unresolved conflicts, the user will be prompted to resolve them.

-n used to commit changes off-line. Changes committed off-line can still be used with all commands, but are not visible to other users until an on-line commit is done.

-b forces commit to not make a new changeset. This will commit changes which have already been committed locally via -n (or as a result of having multiple repositories involved), but will not create a new changeset for existing file modifications. This is especially needed for committing to back-up servers (servers started with -b) as it is the only way to commit changes to a back-up server. This is not the recommended way to commit changes to normal servers. In general, if one wishes to commit changes committed offline without committing new changes, one should commit and changeset with all the files in the ""### files"" list removed.

Recreates the repository at the given changeset.

Creates a new repository with the appropriate name.

Gives the description of the changeset including the long name of the change, the user who made the change, that date it was made, the comment, the relation it has to other changesets, and what files were modified and in what manner they were modified (i.e. added, modified, renamed, or deleted).

-s gives a short description

-d does a diff

-x displays an XML version of the output. This is not compatible with displaying a diff. This can only be used with parenthesized changesets from the file history. It's sort of a hack right now, really.

Destroys a repository. The opposite of create.

Does a diff between different versions of each of given files. If no files are specified, all relevant files are shown. The first -r option indicates which changeset the diff should be from, the second which it should be to. If no changesets are specified, it shows the difference between the last known state of the repository and the current client state.

Enables editing a file. When not in edit-mode, this is unnecessary.

Lists the root nodes in the graph of changesets.

Gives the history of the repository or of the files specified. Specifically, it lists all relevant change sets by short name, user, date, and comment in most recent first order.

-n limits the number of changes printed to the given number

-h causes it to print the history starting at the given changeset.

-s skips the first <skip count> changes.

-v causes it to print the changes verbosely which includes additional information about each changeset which affected the files.

Initialize a new client with the current directory as the root. Specify a directory other than current one by using the top level -p switch.

Tells whether or not <changeset1> is an ancestor of <changeset2>. Note that it is possible for neither changeset to be an ancestor of the other.

Returns the last changeset which modified a given file.

Lists all the repositories on the same server as the repository you are in.

Change your password.

Prints the directed acyclic graph which shows the changesets which have been applied to a file and their relationships.

Changesets specified with -h are treated as head nodes for the graph (i.e. later changesets are excluded).

Prints the directed acylcic graph of the the entire history. Starts at the given changeset, if provided.

Recreates all of the metadata from the static history. This should generally only be done when instructed to by software upgrade instructions.

Deletes files from the repository.

Moves or renames files.

Reverts any local changes to the file. At this time only changes to the content of the file can be reverted. The ability to revert adds, deletes, and renames will be coming in the future.

There is a subtle difference in the definition of revert from what you might expect. It does not guarantee that it will restore the file to some previous state. For example, if you are in the middle of a merge and call revert on a file, it will be regenerated by running the merge. If the file were modified prior to running the merge update, the file contents will now be different from anytime in the past.

Revert should be thought of as throwing away uncommitted changes.

-a indicates files should only be reverted if they have not been modified. Basically unmarks them as open for edit.

Sets a Codeville variable to a given value.

Show a list of all Codeville variables and what they are set to.

Shows changes not yet committed to the repository in brief.

-v gives more verbose status which includes mention of files which are in the directory space, but not in the repository and files missing from the directory space.

Removes a Codeville variable so that it no longer has any setting.

Gets all changes made to the repository since the last time you did an update. Files will be merged as necessary. In the event of unresolved conflicts, the user will be asked to resolve them.

-d pull in changesets but do not merge them. Has no effect on the workspace state. This allows a user to browse and diff changesets without having to merge.


Files can be specified using bash-style wildcards on any platform. In addition, '...' behaves like a find command, expanding all files and directories within subdirectories. General notes:

Flags are listed in no particular order.

All printed graphs are output in a format intended to be run through graphviz tools' "dot" tool.




This manual page was written by Michael Janssen <> from the documentation available at, for the Debian GNU/Linux system (but may be used by others).

Dec 1 2005