Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 813:80fd2958235a
Adapt commit to use file matching code.
The code is slightly complicated by the need to commit all outstanding
changes in the repository if no file names are given (other commands
operate on the current directory and its subdirectories in this case).
localrepository.changes has acquired an optional match parameter, to let
it filter out include/exclude options.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Fri, 29 Jul 2005 15:02:27 -0800 |
parents | b65af904d6d7 |
children | 0902ffece4b4 |
comparison
equal
deleted
inserted
replaced
812:b65af904d6d7 | 813:80fd2958235a |
---|---|
466 if not opts['noupdate']: | 466 if not opts['noupdate']: |
467 update(ui, repo) | 467 update(ui, repo) |
468 | 468 |
469 d.close() | 469 d.close() |
470 | 470 |
471 def commit(ui, repo, *files, **opts): | 471 def commit(ui, repo, *pats, **opts): |
472 """commit the specified files or all outstanding changes""" | 472 """commit the specified files or all outstanding changes""" |
473 if opts['text']: | 473 if opts['text']: |
474 ui.warn("Warning: -t and --text is deprecated," | 474 ui.warn("Warning: -t and --text is deprecated," |
475 " please use -m or --message instead.\n") | 475 " please use -m or --message instead.\n") |
476 message = opts['message'] or opts['text'] | 476 message = opts['message'] or opts['text'] |
480 message = open(logfile).read() | 480 message = open(logfile).read() |
481 except IOError, why: | 481 except IOError, why: |
482 ui.warn("Can't read commit message %s: %s\n" % (logfile, why)) | 482 ui.warn("Can't read commit message %s: %s\n" % (logfile, why)) |
483 | 483 |
484 if opts['addremove']: | 484 if opts['addremove']: |
485 addremove(ui, repo, *files) | 485 addremove(ui, repo, *pats, **opts) |
486 repo.commit(relpath(repo, files), message, opts['user'], opts['date']) | 486 cwd = repo.getcwd() |
487 if not pats and cwd: | |
488 opts['include'] = [os.path.join(cwd, i) for i in opts['include']] | |
489 opts['exclude'] = [os.path.join(cwd, x) for x in opts['exclude']] | |
490 fns, match = matchpats((pats and repo.getcwd()) or '', pats, opts) | |
491 if pats: | |
492 c, a, d, u = repo.changes(files = fns, match = match) | |
493 files = c + a + [fn for fn in d if repo.dirstate.state(fn) == 'r'] | |
494 else: | |
495 files = [] | |
496 repo.commit(files, message, opts['user'], opts['date'], match) | |
487 | 497 |
488 def copy(ui, repo, source, dest): | 498 def copy(ui, repo, source, dest): |
489 """mark a file as copied or renamed for the next commit""" | 499 """mark a file as copied or renamed for the next commit""" |
490 return repo.copy(*relpath(repo, (source, dest))) | 500 return repo.copy(*relpath(repo, (source, dest))) |
491 | 501 |
1138 [('U', 'noupdate', None, 'skip update after cloning')], | 1148 [('U', 'noupdate', None, 'skip update after cloning')], |
1139 'hg clone [-U] SOURCE [DEST]'), | 1149 'hg clone [-U] SOURCE [DEST]'), |
1140 "^commit|ci": | 1150 "^commit|ci": |
1141 (commit, | 1151 (commit, |
1142 [('A', 'addremove', None, 'run add/remove during commit'), | 1152 [('A', 'addremove', None, 'run add/remove during commit'), |
1153 ('I', 'include', [], 'include path in search'), | |
1154 ('X', 'exclude', [], 'exclude path from search'), | |
1143 ('m', 'message', "", 'commit message'), | 1155 ('m', 'message', "", 'commit message'), |
1144 ('t', 'text', "", 'commit message (deprecated: use -m)'), | 1156 ('t', 'text', "", 'commit message (deprecated: use -m)'), |
1145 ('l', 'logfile', "", 'commit message file'), | 1157 ('l', 'logfile', "", 'commit message file'), |
1146 ('d', 'date', "", 'date code'), | 1158 ('d', 'date', "", 'date code'), |
1147 ('u', 'user', "", 'user')], | 1159 ('u', 'user', "", 'user')], |