1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#!/usr/bin/python
"""Shelf - temporarily set aside changes, then bring them back."""
from sys import stderr
import bzrlib.commands
import bzrlib.branch
from bzrlib.errors import BzrCommandError
from bzrlib.option import Option
from shelf import Shelf
class cmd_shelve(bzrlib.commands.Command):
"""Temporarily set aside some changes to the current working tree.
Shelve allows you to temporarily put changes you've made "on the shelf",
ie. out of the way, until a later time when you can bring them back from
the shelf with the 'unshelve' command.
You can put multiple items on the shelf, each time you run unshelve the
most recently shelved changes will be reinstated.
If filenames are specified, only the changes to those files will be
shelved, other files will be left untouched.
If a revision is specified, changes since that revision will be shelved.
If you specifiy "--pick" you'll be prompted for each hunk of the diff as
to whether you want to shelve it or not. Press "?" at the prompt for help.
"""
takes_args = ['file*']
takes_options = [Option('pick'), 'message', 'revision']
def run(self, pick=False, file_list=None, message=None, revision=None):
if file_list is not None and len(file_list) > 0:
branchdir = file_list[0]
else:
branchdir = '.'
if revision is not None and revision:
if len(revision) == 1:
revision = revision[0]
else:
raise BzrCommandError("shelve only accepts a single revision "
"parameter.")
s = Shelf(branchdir)
s.shelve(pick, message, revision, file_list)
return 0
class cmd_unshelve(bzrlib.commands.Command):
"""Reinstate the most recently shelved changes.
See 'shelve' for more information.
"""
takes_options = [Option('pick')]
def run(self, pick=False):
s = Shelf('.')
s.unshelve(pick)
return 0
bzrlib.commands.register_command(cmd_shelve)
bzrlib.commands.register_command(cmd_unshelve)
def test_suite():
from bzrlib.tests.TestUtil import TestLoader
import tests
return TestLoader().loadTestsFromModule(tests)
|