git-cvsexportcommit - Linux


git-cvsexportcommit converts a Git commit history into patches that can be imported to a CVS repository. It provides an efficient method to migrate code from a Git-based workflow to a CVS-managed project.


git cvsexportcommit [-f <file>] [-c <conversion-options>] [-C <cvs-username>] <from-rev> <to-rev>


  • -f : Specify an output file to write the generated patches to. Defaults to standard output.
  • -c : Customization options for the conversion process, separated by commas. Available options include:
    • -cn: Include Git commit notes in the patch.
    • -ch: Include Git commit history as a header in the patch.
    • -cg: Include Git commit metadata (e.g., author, committer, date) in the patch.
  • -C : The CVS username to use when generating the patches. If omitted, the current Git user’s name will be used.


Simple conversion:

git cvsexportcommit HEAD~10..HEAD

Conversion with options:

git cvsexportcommit -c -ch -cn -C my_cvs_username HEAD~10..HEAD

Common Issues

  • No output generated: Check the commit.hook variable in your .git/config file. It should be set to git cvsexportcommit.
  • Invalid CVS username: Ensure that the specified CVS username has write access to the target repository.
  • CVS merge conflicts: If multiple Git commits are being converted into a single patch, CVS may encounter merge conflicts. Resolve them manually before importing the patch.


Create a patch file from a specific commit range:

git show HEAD~10..HEAD | git cvsexportcommit -f path_to_patch_file

Related Commands

  • git-cvs-import: Imports CVS repository history into Git.
  • git-cvs-server: Runs a Git CVS server.
  • CVS documentation