changeset 168:8bfa8aa6b68f

added empty changelog handling
author Scott Chacon <schacon@gmail.com>
date Mon, 01 Jun 2009 20:17:11 -0700
parents cb5beb432e78
children d67d00738298
files TODO.txt __init__.py git_handler.py hgrepo.py
diffstat 4 files changed, 20 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/TODO.txt	Mon Jun 01 15:15:43 2009 -0700
+++ b/TODO.txt	Mon Jun 01 20:17:11 2009 -0700
@@ -1,9 +1,10 @@
 GENERAL
 ==========
-* fully integrate as native protocol handler
+* fully integrate as native protocol handler (see hgsubversion)
   - hg push git@...
   - hg fetch [remote] (remote is url, hg alias or hg-git remote)
   - hg clone url
+
 * work fine with eclipse plugin or tortoise-hg
 
 MAPPING ISSUES
--- a/__init__.py	Mon Jun 01 15:15:43 2009 -0700
+++ b/__init__.py	Mon Jun 01 20:17:11 2009 -0700
@@ -20,8 +20,10 @@
 from git_handler import GitHandler
 
 # support for `hg clone git://github.com/defunkt/facebox.git`
+# also hg clone git+ssh://git@github.com/schacon/simplegit.git
 import gitrepo, hgrepo
 hg.schemes['git'] = gitrepo
+hg.schemes['git+ssh'] = gitrepo
 hg.schemes['file'] = hgrepo
 
 def gclone(ui, git_url, hg_repo_path=None):
--- a/git_handler.py	Mon Jun 01 15:15:43 2009 -0700
+++ b/git_handler.py	Mon Jun 01 20:17:11 2009 -0700
@@ -294,8 +294,11 @@
         # save file context listing on merge commit
         if (len(parents) > 1):
             add_extras = True
-            for filenm in ctx.files():
-                extra_message += "files : " + filenm + "\n"
+            if len(ctx.files()) > 0:
+                for filenm in ctx.files():
+                    extra_message += "files : " + filenm + "\n"
+            else: # hack for 'fetch' extension idiocy
+                extra_message += "emptychangelog : true\n"
 
         if add_extras:
             commit['message'] += "\n--HG--\n" + extra_message
@@ -656,6 +659,8 @@
                     branch = data
                 if command == 'files':
                     files.append(data)
+                if command == 'emptychangelog':
+                    files = False
                 if command == 'extra':
                     before, after = data.split(" : ", 1)
                     extra[before] = urllib.unquote(after)
@@ -695,7 +700,7 @@
             def commit_octopus(p1, p2):
                 ctx = context.memctx(self.repo, (p1, p2), text, files, getfilectx,
                                      commit.author, date, {'hg-git': 'octopus'})
-                return hex(self.repo.commitctx(ctx, None))
+                return hex(self.repo.commitctx(ctx))
 
             octopus = len(gparents) > 2
             p2 = gparents.pop()
@@ -740,7 +745,7 @@
         ctx = context.memctx(self.repo, (p1, p2), text, files, getfilectx,
                              author, date, extra)
         
-        node = self.repo.commitctx(ctx, pa, force_files)
+        node = self.repo.commit_import_ctx(ctx, pa, force_files)
 
         # save changeset to mapping file
         cs = hex(node)
--- a/hgrepo.py	Mon Jun 01 15:15:43 2009 -0700
+++ b/hgrepo.py	Mon Jun 01 20:17:11 2009 -0700
@@ -4,7 +4,7 @@
 
 class hgrepo(localrepo.localrepository):
 
-    def commitctx(self, wctx, ancestor, force_files = False):
+    def commit_import_ctx(self, wctx, ancestor, force_files = None):
     
         tr = None
         valid = 0 # don't save the dirstate if this isn't set
@@ -99,10 +99,13 @@
             text = '\n'.join(lines)
 
             file_list = []
-            if len(force_files) > 0:
-                file_list = force_files
+            if force_files == False:
+                file_list = []
             else:
-                file_list = changed + removed
+                if force_files and len(force_files) > 0:
+                    file_list = force_files
+                else:
+                    file_list = changed + removed
             
             self.changelog.delayupdate()
             n = self.changelog.add(mn, file_list, text, trp, p1, p2,