# HG changeset patch # User mpm@selenic.com # Date 1117682378 28800 # Node ID 8ff4532376a41375b54ffade603d524c706606b4 # Parent 06bc1ef248a6e92eeaf1fe246d980a6b6e47379d hg checkout: refuse to checkout if there are outstanding changes -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 hg checkout: refuse to checkout if there are outstanding changes This is a stop-gap until I make the working dir logic smarter manifest hash: a3f6adcb7eecec294000039057d59771958f4186 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCnnrKywK+sNU5EO8RAtqBAJwPQQrW5GhjMP9HMkFtfD7qhqxIcgCfXvA4 oXHO13uzBn5JOaTH3KwsMbQ= =IzTY -----END PGP SIGNATURE----- diff --git a/hg b/hg --- a/hg +++ b/hg @@ -129,12 +129,6 @@ relpath = None if os.getcwd() != repo.root: relpath = os.getcwd()[len(repo.root) + 1: ] -if cmd == "checkout" or cmd == "co": - node = repo.changelog.tip() - if args: - node = repo.lookup(args[0]) - repo.checkout(node) - elif cmd == "add": repo.add(args) diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -68,8 +68,13 @@ def branch(ui, path): # this should eventually support remote repos os.system("cp -al %s/.hg .hg" % path) -def checkout(u, repo, changeset=None): +def checkout(ui, repo, changeset=None): '''checkout a given changeset or the current tip''' + (c, a, d) = repo.diffdir(repo.root, repo.current) + if c: + ui.warn("aborting (outstanding changes in working directory)\n") + sys.exit(1) + node = repo.changelog.tip() if changeset: node = repo.lookup(changeset)