[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-----
--- 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)