eric6/Plugins/VcsPlugins/vcsMercurial/PurgeExtension/purge.py

changeset 7971
ff2971513d6d
parent 7923
91e843545d9a
child 8143
2c730d5fd177
equal deleted inserted replaced
7970:c4ee8a81584c 7971:ff2971513d6d
4 # 4 #
5 5
6 """ 6 """
7 Module implementing the purge extension interface. 7 Module implementing the purge extension interface.
8 """ 8 """
9
10 import os
11 9
12 from PyQt5.QtWidgets import QDialog 10 from PyQt5.QtWidgets import QDialog
13 11
14 from ..HgExtension import HgExtension 12 from ..HgExtension import HgExtension
15 from ..HgDialog import HgDialog 13 from ..HgDialog import HgDialog
34 Public method used to shutdown the purge interface. 32 Public method used to shutdown the purge interface.
35 """ 33 """
36 if self.purgeListDialog is not None: 34 if self.purgeListDialog is not None:
37 self.purgeListDialog.close() 35 self.purgeListDialog.close()
38 36
39 def __getEntries(self, repodir, deleteAll): 37 def __getEntries(self, deleteAll):
40 """ 38 """
41 Private method to get a list of files/directories being purged. 39 Private method to get a list of files/directories being purged.
42 40
43 @param repodir directory name of the repository (string)
44 @param deleteAll flag indicating to delete all files including ignored 41 @param deleteAll flag indicating to delete all files including ignored
45 ones (boolean) 42 ones
46 @return name of the current patch (string) 43 @type bool
44 @return name of the current patch
45 @rtype str
47 """ 46 """
48 purgeEntries = [] 47 purgeEntries = []
49 48
50 args = self.vcs.initCommand("purge") 49 args = self.vcs.initCommand("purge")
51 args.append("--print") 50 args.append("--print")
57 if out: 56 if out:
58 purgeEntries = out.strip().split() 57 purgeEntries = out.strip().split()
59 58
60 return purgeEntries 59 return purgeEntries
61 60
62 def hgPurge(self, name, deleteAll=False): 61 def hgPurge(self, deleteAll=False):
63 """ 62 """
64 Public method to purge files and directories not tracked by Mercurial. 63 Public method to purge files and directories not tracked by Mercurial.
65 64
66 @param name file/directory name (string)
67 @param deleteAll flag indicating to delete all files including ignored 65 @param deleteAll flag indicating to delete all files including ignored
68 ones (boolean) 66 ones
67 @type bool
69 """ 68 """
70 # find the root of the repo
71 repodir = self.vcs.splitPath(name)[0]
72 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
73 repodir = os.path.dirname(repodir)
74 if os.path.splitdrive(repodir)[1] == os.sep:
75 return
76
77 if deleteAll: 69 if deleteAll:
78 title = self.tr("Purge All Files") 70 title = self.tr("Purge All Files")
79 message = self.tr( 71 message = self.tr(
80 """Do really want to delete all files not tracked by""" 72 """Do really want to delete all files not tracked by"""
81 """ Mercurial (including ignored ones)?""") 73 """ Mercurial (including ignored ones)?""")
82 else: 74 else:
83 title = self.tr("Purge Files") 75 title = self.tr("Purge Files")
84 message = self.tr( 76 message = self.tr(
85 """Do really want to delete files not tracked by Mercurial?""") 77 """Do really want to delete files not tracked by Mercurial?""")
86 entries = self.__getEntries(repodir, deleteAll) 78 entries = self.__getEntries(deleteAll)
87 from UI.DeleteFilesConfirmationDialog import ( 79 from UI.DeleteFilesConfirmationDialog import (
88 DeleteFilesConfirmationDialog 80 DeleteFilesConfirmationDialog
89 ) 81 )
90 dlg = DeleteFilesConfirmationDialog(None, title, message, entries) 82 dlg = DeleteFilesConfirmationDialog(None, title, message, entries)
91 if dlg.exec() == QDialog.Accepted: 83 if dlg.exec() == QDialog.Accepted:
93 if deleteAll: 85 if deleteAll:
94 args.append("--all") 86 args.append("--all")
95 args.append("-v") 87 args.append("-v")
96 88
97 dia = HgDialog(title, self.vcs) 89 dia = HgDialog(title, self.vcs)
98 res = dia.startProcess(args, repodir) 90 res = dia.startProcess(args)
99 if res: 91 if res:
100 dia.exec() 92 dia.exec()
101 93
102 def hgPurgeList(self, name, deleteAll=False): 94 def hgPurgeList(self, deleteAll=False):
103 """ 95 """
104 Public method to list files and directories not tracked by Mercurial. 96 Public method to list files and directories not tracked by Mercurial.
105 97
106 @param name file/directory name (string)
107 @param deleteAll flag indicating to list all files including ignored 98 @param deleteAll flag indicating to list all files including ignored
108 ones (boolean) 99 ones (boolean)
109 """ 100 """
110 # find the root of the repo 101 entries = self.__getEntries(deleteAll)
111 repodir = self.vcs.splitPath(name)[0]
112 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
113 repodir = os.path.dirname(repodir)
114 if os.path.splitdrive(repodir)[1] == os.sep:
115 return
116
117 entries = self.__getEntries(repodir, deleteAll)
118 from .HgPurgeListDialog import HgPurgeListDialog 102 from .HgPurgeListDialog import HgPurgeListDialog
119 self.purgeListDialog = HgPurgeListDialog(entries) 103 self.purgeListDialog = HgPurgeListDialog(entries)
120 self.purgeListDialog.show() 104 self.purgeListDialog.show()

eric ide

mercurial