Index: trac/admin/console.py
===================================================================
--- trac/admin/console.py	(revision 8874)
+++ trac/admin/console.py	(working copy)
@@ -689,12 +689,14 @@
                   ('wiki remove <page>', 'Remove wiki page'),
                   ('wiki export <page> [file]',
                    'Export wiki page to file or stdout'),
-                  ('wiki import <page> [file]',
-                   'Import wiki page from file or stdin'),
+                  ('wiki import <page> [file] [replace]',
+                   'Import wiki page from file or stdin, '
+                   'optionally replacing the current version'),
                   ('wiki dump <directory>',
                    'Export all wiki pages to files named by title'),
-                  ('wiki load <directory>',
-                   'Import all wiki pages from directory'),
+                  ('wiki load <directory> [replace]',
+                   'Import all wiki pages from directory, optionally '
+                   'replacing the current version'),
                   ('wiki upgrade',
                    'Upgrade default wiki pages to current version')]
 
@@ -725,10 +727,11 @@
         elif arg[0] == 'remove'  and len(arg)==2:
             name = arg[1]
             self._do_wiki_remove(name)
-        elif arg[0] == 'import' and len(arg) == 3:
+        elif arg[0] == 'import' and len(arg) in [3,4]:
             title = arg[1]
             file = arg[2]
-            self._do_wiki_import(file, title)
+            replace = (len(arg) == 4 and arg[3] == "replace") or False
+            self._do_wiki_import(file, title, replace=replace)
         elif arg[0] == 'export'  and len(arg) in [2,3]:
             page = arg[1]
             file = (len(arg) == 3 and arg[2]) or None
@@ -736,9 +739,10 @@
         elif arg[0] == 'dump' and len(arg) in [1,2]:
             dir = (len(arg) == 2 and arg[1]) or ''
             self._do_wiki_dump(dir)
-        elif arg[0] == 'load' and len(arg) in [1,2]:
-            dir = (len(arg) == 2 and arg[1]) or ''
-            self._do_wiki_load(dir)
+        elif arg[0] == 'load' and len(arg) in [1,2,3]:
+            dir = (len(arg) >= 2 and arg[1]) or ''
+            replace = (len(arg) == 3 and arg[2] == "replace") or False
+            self._do_wiki_load(dir, replace=replace)
         elif arg[0] == 'upgrade' and len(arg) == 1:
             self._do_wiki_load(pkg_resources.resource_filename('trac.wiki', 
                                                                'default-pages'),
@@ -768,7 +772,7 @@
             page.delete()
 
     def _do_wiki_import(self, filename, title, cursor=None,
-                        create_only=[]):
+                        create_only=[], replace=False):
         if not os.path.isfile(filename):
             raise Exception, '%s is not a file' % filename
 
@@ -788,11 +792,18 @@
             return False
         f.close()
 
-        self.db_update("INSERT INTO wiki(version,name,time,author,ipnr,text) "
-                       " SELECT 1+COALESCE(max(version),0),%s,%s,"
-                       " 'trac','127.0.0.1',%s FROM wiki "
-                       " WHERE name=%s",
-                       cursor, (title, int(time.time()), data, title))
+        if replace:
+            self.db_update("UPDATE wiki SET text=%s "
+                           " WHERE name=%s AND "
+                           " version=(SELECT version FROM wiki WHERE name=%s"
+                           "  ORDER BY version DESC LIMIT 1)",
+                           cursor, (data, title, title))
+        else:
+            self.db_update("INSERT INTO wiki(version,name,time,author,ipnr,text) "
+                           " SELECT 1+COALESCE(max(version),0),%s,%s,"
+                           " 'trac','127.0.0.1',%s FROM wiki "
+                           " WHERE name=%s",
+                           cursor, (title, int(time.time()), data, title))
         return True
 
     def _do_wiki_export(self, page, filename=''):
@@ -820,7 +831,7 @@
             printout(_(" %(src)s => %(dst)s", src=p, dst=dst))
             self._do_wiki_export(p, dst)
 
-    def _do_wiki_load(self, dir, cursor=None, ignore=[], create_only=[]):
+    def _do_wiki_load(self, dir, cursor=None, ignore=[], create_only=[], replace=False):
         cons_charset = getattr(sys.stdout, 'encoding', None) or 'utf-8'
         for page in os.listdir(dir):
             if page in ignore:
@@ -828,7 +839,7 @@
             filename = os.path.join(dir, page)
             page = unicode_unquote(page.encode('utf-8'))
             if os.path.isfile(filename):
-                if self._do_wiki_import(filename, page, cursor, create_only):
+                if self._do_wiki_import(filename, page, cursor, create_only, replace):
                     printout(_(" %(page)s imported from %(filename)s",
                                filename=filename, page=page))
 

