hg histedit

hg histedit#

interactively edit changeset history#

hg histedit [OPTIONS] ([ANCESTOR] | --outgoing [URL])

This command is provided by the histedit extension.

This command lets you edit a linear series of changesets (up to and including the working directory, which should be clean). You can:

  • pick to [re]order a changeset

  • drop to omit changeset

  • mess to reword the changeset commit message

  • fold to combine it with the preceding changeset (using the later date)

  • roll like fold, but discarding this commit's description and date

  • edit to edit this changeset (preserving date)

  • base to checkout changeset and apply further changesets from there

There are a number of ways to select the root changeset:

  • Specify ANCESTOR directly

  • Use --outgoing -- it will be the first linear changeset not included in destination. (See `hg help config.paths.default-push`)

  • Otherwise, the value from the "histedit.defaultrev" config option is used as a revset to select the base revision when ANCESTOR is not specified. The first revision returned by the revset is used. By default, this selects the editable history that is unique to the ancestry of the working directory.

If you use --outgoing, this command will abort if there are ambiguous outgoing revisions. For example, if there are multiple branches containing outgoing revisions.

Use "min(outgoing() and ::.)" or similar revset specification instead of --outgoing to specify edit target revision exactly in such ambiguous situation. See `hg help revsets` for detail about selecting revisions.

Examples:

  • A number of changes have been made. Revision 3 is no longer needed.

    Start history editing from revision 3:

    hg histedit -r 3
    

    An editor opens, containing the list of revisions, with specific actions specified:

    pick 5339bf82f0ca 3 Zworgle the foobar
    pick 8ef592ce7cc4 4 Bedazzle the zerlog
    pick 0a9639fcda9d 5 Morgify the cromulancy
    

    Additional information about the possible actions to take appears below the list of revisions.

    To remove revision 3 from the history, its action (at the beginning of the relevant line) is changed to 'drop':

    drop 5339bf82f0ca 3 Zworgle the foobar
    pick 8ef592ce7cc4 4 Bedazzle the zerlog
    pick 0a9639fcda9d 5 Morgify the cromulancy
    
  • A number of changes have been made. Revision 2 and 4 need to be swapped.

    Start history editing from revision 2:

    hg histedit -r 2
    

    An editor opens, containing the list of revisions, with specific actions specified:

    pick 252a1af424ad 2 Blorb a morgwazzle
    pick 5339bf82f0ca 3 Zworgle the foobar
    pick 8ef592ce7cc4 4 Bedazzle the zerlog
    

    To swap revision 2 and 4, its lines are swapped in the editor:

    pick 8ef592ce7cc4 4 Bedazzle the zerlog
    pick 5339bf82f0ca 3 Zworgle the foobar
    pick 252a1af424ad 2 Blorb a morgwazzle
    

Returns 0 on success, 1 if user intervention is required (not only for intentional "edit" command, but also for resolving unexpected conflicts).

Options

Every command accepts the global options.

--commands FILE

read history edits from the specified file

-c

--continue

continue an edit already in progress

--edit-plan

edit remaining actions list

-k

--keep

don't strip old nodes after edit is complete

--abort

abort an edit in progress

-o

--outgoing

changesets not found in destination

-f

--force

force outgoing even for unrelated repositories

-r

--rev REV [+]

first revision to be edited

-T

--template TEMPLATE

display with template

--mq

operate on patch repository

Options marked [+] can be repeated.