git-cvsexportcommit(1)
======================

NAME
----
git-cvsexportcommit - Export a single commit to a CVS checkout


SYNOPSIS
--------
[verse]
'git cvsexportcommit' [-h] [-u] [-v] [-c] [-P] [-p] [-a] [-d cvsroot]
	[-w cvsworkdir] [-W] [-f] [-m msgprefix] [PARENTCOMMIT] COMMITID


DESCRIPTION
-----------
Exports a commit from Git to a CVS checkout, making it easier
to merge patches from a Git repository into a CVS repository.

Specify the name of a CVS checkout using the -w switch or execute it
from the root of the CVS working copy. In the latter case GIT_DIR must
be defined. See examples below.

It does its best to do the safe thing, it will check that the files are
unchanged and up to date in the CVS checkout, and it will not autocommit
by default.

Supports file additions, removals, and commits that affect binary files.

If the commit is a merge commit, you must tell 'git cvsexportcommit' what
parent the changeset should be done against.

OPTIONS
-------

-c::
	Commit automatically if the patch applied cleanly. It will not
	commit if any hunks fail to apply or there were other problems.

-p::
	Be pedantic (paranoid) when applying patches. Invokes patch with
	--fuzz=0

-a::
	Add authorship information. Adds Author line, and Committer (if
	different from Author) to the message.

-d::
	Set an alternative CVSROOT to use.  This corresponds to the CVS
	-d parameter.  Usually users will not want to set this, except
	if using CVS in an asymmetric fashion.

-f::
	Force the merge even if the files are not up to date.

-P::
	Force the parent commit, even if it is not a direct parent.

-m::
	Prepend the commit message with the provided prefix.
	Useful for patch series and the like.

-u::
	Update affected files from CVS repository before attempting export.

-k::
	Reverse CVS keyword expansion (e.g. $Revision: 1.2.3.4$
	becomes $Revision$) in working CVS checkout before applying patch.

-w::
	Specify the location of the CVS checkout to use for the export. This
	option does not require GIT_DIR to be set before execution if the
	current directory is within a Git repository.  The default is the
	value of 'cvsexportcommit.cvsdir'.

-W::
	Tell cvsexportcommit that the current working directory is not only
	a Git checkout, but also the CVS checkout.  Therefore, Git will
	reset the working directory to the parent commit before proceeding.

-v::
	Verbose.

CONFIGURATION
-------------
cvsexportcommit.cvsdir::
	The default location of the CVS checkout to use for the export.

EXAMPLES
--------

Merge one patch into CVS::
+
------------
$ export GIT_DIR=~/project/.git
$ cd ~/project_cvs_checkout
$ git cvsexportcommit -v <commit-sha1>
$ cvs commit -F .msg <files>
------------

Merge one patch into CVS (-c and -w options). The working directory is within the Git Repo::
+
------------
	$ git cvsexportcommit -v -c -w ~/project_cvs_checkout <commit-sha1>
------------

Merge pending patches into CVS automatically -- only if you really know what you are doing::
+
------------
$ export GIT_DIR=~/project/.git
$ cd ~/project_cvs_checkout
$ git cherry cvshead myhead | sed -n 's/^+ //p' | xargs -l1 git cvsexportcommit -c -p -v
------------

GIT
---
Part of the linkgit:git[1] suite
