Differences between revisions 19 and 45 (spanning 26 versions)
Revision 19 as of 2011-01-04 17:17:09
Size: 3287
Editor: MichaelMartz
Comment:
Revision 45 as of 2020-07-05 06:29:48
Size: 1322
Editor: DanKurtz
Comment: Document that shelve is part of core and no longer needs to be enabled explicitly.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
== Shelve Extension == #pragma section-numbers 2
= Shelve Extension =
Line 3: Line 4:
'''This extension is not distributed with Mercurial.''' '''This extension is distributed with Mercurial 2.8 and later. If you are using an earlier version of Mercurial, see ThirdPartyShelveExtension.'''
Line 5: Line 6:
''Author: TK Soh <teekaysoh@gmail.com>'' ''Author: Bryan O'Sullivan''
Line 7: Line 8:
Repository: [[http://bitbucket.org/tksoh/hgshelve/]] ''Current maintainer: Facebook''
Line 9: Line 10:
=== Overview === <<TableOfContents>>
Line 11: Line 12:
The shelve extension provides the `shelve` command to lets you choose which parts of the changes in a working directory you'd like to set aside temporarily, at the granularity of patch hunks. You can later restore the shelved patch hunks using the `unshelve` command. == Overview ==
Line 13: Line 14:
The shelve extension has been adapted from Mercurial's RecordExtension. The shelve extension lets you set your pending changes aside temporarily and restore them at a later time. It is useful in situations where you need to switch tasks, but are not ready to commit your current work.
Line 15: Line 16:
=== Compatibility with Mercurial === == Configuration ==
'''As of Mercurial 5.1, shelve is part of Mercurial core and is enabled by default.'''
Line 17: Line 19:
|| '''Mercurial''' || '''Shelve Extension''' ||
|| 1.6 and later || [[http://bitbucket.org/tksoh/hgshelve/changeset/41e13e800fb6/|41e13e800fb6]] or later||
|| 1.5.x and later || [[http://bitbucket.org/tksoh/hgshelve/changeset/d95c583611f8/|d95c583611f8]] or later||
|| 1.4.x and later || [[http://bitbucket.org/tksoh/hgshelve/changeset/276d8083dc3b/|276d8083dc3b]] or later||
|| 1.3.x || [[http://bitbucket.org/tksoh/hgshelve/changeset/18815655993b/|18815655993b]] or later||
|| 1.1.x - 1.2.x || [[http://bitbucket.org/tksoh/hgshelve/changeset/7090a3ed2da7/|7090a3ed2da7]] ||
|| < 1.1.x || [[http://bitbucket.org/tksoh/hgshelve/changeset/ef85a6331d31/|ef85a6331d31]] ||

=== Configuration ===

Configure your .hgrc to enable the extension by adding following lines:
If you are using an earlier version of Mercurial, configure your ''`.hgrc`'' to enable the extension by adding following lines:
Line 31: Line 23:
hgshelve=/path/to/hgshelve.py shelve=
Line 34: Line 26:
or place hgshelve.py in your 'hgext' directory and add the following lines: == Usage ==
Line 36: Line 28:
{{{
[extensions]
hgext.hgshelve=
}}}

If you use the win32text extension, make sure you have the following lines in your .hgrc or mercurial.ini. This enables automatic line-ending translation when applying patches.

{{{
[patch]
eol = auto
}}}

=== Usage ===

(this is only a description of the basic usage)
Temporarily stash away changes:
Line 56: Line 33:
Temporarily stash away changes. You can select the exact hunks of changes you want to shelve.
List all existing shelves:
Line 59: Line 35:
hg shelve --all hg shelve --list
Line 62: Line 38:
Temporarily stash away changes. All hunks will automatically be selected.
Get the changes back into the working directory:
Line 68: Line 43:
Get the changes back into the workdir.

=== Shelves ===

Different changesets can be saves to different shelves, by using the '''--name''' parameter. Without this parameter, the shelf name "default" is used.
You can have any number of shelves at one time.
Shelves can be given custom names (the default name is your active bookmark or branch):
Line 76: Line 45:
hg shelve --name myshelf hg shelve --name <name>
hg un
shelve <name>
Line 79: Line 49:
Temporarily stash away changes to the shelf '''myshelf'''. Any changes already shelved to a different shelf will not be included. See `hg shelve --help` for advance usage.
Line 81: Line 51:
{{{
hg shelve --name myshelf --append
}}}

Add any changes to the existing shelf '''myshelf'''.


{{{
hg unshelve --name myshelf
}}}

Get the changes stashed away changes to the shelf '''myshelf''' back into the workdir, and remove the shelf. Any changes shelved to a different shelf will not be included.

{{{
hg shelve --list
}}}

List all current shelves.

=== Hunk selection ===

{{{
y - shelve this change
n - skip this change

s - skip remaining changes to this file
f - shelve remaining changes to this file

d - done, skip remaining changes and files
a - shelve all changes to all remaining files
q - quit, shelveing no changes

? - display help
}}}

=== See also ===

AtticExtension
== See also ==
 * ThirdPartyShelveExtension
 * AtticExtension
 * [[/Talk|Talk]] page
Line 121: Line 57:
CategoryExtensionsByOthers CategoryBundledExtension

Shelve Extension

This extension is distributed with Mercurial 2.8 and later. If you are using an earlier version of Mercurial, see ThirdPartyShelveExtension.

Author: Bryan O'Sullivan

Current maintainer: Facebook

1. Overview

The shelve extension lets you set your pending changes aside temporarily and restore them at a later time. It is useful in situations where you need to switch tasks, but are not ready to commit your current work.

2. Configuration

As of Mercurial 5.1, shelve is part of Mercurial core and is enabled by default.

If you are using an earlier version of Mercurial, configure your .hgrc to enable the extension by adding following lines:

[extensions]
shelve=

3. Usage

Temporarily stash away changes:

hg shelve

List all existing shelves:

hg shelve --list

Get the changes back into the working directory:

hg unshelve

Shelves can be given custom names (the default name is your active bookmark or branch):

hg shelve --name <name>
hg unshelve <name>

See hg shelve --help for advance usage.

4. See also


CategoryBundledExtension

ShelveExtension (last edited 2020-07-05 06:29:48 by DanKurtz)