Changeset 92655 in webkit


Ignore:
Timestamp:
Aug 8, 2011 5:11:31 PM (13 years ago)
Author:
abarth@webkit.org
Message:

scm.delete should delete empty parent directories as well
https://bugs.webkit.org/show_bug.cgi?id=65878

Reviewed by Eric Seidel.

This behavior makes SVN match GIT (which has no concept of empty
directories). This bug comes up a lot when optimizing baselines, which
often create empty directories when we're able to optimize everything
out of a given folder.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
  • Scripts/webkitpy/common/checkout/scm/svn.py:
Location:
trunk/Tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r92647 r92655  
     12011-08-08  Adam Barth  <abarth@webkit.org>
     2
     3        scm.delete should delete empty parent directories as well
     4        https://bugs.webkit.org/show_bug.cgi?id=65878
     5
     6        Reviewed by Eric Seidel.
     7
     8        This behavior makes SVN match GIT (which has no concept of empty
     9        directories).  This bug comes up a lot when optimizing baselines, which
     10        often create empty directories when we're able to optimize everything
     11        out of a given folder.
     12
     13        * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
     14        * Scripts/webkitpy/common/checkout/scm/svn.py:
     15
    1162011-08-08  Lucas Forschler  <lforschler@apple.com>
    217
  • trunk/Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py

    r92632 r92655  
    512512        self.assertTrue("added_dir/added_file" in self.scm.added_files())
    513513
     514    def _shared_test_delete_recursively(self):
     515        os.mkdir("added_dir")
     516        write_into_file_at_path("added_dir/added_file", "new stuff")
     517        self.scm.add("added_dir/added_file")
     518        self.assertTrue("added_dir/added_file" in self.scm.added_files())
     519        self.scm.delete("added_dir/added_file")
     520        self.assertFalse("added_dir" in self.scm.added_files())
     521
     522    def _shared_test_delete_recursively_or_not(self):
     523        os.mkdir("added_dir")
     524        write_into_file_at_path("added_dir/added_file", "new stuff")
     525        write_into_file_at_path("added_dir/another_added_file", "more new stuff")
     526        self.scm.add("added_dir/added_file")
     527        self.scm.add("added_dir/another_added_file")
     528        self.assertTrue("added_dir/added_file" in self.scm.added_files())
     529        self.assertTrue("added_dir/another_added_file" in self.scm.added_files())
     530        self.scm.delete("added_dir/added_file")
     531        self.assertTrue("added_dir/another_added_file" in self.scm.added_files())
     532
    514533    def _shared_test_exists(self, scm, commit_function):
    515534        os.chdir(scm.checkout_root)
     
    843862        self.assertTrue("test_file" in self.scm.deleted_files())
    844863
     864    def test_delete_recursively(self):
     865        self._shared_test_delete_recursively()
     866
     867    def test_delete_recursively_or_not(self):
     868        self._shared_test_delete_recursively_or_not()
     869
    845870    def test_head_svn_revision(self):
    846871        self._shared_test_head_svn_revision()
     
    14601485        self.assertTrue("test_file_commit1" in self.scm.deleted_files())
    14611486
     1487    def test_delete_recursively(self):
     1488        self._shared_test_delete_recursively()
     1489
     1490    def test_delete_recursively_or_not(self):
     1491        self._shared_test_delete_recursively_or_not()
     1492
    14621493    def test_head_svn_revision(self):
    14631494        self._shared_test_head_svn_revision()
  • trunk/Tools/Scripts/webkitpy/common/checkout/scm/svn.py

    r92036 r92655  
    6969    svn_server_realm = "<http://svn.webkit.org:80> Mac OS Forge"
    7070
     71    _svn_metadata_files = frozenset(['.svn', '_svn'])
     72
    7173    def __init__(self, cwd, patch_directories, executive=None):
    7274        SCM.__init__(self, cwd, executive)
     
    172174        return self.run(["svn", "add", path], return_exit_code=return_exit_code)
    173175
     176    def _delete_parent_directories(self, path):
     177        if not self.in_working_directory(path):
     178            return
     179        if set(os.listdir(path)) - self._svn_metadata_files:
     180            return  # Directory has non-trivial files in it.
     181        self.delete(path)
     182        dirname = os.path.dirname(path)
     183        if dirname != path:
     184            self._delete_parent_directories(dirname)
     185
    174186    def delete(self, path):
    175         parent, base = os.path.split(os.path.abspath(path))
    176         return self.run(["svn", "delete", "--force", base], cwd=parent)
     187        abs_path = os.path.abspath(path)
     188        parent, base = os.path.split(abs_path)
     189        result = self.run(["svn", "delete", "--force", base], cwd=parent)
     190        self._delete_parent_directories(os.path.dirname(abs_path))
     191        return result
    177192
    178193    def exists(self, path):
Note: See TracChangeset for help on using the changeset viewer.