GitRepository: Add clean() method
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Wed, 4 Sep 2013 08:58:21 +0000 (11:58 +0300)
committerGuido Günther <agx@sigxcpu.org>
Wed, 4 Sep 2013 20:36:31 +0000 (22:36 +0200)
Signed-off-by: Lingchaox Xin <lingchaox.xin@intel.com>
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
gbp/git/repository.py
tests/test_GitRepository.py

index 41e6471..6eed588 100644 (file)
@@ -765,6 +765,27 @@ class GitRepository(object):
             break
         return (ret, "".join(out))
 
+    def clean(self, directories=False, force=False, dry_run=False):
+        """
+        Remove untracked files from the working tree.
+
+        @param directories: remove untracked directories, too
+        @type directories: C{bool}
+        @param force: satisfy git configuration variable clean.requireForce
+        @type force: C{bool}
+        @param dry_run: don’t actually remove anything
+        @type dry_run: C{bool}
+        """
+        options = GitArgs()
+        options.add_true(directories, '-d')
+        options.add_true(force, '-f')
+        options.add_true(dry_run, '-n')
+
+        _out, err, ret = self._git_inout('clean', options.args,
+                                         extra_env={'LC_ALL': 'C'})
+        if ret:
+            raise GitRepositoryError("Can't execute repository clean: %s" % err)
+
     def is_empty(self):
         """
         Is the repository empty?
index 699ecd4..187712e 100644 (file)
@@ -104,6 +104,24 @@ def test_branch_master():
     'master'
     """
 
+def test_clean():
+    """
+    Remove untracked files from the working tree
+
+    Methods tested:
+         - L{gbp.git.GitRepository.clean}
+
+    >>> import gbp.git, shutil, os
+    >>> repo = gbp.git.GitRepository(repo_dir)
+    >>> shutil.copy(os.path.join(repo.path, ".git/HEAD"), \
+                                 os.path.join(repo.path, "testclean"))
+    >>> repo.clean(dry_run=True)
+    >>> repo.is_clean()[0]
+    False
+    >>> repo.clean(directories=True, force=True)
+    >>> repo.is_clean()[0]
+    True
+    """
 
 def test_create_branch():
     """