Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AERC-PATCH(7)		Miscellaneous Information Manual	   AERC-PATCH(7)

NAME
     aerc-patch - local patch management for aerc(1)

SYNOPSIS
     aerc  provides  support  for  managing  local patch sets. In an email-based
     software development workflow, there are usually many different locally ap-
     plied patch series for testing and reviewing. Managing the local repository
     can thus be challenging. With the local patch management system,  aerc  fa-
     cilitates this bookkeeping process.

     When  applying a patch set, aerc creates a tag for those commits. With this
     tag, the patch set can be tracked and later dropped if needed. Patches  are
     stored  in a project data structure which also keeps track of the directory
     where the repository is. Multiple code bases can be tracked by  defining  a
     separate project for each.

COMMANDS
     The following :patch sub-commands are supported:

     :patch init [-f] [<project>]
	 Creates a new project <project>. If <project> is not defined, aerc will
	 use  the last element of the current directory path. It also performs a
	 search for a supported repository in the current directory.

	 -f: Overwrite an existing project.

     :patch list [-a]
     :patch ls [-a]
	 Lists the current project with the tracked patch sets.

	 -a: Lists all projects.

     :patch apply [-c <cmd>] [-w <commit-ish>] <tag>
	 Applies the selected  message(s)  to  the  repository	of  the  current
	 project.  It uses the :pipe command for this and keeps track of the ap-
	 plied patch.

	 Completions for the <tag> are available based on the subject  lines  of
	 the selected or marked messages.

	 -c <cmd>: Apply patches with the provided <cmd>. Any occurrence of '%r'
	 in  the  command string will be replaced with the root directory of the
	 current project. Note that this approach is not recommended in  general
	 and  should  only be used for very specific purposes, i.e. when a main-
	 tainer is applying a patch set via a separate script to deal  with  git
	 trailers.

	 aerc  will propose completions for the <tag> based on the subject lines
	 of the selected or marked messages.

	 Example:
	     :patch apply -c "git -C %r am -3" fix_v2

	 -w <commit-ish>: Create a linked worktree for the  current  project  at
	 <commit-ish>  and  apply  the	patches  to  the  linked worktree. A new
	 project is created to store the worktree information. When this project
	 is deleted, the worktree will be deleted as well.

	 Example:
	     :patch apply -w origin/master fix_v2

     :patch drop <tag>
	 Drops the patch <tag> from the repository.

     :patch rebase [<commit-ish>]
	 Rebases the patch data on commit <commit-ish>.

	 If the <commit-ish> is omitted, aerc will use the base  commit  of  the
	 current project for the rebase.

     :patch find [-f] <commit-hash>
	 Searches  the messages in the current folder of the current account for
	 the message associated with this commit hash based on the subject line.

	 If a Message-ID is linked to a commit (i.e. when :patch apply was used)
	 then find will first perform a search for the Message-ID.

	 -f: Filter the message list instead of just showing the search results.
	 Only effective when search for Message-ID was not successful.

     :patch cd
	 Changes the working directory to the  root  directory	of  the  current
	 project.

     :patch term [<cmd>]
	 Opens	a  shell (or runs <cmd>) in the working directory of the current
	 project.

     :patch switch <project>
	 Switches the context to <project>.

     :patch unlink [<project>]
	 Deletes all patch tracking data for <project> and  unlinks  it  from  a
	 repository. If no project is provided, the current project is deleted.

     :patch
	 Root command for path management. Use it to run the sub-commands.

GETTING STARTED
     Make sure you have an initialized project (see :patch init).

     Now,  there  are  two  ways to get patches under the local patch management
     system:

     *	 Apply patches with the :patch apply command.  This  will  automatically
	 create a new tag for the applied commits.

     *	 Use :patch rebase. If there are some existing local patches in the com-
	 mit  history  that should be managed by aerc, you can run :patch rebase
	 <commit-ish> and set the <commit-ish> to the commit  before  the  first
	 patch	that  you want to include. For a git repository which has an up-
	 stream called origin, you would run :patch rebase origin/master.

EXAMPLE
     The following example demonstrates how to manage the local patch sets.

     First, a project needs to be initialized. This is done by changing into the
     working directory where the project's repository is located. For this exam-
     ple,  let's  assume  we  have  a  project	called	bar  in  the   directory
     /home/user/foo/bar.

	 :cd /home/user/foo/bar

     and then creating a new project with

	 :patch init

     If  no  name  is provided to :patch init, aerc will use the last element of
     the working directory path (here: bar).

     Now the patch tracking is ready for action. Go to the message list, mark  a
     patch series and apply it:

	 :patch apply fix_v2

     This  will apply the selected patch set and assigns the fix_v2 tag to those
     commits. The tag helps to keep the commits grouped together,  and	will  be
     helpful when we want to drop this exact patch set at a later point.

     With :patch list you can verify that the patch set was correctly applied.

     If  there is a change in the underlying repository (e.g. by rebasing to up-
     stream), the hashes of the applied local commits can  change.  :patch  list
     can detect such a change and will then propose to rebase the internal data.
     To do this, run

	 :patch rebase

     This  will  open an editor where you can adjust the correct tags again. You
     could also change the rebase point by providing an optional argument  (e.g.
     a commit hash, or even HEAD~3 or origin/master, etc.).

     To drop a patch set, use the tag that was assigned during applying:

	 :patch drop fix_v2

     And to delete the project data in aerc:

	 :patch unlink bar

SUPPORTED REVISION CONTROL SYSTEMS
     The supported revision control systems are currently: git.

SEE ALSO
     aerc(1)

AUTHORS
     Originally created by Drew DeVault and maintained by Robin Jarry who is as-
     sisted  by  other open source contributors. For more information about aerc
     development, see https://sr.ht/~rjarry/aerc/.

				   2026-08-04			   AERC-PATCH(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=aerc-patch&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help