1
# Copyright (C) 2008 Canonical Ltd
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
# GNU General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
"""Import processor that queries the input (and doesn't import)."""
20
from bzrlib.plugins.fastimport import (
26
class QueryProcessor(processor.ImportProcessor):
27
"""An import processor that queries the input.
29
No changes to the current repository are made.
32
known_params = commands.COMMAND_NAMES + commands.FILE_COMMAND_NAMES + \
35
def __init__(self, target=None, params=None, verbose=False):
36
# Allow creation without a target
37
processor.ImportProcessor.__init__(self, target, params, verbose)
38
self.parsed_params = {}
39
self.interesting_commit = None
40
self._finished = False
42
if 'commit-mark' in params:
43
self.interesting_commit = params['commit-mark']
44
del params['commit-mark']
45
for name, value in params.iteritems():
50
fields = value.split(',')
51
self.parsed_params[name] = fields
53
def pre_handler(self, cmd):
54
"""Hook for logic before each handler starts."""
57
if self.interesting_commit and cmd.name == 'commit':
58
if cmd.mark == self.interesting_commit:
62
if self.parsed_params.has_key(cmd.name):
63
fields = self.parsed_params[cmd.name]
64
str = cmd.dump_str(fields, self.parsed_params, self.verbose)
67
def progress_handler(self, cmd):
68
"""Process a ProgressCommand."""
71
def blob_handler(self, cmd):
72
"""Process a BlobCommand."""
75
def checkpoint_handler(self, cmd):
76
"""Process a CheckpointCommand."""
79
def commit_handler(self, cmd):
80
"""Process a CommitCommand."""
81
for fc in cmd.file_iter():
84
def reset_handler(self, cmd):
85
"""Process a ResetCommand."""
88
def tag_handler(self, cmd):
89
"""Process a TagCommand."""
92
def feature_handler(self, cmd):
93
"""Process a FeatureCommand."""
94
feature = cmd.feature_name
95
if feature not in commands.FEATURE_NAMES:
96
self.warning("feature %s is not supported - parsing may fail"