[PATCH 2 of 3 STABLE] convert/svn: make the sink remove empty directories

Patrick Mezard pmezard at gmail.com
Fri Dec 2 11:28:03 CST 2011


# HG changeset patch
# User Patrick Mezard <pmezard at gmail.com>
# Date 1322843294 -3600
# Branch stable
# Node ID 8e8b2cd69ee18ab1bfa4e3a0e4f4a5ebd08a9deb
# Parent  e317a36f99b908f1fc8346e174c0a44075dc7ef2
convert/svn: make the sink remove empty directories

- It never worked because os.listdir() returns a list
- It would not have worked with svn 1.7 because .svn directories have been
  unified in a single one at root level.

diff --git a/hgext/convert/subversion.py b/hgext/convert/subversion.py
--- a/hgext/convert/subversion.py
+++ b/hgext/convert/subversion.py
@@ -1127,8 +1127,10 @@
     def tidy_dirs(self, names):
         deleted = []
         for d in sorted(self.dirs_of(names), reverse=True):
-            wd = self.wjoin(d)
-            if os.listdir(wd) == '.svn':
+            entries = os.listdir(self.wjoin(d))
+            # As of svn 1.7, there is only one .svn metadata directory
+            # at root level.
+            if not entries or entries == ['.svn']:
                 self.run0('delete', d)
                 self.manifest.remove(d)
                 deleted.append(d)
diff --git a/tests/test-convert-svn-sink.t b/tests/test-convert-svn-sink.t
--- a/tests/test-convert-svn-sink.t
+++ b/tests/test-convert-svn-sink.t
@@ -376,6 +376,35 @@
   </logentry>
   </log>
 
+Check directory cleanup
+
+  $ hg --cwd a rm d2/a
+  $ hg --cwd a ci -d '1 0' -A -m 'remove last file of directory'
+  $ hg convert -d svn a
+  assuming destination a-hg
+  initializing svn working copy 'a-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  0 remove last file of directory
+  $ svnupanddisplay a-hg-wc 1
+   3 3 test .
+   3 1 test d1
+   3 1 test d1/a
+  <?xml version="1.0"*?> (glob)
+  <log>
+  <logentry
+     revision="3">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="D">/d2</path>
+  </paths>
+  <msg>remove last file of directory</msg>
+  </logentry>
+  </log>
+
 Branchy history
 
   $ hg init b


More information about the Mercurial-devel mailing list