comparison wrappers.py @ 283:521d9c1bb11d

Implement -u/--update support when pulling. Status messages now more closely follow standard hg pull. Added generic pull tests as well as specific tests for this change.
author Martijn Pieters <mj@zopatista.com>
date Mon, 27 Apr 2009 09:39:39 -0500
parents 60acc38eac96
children f8f9a2993705
comparison
equal deleted inserted replaced
282:77892f67b1cd 283:521d9c1bb11d
6 from mercurial import commands 6 from mercurial import commands
7 from mercurial import patch 7 from mercurial import patch
8 from mercurial import hg 8 from mercurial import hg
9 from mercurial import util as hgutil 9 from mercurial import util as hgutil
10 from mercurial import node 10 from mercurial import node
11 from mercurial import i18n
11 12
12 from svn import core 13 from svn import core
13 from svn import delta 14 from svn import delta
14 15
15 import cmdutil 16 import cmdutil
286 287
287 if initializing_repo and start > 0: 288 if initializing_repo and start > 0:
288 raise hgutil.Abort('Revision skipping at repository initialization ' 289 raise hgutil.Abort('Revision skipping at repository initialization '
289 'remains unimplemented.') 290 'remains unimplemented.')
290 291
292 revisions = 0
293 if not initializing_repo:
294 oldheads = len(repo.changelog.heads())
295
291 # start converting revisions 296 # start converting revisions
292 for r in svn.revisions(start=start): 297 for r in svn.revisions(start=start):
293 valid = True 298 valid = True
294 hg_editor.update_branch_tag_map_for_rev(r) 299 hg_editor.update_branch_tag_map_for_rev(r)
295 for p in r.paths: 300 for p in r.paths:
320 and tries < 3): 325 and tries < 3):
321 tries += 1 326 tries += 1
322 ui.status('Got a 502, retrying (%s)\n' % tries) 327 ui.status('Got a 502, retrying (%s)\n' % tries)
323 else: 328 else:
324 raise hgutil.Abort(*e.args) 329 raise hgutil.Abort(*e.args)
330 revisions += 1
325 util.swap_out_encoding(old_encoding) 331 util.swap_out_encoding(old_encoding)
332
333 if revisions == 0:
334 ui.status(i18n._("no changes found\n"))
335 return
336 else:
337 ui.status("added %d svn revisions\n" % revisions)
338 if not initializing_repo:
339 newheads = len(repo.changelog.heads())
340 # postincoming needs to know if heads were added or removed
341 # calculation based on mercurial.localrepo.addchangegroup
342 # 0 means no changes, 1 no new heads, > 1 new heads, < 0 heads removed
343 modheads = newheads - oldheads + (newheads < oldheads and -1 or 1)
344 commands.postincoming(ui, repo, modheads, opts.get('update'), None)
326 345
327 346
328 def rebase(orig, ui, repo, **opts): 347 def rebase(orig, ui, repo, **opts):
329 """rebase current unpushed revisions onto the Subversion head 348 """rebase current unpushed revisions onto the Subversion head
330 349