---
name: "git-debcherry"
section: "1"
platform: "linux"
package: "gitpkg"
version: "0.31+nmu1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/git-debcherry"
---

# git-debcherry(1)

export commits touching upstream source as patches

## NAME

git-debcherry - export commits touching upstream source as patches

## SYNOPSIS

**git-debcherry** \[*options*\] *upstream* \[*integration*\]

## DESCRIPTION

This program will analyze git history and try to create a set of patches meeting the following conditions:

1\. Is guaranteed to apply to *upstream*

2\. Produces the same work tree as *integration*, outside *./debian*

3\. Does not touch *./debian*

4\. As much as possible, matches the git history from *upstream* to *integration*

## BRANCH PARAMETERS

- *upstream*

  This ref should be suitable for export as a *.orig.tar.gz.* In particular note that quilt has no way of deleting files that does not include the material to be deleted in the patch, so your *upstream* branch should include any necessary file deletions.

- *integration*

  This branch contains all debian packaging, plus any changes introduced to upstream source by the debian packager. This argument is optional. If *integration* is not passed **git-debcherry** will use *HEAD*.

## OPTIONS

The following options are available:

- **-o, --output-directory** *directory*

  Place output (patches and series file) in *directory*. If unspecified, output patches (in mbox format) to stdout.

- **-s, --stat**

  Only output diffstat of patches

- **-d, --debug**

  Output some debugging information. Probably only useful to developers or those reporting bugs.

## EXAMPLE

To export the patches between tag *v3.0+dfsg1* and the current branch into *./debian/patches*:

```
 $ git-debcherry -o debian/patches v3.0+dfsg1
```

## NOTES

### PERFORMANCE

**git-debcherry** currently uses [**git-filter-branch**(1)](/git-filter-branch/1.md) to rewrite all commits on the integration branch not present upstream. Depending on the number of such commits, this can be noticeably slow.

### DELETED FILES

**git-debcherry** currently follows [**dpkg-source**(1)](/dpkg-source/1.md) in ignoring file deletions. This has the positive side effect of not bloating the patches, but if you really need the files deleted for the build and/or licensing reasons, you should delete them in *upstream*.

## SEE ALSO

[**gitpkg**(1)](/gitpkg/1.md)

## AUTHOR

**git-debcherry** was written by David Bremner \<bremner@debian.org\>.
