changeset 523:003df62ae39f

[PATCH] Force "hg clone" to always create a new directory -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 [PATCH] Force "hg clone" to always create a new directory From: Bryan O'Sullivan <bos@serpentine.com> I just screwed myself by typing "hg clone foo" without specifying a destination directory, and after I was done mopping up the mess, concluded that this is a dangerous mode of operation that has no practical value. I've thus modified the clone command so that it always creates a destination directory. If none is specified, the destination is taken as the basename of the source. hg clone foo -> error, because foo already exists hg clone http://www.selenic.com/hg -> new repo, named hg hg clone ../bar -> new repo, named bar manifest hash: f21ed8f805a60c1326d99220772e1574b0870d6c -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCwxsIywK+sNU5EO8RAgooAKC3IL6vKyADb9s2qqqi4GMw2Z7asACbBtE/ TvPgwGtIiB2GC+N+V7r1VpI= =uTcK -----END PGP SIGNATURE-----
author mpm@selenic.com
date Wed, 29 Jun 2005 14:04:56 -0800
parents 2f1de824798a
children 230676d0df6f
files doc/hg.1.txt mercurial/commands.py
diffstat 2 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/doc/hg.1.txt	Wed Jun 29 13:48:57 2005 -0800
+++ b/doc/hg.1.txt	Wed Jun 29 14:04:56 2005 -0800
@@ -82,9 +82,8 @@
 clone [-U] <source> [dest]::
     Create a copy of an existing repository in a new directory.
 
-    If the destination directory is specified but doesn't exist, it is
-    created. If no destination directory is specified, it defaults to the
-    current directory.
+    If no destination directory name is specified, it defaults to the
+    basename of the source.
 
     The source is added to the new repository's .hg/hgrc file to be used in
     future pulls.
--- a/mercurial/commands.py	Wed Jun 29 13:48:57 2005 -0800
+++ b/mercurial/commands.py	Wed Jun 29 14:04:56 2005 -0800
@@ -272,10 +272,12 @@
     success = created = False
 
     if dest is None:
-        dest = os.getcwd()
-    elif not os.path.exists(dest):
-        os.mkdir(dest)
-        created = True
+        dest = os.path.basename(source)
+        if dest == source:
+            ui.warn('abort: source and destination are the same\n')
+            sys.exit(1)
+
+    os.mkdir(dest)
 
     try:
         dest = os.path.realpath(dest)