# Install wiggle with Homebrew, apk, apt, MacPorts, Nix, zypper

Program for applying patches with conflicting changes. Version 1.3 via Homebrew; verified from local package data.

## Install

```sh
sudo av install brew:wiggle
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install wiggle
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install wiggle
```

  Evidence: MacPorts ports tree: devel/wiggle/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- apk (92%):

```sh
sudo apk add wiggle
```

  Evidence: Alpine Linux edge package indexes: wiggle from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz

- Debian apt (92%):

```sh
sudo apt install wiggle
```

  Evidence: Debian stable package indexes: wiggle from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

- Nix (92%):

```sh
nix profile install nixpkgs#wiggle
```

  Evidence: nixpkgs package indexes: pkgs/by-name/wi/wiggle/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

- zypper (92%):

```sh
sudo zypper install wiggle
```

  Evidence: openSUSE Tumbleweed package metadata: wiggle from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst

## Package facts

- **Package key:** brew:wiggle
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/wiggle>
- **Version:** 1.3
- **Source summary:** Program for applying patches with conflicting changes
- **Homepage:** <https://github.com/neilbrown/wiggle>
- **Repository:** <https://github.com/neilbrown/wiggle>
- **Upstream docs:** <https://github.com/neilbrown/wiggle#readme>
- **License:** GPL-2.0-or-later
- **Source archive:** <https://github.com/neilbrown/wiggle/archive/refs/tags/v1.3.tar.gz>
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- wiggle (cli)
- wiggle (alias)

## Uses from macOS

- ncurses

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_big_sur, arm64_linux, arm64_monterey, arm64_sequoia, arm64_sonoma, arm64_tahoe, arm64_ventura, big_sur, catalina, monterey, sonoma, ventura

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 1.3
- Local data: ok
- Upstream repository: https://github.com/neilbrown/wiggle
- Upstream latest detected: v1.3 (current)
- info: No package-manager update timestamp was available.
## Project history and usage

wiggle is Neil Brown's GPL command-line tool for applying patches when ordinary `patch` cannot match the target file cleanly, and for showing word-wise diffs. Its niche is the messy middle ground between a rejected patch and a full three-way merge: it tries to align the old text in a patch with the current file, apply every change somewhere, and mark unresolved conflicts for review.

### Project history

Neil Brown announced the first public release of wiggle on the Linux kernel mailing list on May 19, 2003. The announcement described the core use case as applying patches that `patch` cannot apply because the original file has conflicting changes, especially when back-porting patches from development kernels onto stable kernels.

The name came from Andrew Morton's phrasing about wanting a tool to 'wiggle' a patch into a file. The first public announcement already included a tests directory, a patch-management helper script named `p`, and a note that a future visualization UI would be useful.

The manual page preserves the tool's long maintenance arc, with copyright lines spanning 2003, 2010-2013, and 2018-2020. GitHub releases list v1.0 through v1.3, with v1.3 published in October 2020.

### Adoption history

wiggle's adoption has been specialized rather than mass-market. It is useful to kernel and distribution developers, downstream maintainers, and anyone carrying patch queues across drifting source trees. The GitHub repository showed about 108 stars and 9 forks in July 2026, but its more important adoption signal is its presence in Unix packaging ecosystems and its long-lived man page as a developer tool.

### How it is used

A common workflow is to run `patch`, collect `.rej` files, then run `wiggle --replace originalfile originalfile.rej` for each rejected hunk. The user must still inspect the result, because wiggle can annotate unresolved conflicts and cannot prove semantic correctness. It also has merge, diff, extract, and browse modes; browse mode gives an ncurses-based inspection path for patches and conflicts.

### Why package nerds care

wiggle matters because it encodes a very Unixy idea: keep the format and workflow of patches, but make the recovery path smarter at word granularity. For package maintainers carrying downstream patches, that can be the difference between manually rewriting a patch and letting a small tool salvage most of it while clearly marking the rest.

### Timeline

