chiark / gitweb /
Check if purge extension is enabled before attempting to enable it in .hg/hgrc
authorأحمد المحمودي (Ahmed El-Mahmoudy) <aelmahmoudy@sabily.org>
Wed, 15 Jan 2014 14:08:55 +0000 (16:08 +0200)
committerأحمد المحمودي (Ahmed El-Mahmoudy) <aelmahmoudy@sabily.org>
Wed, 15 Jan 2014 14:08:55 +0000 (16:08 +0200)
fdroidserver/common.py

index 51be2ae134503a5142ed9edfff1ccf622e8c74a9..45e25c45825f46a7cc8e4fcb246d7222019998d2 100644 (file)
@@ -472,12 +472,18 @@ class vcs_hg(vcs):
         if subprocess.call(['hg', 'update', '-C', rev],
                 cwd=self.local) != 0:
             raise VCSException("Hg checkout failed")
-        #Also delete untracked files, we have to enable purge extension for that:
-        with open(self.local+"/.hg/hgrc", "a") as myfile:
-                       myfile.write("\n[extensions]\nhgext.purge=")
-        if subprocess.call(['hg', 'purge', '--all'],
-                       cwd=self.local) != 0:
-                               raise VCSException("HG purge failed")   
+        p = subprocess.Popen(['hg', 'purge', '--all'], stdout=subprocess.PIPE,
+                             cwd=self.local)
+        result = p.communicate()[0]
+        if "'purge' is provided by the following extension" in result:
+            #Also delete untracked files, we have to enable purge extension for that:
+            with open(self.local+"/.hg/hgrc", "a") as myfile:
+                           myfile.write("\n[extensions]\nhgext.purge=")
+            if subprocess.call(['hg', 'purge', '--all'],
+                           cwd=self.local) != 0:
+                                   raise VCSException("HG purge failed")
+        else:
+            raise VCSException("HG purge failed")
 
     def gettags(self):
         p = subprocess.Popen(['hg', 'tags', '-q'],