~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to __init__.py

  • Committer: Michael Ellerman
  • Date: 2006-02-06 14:04:14 UTC
  • mto: (0.1.73 shelf-tmp)
  • mto: This revision was merged to the branch mainline in revision 334.
  • Revision ID: michael@ellerman.id.au-20060206140414-11c89c99a0ec59b0
Factor out bzrisms.

Show diffs side-by-side

added added

removed removed

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