/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to push.py

Cope with tuples in refs dictionary.

Show diffs side-by-side

added added

removed removed

Lines of Context:
148
148
        try:
149
149
            sha_id = self.source_store._lookup_revision_sha1(revid)
150
150
        except KeyError:
151
 
            raise errors.NoSuchRevision(self.source, revid)
 
151
            return False
152
152
        try:
153
153
            return (sha_id not in self.target_store)
154
154
        except errors.NoSuchRevision:
158
158
    def missing_revisions(self, stop_revisions):
159
159
        """Find the revisions that are missing from the target repository.
160
160
 
161
 
        :param stop_revisions: Revisions to check for
 
161
        :param stop_revisions: Revisions to check for (tuples with 
 
162
            Git SHA1, bzr revid)
162
163
        :return: sequence of missing revisions, in topological order
163
164
        :raise: NoSuchRevision if the stop_revisions are not present in
164
165
            the source
165
166
        """
 
167
        stop_revids = [revid for (sha1, revid) in stop_revisions]
166
168
        missing = []
167
169
        graph = self.source.get_graph()
168
170
        pb = ui.ui_factory.nested_progress_bar()
169
171
        try:
170
 
            for revid, _ in graph.iter_ancestry(stop_revisions):
 
172
            for revid, _ in graph.iter_ancestry(stop_revids):
171
173
                assert type(revid) is str
172
174
                pb.update("determining revisions to fetch", len(missing))
173
175
                if self._revision_needs_fetching(revid):
186
188
        refs = self.target._git.get_refs()
187
189
        for k, v in refs.iteritems():
188
190
            try:
189
 
                (kind, (revid, treesha)) = self.source_store.lookup_git_sha(v)
 
191
                (kind, type_data) = self.source_store.lookup_git_sha(v)
190
192
            except KeyError:
191
193
                revid = None
 
194
            else:
 
195
                if kind == "commit":
 
196
                    revid = type_data[0]
 
197
                else:
 
198
                    revid = None
192
199
            bzr_refs[k] = (v, revid)
193
200
        return bzr_refs
194
201
 
197
204
        try:
198
205
            old_refs = self._get_target_bzr_refs()
199
206
            new_refs = update_refs(old_refs)
200
 
            # FIXME: Keep track of already looked up revid<->sha mappings
201
 
            fetch_spec = PendingAncestryResult(
202
 
                [revid for sha, revid in new_refs.values()], self.source)
203
 
            self.fetch(fetch_spec=fetch_spec)
 
207
            self.fetch(mapped_refs=new_refs.values())
204
208
        finally:
205
209
            self.source.unlock()
206
210
        return old_refs, new_refs
232
236
        revidmap = {}
233
237
        self.source.lock_read()
234
238
        try:
235
 
            todo = list(self.missing_revisions([revid for sha, revid in stop_revisions]))
 
239
            todo = list(self.missing_revisions(stop_revisions))
236
240
            pb = ui.ui_factory.nested_progress_bar()
237
241
            try:
238
242
                object_generator = self._get_missing_objects_iterator(pb)
249
253
        return revidmap, gitidmap
250
254
 
251
255
    def fetch(self, revision_id=None, pb=None, find_ghosts=False,
252
 
            fetch_spec=None):
253
 
        if revision_id is not None:
254
 
            stop_revisions = [revision_id]
 
256
            fetch_spec=None, mapped_refs=None):
 
257
        if mapped_refs is not None:
 
258
            stop_revisions = mapped_refs
 
259
        elif revision_id is not None:
 
260
            stop_revisions = [(None, revision_id)]
255
261
        elif fetch_spec is not None:
256
 
            stop_revisions = fetch_spec.heads
 
262
            stop_revisions = [(None, revid) for revid in fetch_spec.heads]
257
263
        else:
258
 
            stop_revisions = self.source.all_revision_ids()
 
264
            stop_revisions = [(None, revid) for revid in self.source.all_revision_ids()]
259
265
        self.source.lock_read()
260
266
        try:
261
267
            todo = list(self.missing_revisions(stop_revisions))