convert: handle .gitmodules with non-tab whitespaces
authorDurham Goode <durham@fb.com>
Mon, 29 Jun 2015 17:19:18 -0700
changeset 25698 307370c2dda2
parent 25697 1538e72209fd
child 25699 5c97a4ecbdd4
convert: handle .gitmodules with non-tab whitespaces The old implementation assumed .gitmodules file lines always began with tabs. It can be any whitespace, so lets trim the lines appropriately.
hgext/convert/git.py
tests/test-convert-git.t
--- a/hgext/convert/git.py	Mon Jun 29 13:39:05 2015 -0700
+++ b/hgext/convert/git.py	Mon Jun 29 17:19:18 2015 -0700
@@ -174,8 +174,9 @@
         """
         self.submodules = []
         c = config.config()
-        # Each item in .gitmodules starts with \t that cant be parsed
-        c.parse('.gitmodules', content.replace('\t',''))
+        # Each item in .gitmodules starts with whitespace that cant be parsed
+        c.parse('.gitmodules', '\n'.join(line.strip() for line in
+                               content.split('\n')))
         for sec in c.sections():
             s = c[sec]
             if 'url' in s and 'path' in s:
--- a/tests/test-convert-git.t	Mon Jun 29 13:39:05 2015 -0700
+++ b/tests/test-convert-git.t	Mon Jun 29 17:19:18 2015 -0700
@@ -457,6 +457,31 @@
   $ git init-db >/dev/null 2>/dev/null
   $ git submodule add ${BASE} >/dev/null 2>/dev/null
   $ commit -a -m 'addsubmodule' >/dev/null 2>/dev/null
+
+test non-tab whitespace .gitmodules
+
+  $ cat >> .gitmodules <<EOF
+  > [submodule "git-repo5"]
+  >   path = git-repo5
+  >   url = $TESTTMP/git-repo5
+  > EOF
+  $ git commit -a -m "weird white space submodule"
+  [master *] weird white space submodule (glob)
+   Author: nottest <test@example.org>
+   1 file changed, 3 insertions(+)
+  $ cd ..
+  $ hg convert git-repo6 hg-repo6
+  initializing destination hg-repo6 repository
+  scanning source...
+  sorting...
+  converting...
+  1 addsubmodule
+  0 weird white space submodule
+  updating bookmarks
+
+  $ rm -rf hg-repo6
+  $ cd git-repo6
+  $ git reset --hard 'HEAD^' > /dev/null
   $ cd ..
 
 test invalid splicemap1