Mercurial > hg
comparison mercurial/cmdutil.py @ 5610:2493a478f395
copy: handle rename internally
- add rename parameter
- don't collect copied list
- report "moving" rather than "copying"
- remove renamed files
- don't return copied list
- simplify callers
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 07 Dec 2007 02:29:55 -0600 |
parents | a783d3627144 |
children | be367cbafe70 |
comparison
equal
deleted
inserted
replaced
5609:a783d3627144 | 5610:2493a478f395 |
---|---|
284 '(%d%% similar)\n') % | 284 '(%d%% similar)\n') % |
285 (oldrel, newrel, score * 100)) | 285 (oldrel, newrel, score * 100)) |
286 if not dry_run: | 286 if not dry_run: |
287 repo.copy(old, new) | 287 repo.copy(old, new) |
288 | 288 |
289 def copy(ui, repo, pats, opts): | 289 def copy(ui, repo, pats, opts, rename=False): |
290 # called with the repo lock held | 290 # called with the repo lock held |
291 # | 291 # |
292 # hgsep => pathname that uses "/" to separate directories | 292 # hgsep => pathname that uses "/" to separate directories |
293 # ossep => pathname that uses os.sep to separate directories | 293 # ossep => pathname that uses os.sep to separate directories |
294 cwd = repo.getcwd() | 294 cwd = repo.getcwd() |
295 copied = [] | |
296 targets = {} | 295 targets = {} |
297 after = opts.get("after") | 296 after = opts.get("after") |
298 dryrun = opts.get("dry_run") | 297 dryrun = opts.get("dry_run") |
299 | 298 |
300 def walkpat(pat): | 299 def walkpat(pat): |
357 ui.warn(_('%s: cannot copy - %s\n') % | 356 ui.warn(_('%s: cannot copy - %s\n') % |
358 (relsrc, inst.strerror)) | 357 (relsrc, inst.strerror)) |
359 return True # report a failure | 358 return True # report a failure |
360 | 359 |
361 if ui.verbose or not exact: | 360 if ui.verbose or not exact: |
362 ui.status(_('copying %s to %s\n') % (relsrc, reltarget)) | 361 action = rename and "moving" or "copying" |
362 ui.status(_('%s %s to %s\n') % (action, relsrc, reltarget)) | |
363 | 363 |
364 targets[abstarget] = abssrc | 364 targets[abstarget] = abssrc |
365 | 365 |
366 # fix up dirstate | 366 # fix up dirstate |
367 origsrc = repo.dirstate.copied(abssrc) or abssrc | 367 origsrc = repo.dirstate.copied(abssrc) or abssrc |
376 % (repo.pathto(origsrc, cwd), reltarget)) | 376 % (repo.pathto(origsrc, cwd), reltarget)) |
377 if abstarget not in repo.dirstate and not dryrun: | 377 if abstarget not in repo.dirstate and not dryrun: |
378 repo.add([abstarget]) | 378 repo.add([abstarget]) |
379 elif not dryrun: | 379 elif not dryrun: |
380 repo.copy(origsrc, abstarget) | 380 repo.copy(origsrc, abstarget) |
381 copied.append((abssrc, relsrc, exact)) | 381 |
382 if rename and not dryrun: | |
383 repo.remove([abssrc], True) | |
382 | 384 |
383 # pat: ossep | 385 # pat: ossep |
384 # dest ossep | 386 # dest ossep |
385 # srcs: list of (hgsep, hgsep, ossep, bool) | 387 # srcs: list of (hgsep, hgsep, ossep, bool) |
386 # return: function that takes hgsep and returns ossep | 388 # return: function that takes hgsep and returns ossep |
480 errors += 1 | 482 errors += 1 |
481 | 483 |
482 if errors: | 484 if errors: |
483 ui.warn(_('(consider using --after)\n')) | 485 ui.warn(_('(consider using --after)\n')) |
484 | 486 |
485 return errors, copied | 487 return errors |
486 | 488 |
487 def service(opts, parentfn=None, initfn=None, runfn=None): | 489 def service(opts, parentfn=None, initfn=None, runfn=None): |
488 '''Run a command as a service.''' | 490 '''Run a command as a service.''' |
489 | 491 |
490 if opts['daemon'] and not opts['daemon_pipefds']: | 492 if opts['daemon'] and not opts['daemon_pipefds']: |