GIT-CVSEXPORTCOMMIT(1)

✨ GIT-CVSEXPORTCOMMIT(1) ✨

okay bestie, so this one is from the git manual and it's called git-cvsexportcommit πŸ’–


🌸 NAME 🌸

git-cvsexportcommit β€” export a single commit to a CVS checkout 🫢


πŸŽ€ SYNOPSIS πŸŽ€

git cvsexportcommit [-h] [-u] [-v] [-c] [-P] [-p] [-a] [-d <cvsroot>]
        [-w <cvs-workdir>] [-W] [-f] [-m <msgprefix>] [<parent-commit>] <commit-id>

πŸ’… DESCRIPTION πŸ’…

So the whole vibe here is: you take a commit from Git and you yeet it over to a CVS checkout, because that makes it way easier to merge patches from a Git repository into a CVS repository. it's giving bridge between two worlds 🌈

You tell it which CVS checkout to use with the -w switch, OR you just run it from the root of the CVS working copy. If you do that second thing, GIT_DIR must be defined. there's examples down below, don't worry πŸ’–

It does its best to do the safe thing πŸ₯Ί it checks that the files are unchanged and up to date in the CVS checkout, and it will not autocommit by default. we love a cautious icon.

It supports file additions, removals, and commits that affect binary files. slay πŸ’…

If the commit is a merge commit, you must tell git cvsexportcommit what parent the changeset should be done against. no cap, it literally can't guess that one πŸ™ˆ


✨ 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. it's giving perfectionist energy πŸ’…
  • -a β€” Add authorship information. Adds Author line, and Committer (if different from Author) to the message. credit where credit is due bestie πŸ‘‘
  • -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. dramatic. use with intention 😭
  • -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. tell me everything, I want the tea πŸ“

πŸ’œ 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
that last one is main character energy and also genuinely a little scary. "only if you really know what you are doing" is not a joke bestie, it said what it said πŸ’€

⭐ GIT ⭐

Part of the git(1) suite πŸ’–


and that's the whole page, bestie!! πŸŽ€ this was Git 2.56.0, dated 09/28/2026, and honestly? iconic. go merge your patches, you got this πŸ«Άβœ¨πŸ’…

πŸ“¦ where this page comes from