[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