# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
'''patch management and development
-This extension lets you work with a set of disjoint patches in a
-Mercurial repository. With it you can task switch between many patches
-in a single repository and easily share patch sets between
+This extension lets you create patches from uncommited changes using the its
+'shelve' command. Shelved changes are unapplied from the working copy and
+stored as patches in the .hg/attic directory.
-Known patches are represented as patch files in the .hg/attic
-directory. Applied patches are changes in the working copy
+They can be later restored using the 'unshelve' command, which merges the
+changes back into the working copy.
+This allows task switching between many patches in a single repository, which
+can be disjointly applied or unapplied.
+As applied patches are just changes in the working copy they're not part of
+the project history but can, of course, be commited if desired.
+Having all known patches in the .hg/attic directory allows to easily share
+patch sets between repositories and even control version them.
Common tasks (use 'hg help command' for more details):
store the current working copy changes in a patch in the attic and
- prepare to work on something else
+ prepare to work on something else
attic-display (attic, ls):
list the patches in the attic
- activate a patch to work on
+ activate a patch to work on and merge its changes into the working copy
from mercurial.i18n import _
from mercurial.node import bin, hex, short