changeset 4521:d634b61e9cec

Add some more smart when initializing destination repository
author Edouard Gomez <ed.gomez@free.fr>
date Thu, 07 Jun 2007 23:16:10 +0200
parents ce1fed4a5b94
children 591322269fed
files hgext/convert/__init__.py
diffstat 1 files changed, 23 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/convert/__init__.py
+++ b/hgext/convert/__init__.py
@@ -6,7 +6,7 @@
 # of the GNU General Public License, incorporated herein by reference.
 
 import sys, os, zlib, sha, time, re, locale, socket
-from mercurial import hg, ui, util, commands
+from mercurial import hg, ui, util, commands, repo
 
 commands.norepo += " convert"
 
@@ -701,9 +701,28 @@ def _convert(ui, src, dest=None, mapfile
     if not dest:
         dest = src + "-hg"
         ui.status("assuming destination %s\n" % dest)
-        if not os.path.isdir(dest):
-            ui.status("creating repository %s\n" % dest)
-            os.system("hg init " + dest)
+
+    # Try to be smart and initalize things when required
+    if os.path.isdir(dest):
+        if len(os.listdir(dest)) > 0:
+            try:
+                hg.repository(ui, dest)
+                ui.status("destination %s is a Mercurial repository\n" % dest)
+            except repo.RepoError:
+                raise util.Abort(
+"""destination directory %s is not empty.
+Please specify an empty directory to be initialized or an already initialized
+mercurial repository
+""" % dest)
+        else:
+            ui.status("initializing destination %s repository\n" % dest)
+            hg.repository(ui, dest, create=True)
+    elif os.path.exists(dest):
+        raise util.Abort("destination %s exists and is not a directory\n" % dest)
+    else:
+        ui.status("initializing destination %s repository\n" % dest)
+        hg.repository(ui, dest, create=True)
+  
     destc = converter(ui, dest)
     if not hasattr(destc, "putcommit"):
         raise util.Abort("%s: can't write to this repo type\n" % src)