- 2003-05-19: Neil Brown announced the first public release on LKML.
- 2010-2013: Maintained under Neil Brown's SUSE-era copyright line in the manual.
- 2018-2020: Later maintenance period reflected in the manual page copyright line.
- 2020-10-06: GitHub release records include v1.0 through v1.3, with v1.3 the latest listed release.

### Related projects

- wiggle is related to `patch`, `merge`, line-oriented diff tools, and patch-stack workflows used by kernel and distribution maintainers. Its distinctive feature is word-wise alignment and conflict reporting rather than simply rejecting hunks.

### Sources

- <https://github.com/neilbrown/wiggle - upstream repository overview>
- <https://github.com/neilbrown/wiggle/blob/master/wiggle.1 - upstream manual page>
- <https://github.com/neilbrown/wiggle/releases - upstream release list>
- <https://lkml.iu.edu/hypermail/linux/kernel/0305.2/0762.html - first public release announcement>


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** wiggle
- **Version Scheme:** 0
- **Revision:** 0
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** stable

## Other Package-Manager Records

- Debian apt - wiggle - 1.3-1: normalized package name match | Debian stable package indexes: wiggle from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | apply patches with conflicting changes | https://neil.brown.name/wiggle
- Nix - wiggle: normalized package name match | nixpkgs package indexes: pkgs/by-name/wi/wiggle/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- Ubuntu apt - wiggle - 1.3-1: normalized package name match | Ubuntu 24.04 LTS package indexes: wiggle from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | apply patches with conflicting changes | https://neil.brown.name/wiggle
- apk - wiggle - 1.3-r0: normalized package name match | Alpine Linux edge package indexes: wiggle from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Tool for applying patches with conflicts | https://github.com/neilbrown/wiggle
- apk - wiggle-doc - 1.3-r0: normalized package name match | Alpine Linux edge package indexes: wiggle-doc from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Tool for applying patches with conflicts (documentation) | https://github.com/neilbrown/wiggle
- zypper - wiggle - 1.3-1.21: normalized package name match | openSUSE Tumbleweed package metadata: wiggle from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | A Tool for Applying Patches with Conflicts | https://neil.brown.name/wiggle/
- MacPorts - wiggle: normalized package name match | MacPorts ports tree: devel/wiggle/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Related links

- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [Developer build packages](https://www.automicvault.com/pkg/developer-build-tools/) - Matched build, compiler, generator, or developer workflow metadata.
- [git-series](https://www.automicvault.com/pkg/brew/git-series/) - Shares av.db curated category or tags: cli, developer-tools, patch-management, version-control.
- [braid](https://www.automicvault.com/pkg/brew/braid/) - Shares av.db curated category or tags: cli, developer-tools, version-control.
- [breezy](https://www.automicvault.com/pkg/brew/breezy/) - Shares av.db curated category or tags: cli, developer-tools, version-control.
- [codeberg-cli](https://www.automicvault.com/pkg/brew/codeberg-cli/) - Shares av.db curated category or tags: cli, developer-tools, version-control.
- [cvs](https://www.automicvault.com/pkg/brew/cvs/) - Shares av.db curated category or tags: cli, developer-tools, version-control.
- [cvs-fast-export](https://www.automicvault.com/pkg/brew/cvs-fast-export/) - Shares av.db curated category or tags: cli, developer-tools, version-control.
- [cvsutils](https://www.automicvault.com/pkg/brew/cvsutils/) - Shares av.db curated category or tags: cli, developer-tools, version-control.
- [cvsync](https://www.automicvault.com/pkg/brew/cvsync/) - Shares av.db curated category or tags: cli, developer-tools, version-control.
- [db-vcs](https://www.automicvault.com/pkg/brew/db-vcs/) - Local package facts share a topical domain. Shared terms: cli, control, developer, developer-tools, management.
- [diff-so-fancy](https://www.automicvault.com/pkg/brew/diff-so-fancy/) - Local package facts share a topical domain. Shared terms: cli, control, developer, developer-tools, diff.

## Combined YAML source

View the package source record on GitHub. [combined/wiggle.yml](https://github.com/automic-vault/db/blob/main/combined/wiggle.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
