DARCS(1)

NAME
darcs - an advanced revision control system

SYNOPSIS
darcs COMMAND ...

DESCRIPTION
darcs is a nifty revision control tool. For more a detailed description, see the html documentation, which should be available at /usr/local/share/doc/darcs/manual/index.html. To easily get more specific help on each command, you can call `darcs COMMAND --help'

CREATING REPOSITORIES

get Get is used to get a local copy of a repository.

initialize
    Generally you will only call initialize once for each project you work on, and calling it is just about the first thing you do. Just make sure you are in the main directory of the project, and initialize will set up all the directories and files darcs needs in order to start keeping track of revisions for your project.

MODIFYING REPOSITORY CONTENTS

add Add needs to be called whenever you add a new file or directory to your project. Of course, it also needs to be called when you first create the project, to let darcs know which files should be kept track of.

remove
    Remove should be called when you want to remove a file from your project, but don't actually want to delete the file. Otherwise just delete the file or directory, and darcs will notice that it has been removed. Be aware that the file WILL be deleted from any other copy of the repo to which you later apply the patch.

mv  Darcs mv needs to be called whenever you want to move files or directories. Unlike remove, mv actually performs the move itself in your working copy.

replace
    Replace allows you to change a specified token wherever it occurs in the specified files. The replace is encoded in a special patch and will merge as expected with other patches. Tokens here are defined by a regexp specifying the characters which are allowed. By default a token corresponds to a C identifier.

WORKING WITH CHANGES

record
    Record is used to name a set of changes and record the patch to the repository.

pull
    Pull is used to bring changes made in another repo into the current repo (that is, either the one in the current directory, or the one specified with the --repodir option). Pull allows you to bring over all or some of the patches that are in that repo but not in this one. Pull accepts an argument, which is the URL from which to pull, and when called without an argument, pull will use the repository from which you have most recently either pushed or pulled.

push
    Push is the opposite of pull. Push allows you to copy changes from the current repository into another repository.

send
    Send is used to prepare a bundle of patches that can be applied to a target repository. Send accepts the URL of the repository as an argument. When called without an argument, send will use the most recent repository that was either pushed to, pulled from or sent to. By default, the patch bundle is sent by email, although you may save it to a file.

apply
    Apply is used to apply a bundle of patches to this repository. Such a bundle may be created using send.

SEEING WHAT YOU'VE DONE

whatsnew
    whatsnew gives you a view of what changes you've made in your working copy that haven't yet been recorded. The changes are displayed in darcs patch format. Note that --look-for-adds implies --summary usage.

query manifest
    The manifest command lists the version-controlled files in the working copy.

OTHER COMMANDS

revert
    Revert is used to undo changes made to the working copy which have not yet been recorded. You will be prompted for which changes you wish to undo. The last revert can be undone safely using the unrevert command if the working copy was not modified in the meantime.

unrevert
    Unrevert is used to undo the results of a revert command. It is only guaranteed to work properly if you haven't made any changes since the revert was performed.

unrecord
    Unrecord does the opposite of record in that it makes the changes from patches active changes again which you may record or revert later. The working copy itself will not change.

amend-record
    Amend-record is used to replace a patch with a newer version with additional changes.

resolve
    Resolve is used to mark and resolve any conflicts that may exist in a repository. Note that this trashes any unrecorded changes in the working copy.

tag Tag is used to name a version of this repository (i.e. the whole tree).

setpref
    Setpref allows you to set a preference value in a way that will propagate to other repositories. Valid preferences are: test predist boringfile binariesfile.

rollback
    Rollback is used to undo the effects of a single patch without actually deleting that patch. Instead, it applies the inverse patch as a new patch. Unlike unpull and unrecord (which accomplish a similar goal) rollback is perfectly safe, since it leaves in the repository a record of the patch it is removing.

diff
    Diff can be used to create a diff between two versions which are in your repository. Specifying just --from-patch will get you a diff against your working copy. If you give diff no version arguments, it gives you the same information as whatsnew except that the patch is formatted as the output of a diff command

changes
    Changes gives a changelog style summary of the repo history, including options for altering how the patches are selected and displayed.

annotate
    Annotate displays which patches created or last modified a directory file or line. It can also display the contents of a particular patch in darcs format.

dist
    Dist is a handy tool for implementing a "make dist" target in your makefile. It creates a tarball of the recorded edition of your tree.

trackdown
    Trackdown tries to find the most recent version in the repository which passes a test. Given no arguments, it uses the default repository test. Given one argument, it treats it as a test command. Given two arguments, the first is an initialization command with is run only once, and the second is the test command.

unpull
    Unpull completely removes recorded patches from your local repository. The changes will be undone in your working copy and the patches will not be shown in your changes list anymore. Beware that if the patches are not still present in another repo you will lose precious code by unpulling!

obliterate
    Obliterate completely removes recorded patches from your local repository. The changes will be undone in your working copy and the patches will not be shown in your changes list anymore. Beware that you can lose precious code by obliterateing!

put Put is the opposite of get. Put copies the content of the current repository and puts it in a newly created repository.

optimize
    Optimize can help to improve the performance of your repository in a number of cases.

check
    Check verifies that the patches stored in the repository, when successively applied to an empty tree, properly recreate the stored pristine tree.

repair
    Repair attempts to fix corruption that may have entered your repository.

BUGS
Report bugs by mail to bugs@darcs.net or via the web site at http://bugs.darcs.net/.

AUTHOR
David Roundy <droundy@abridgegame.org>.