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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#!/usr/bin/env python
"""\
This is an attempt to take the internal delta object, and represent
it as a single-file text-only changeset.
This should have commands for both generating a changeset,
and for applying a changeset.
"""
import bzrlib, bzrlib.commands
class cmd_changeset(bzrlib.commands.Command):
"""Generate a bundled up changeset.
This changeset contains all of the meta-information of a
diff, rather than just containing the patch information.
If a file is specified, only changes affecting that file are
specified; this gives a changeset that is probably not useful.
Right now, rollup changesets, or working tree changesets are
not supported. This will only generate a changeset that has been
committed. You can use "--revision" to specify a certain change
to display.
"""
takes_options = ['revision', 'diff-options']
takes_args = ['file*']
aliases = ['cset']
def run(self, revision=None, file_list=None, diff_options=None):
from bzrlib import find_branch
import gen_changeset
import sys
if isinstance(revision, (list, tuple)):
if len(revision) > 1:
raise BzrCommandError('We do not support rollup-changesets yet.')
revision = revision[0]
if file_list:
b = find_branch(file_list[0])
file_list = [b.relpath(f) for f in file_list]
if file_list == ['']:
# just pointing to top-of-tree
file_list = None
else:
b = find_branch('.')
gen_changeset.show_changeset(b, revision,
specific_files=file_list,
external_diff_options=diff_options,
to_file=sys.stdout)
class cmd_verify_changeset(bzrlib.commands.Command):
"""Read a written changeset, and make sure it is valid.
"""
takes_args = ['filename?']
def run(self, filename=None):
import sys, read_changeset
if filename is None or filename == '-':
f = sys.stdin
else:
f = open(filename, 'rb')
cset_info = read_changeset.read_changeset(f)
print cset_info
cset = cset_info.get_changeset()
print cset.entries
class cmd_apply_changeset(bzrlib.commands.Command):
"""Read in the given changeset, and apply it to the
current tree.
"""
takes_args = ['filename?']
takes_options = []
def run(self, filename=None, reverse=False, auto_commit=False):
from bzrlib import find_branch
import sys
import apply_changeset
b = find_branch('.') # Make sure we are in a branch
if filename is None or filename == '-':
f = sys.stdin
else:
f = open(filename, 'rb')
apply_changeset.apply_changeset(b, f, reverse=reverse,
auto_commit=auto_commit)
##if hasattr(bzrlib.commands, 'register_plugin_cmd'):
## print dir(bzrlib.commands)
bzrlib.commands.register_command(cmd_changeset)
bzrlib.commands.register_command(cmd_verify_changeset)
bzrlib.commands.register_command(cmd_apply_changeset)
bzrlib.commands.OPTIONS['reverse'] = None
bzrlib.commands.OPTIONS['auto-commit'] = None
cmd_apply_changeset.takes_options.append('reverse')
cmd_apply_changeset.takes_options.append('auto-commit')
|