Plugins/VcsPlugins/vcsMercurial/hg.py

changeset 3586
6e3a6c5b58bf
parent 3578
e55d32585d08
child 3591
2f2a4a76dd22
equal deleted inserted replaced
3585:f09a457c83fe 3586:6e3a6c5b58bf
109 self.repoEditor = None 109 self.repoEditor = None
110 self.userEditor = None 110 self.userEditor = None
111 self.serveDlg = None 111 self.serveDlg = None
112 self.bookmarksListDlg = None 112 self.bookmarksListDlg = None
113 self.bookmarksInOutDlg = None 113 self.bookmarksInOutDlg = None
114 self.conflictsDlg = None
114 115
115 self.bundleFile = None 116 self.bundleFile = None
116 self.__lastChangeGroupPath = None 117 self.__lastChangeGroupPath = None
117 118
118 self.statusCache = {} 119 self.statusCache = {}
203 204
204 if self.bookmarksListDlg is not None: 205 if self.bookmarksListDlg is not None:
205 self.bookmarksListDlg.close() 206 self.bookmarksListDlg.close()
206 if self.bookmarksInOutDlg is not None: 207 if self.bookmarksInOutDlg is not None:
207 self.bookmarksInOutDlg.close() 208 self.bookmarksInOutDlg.close()
209
210 if self.conflictsDlg is not None:
211 self.conflictsDlg.close()
208 212
209 if self.bundleFile and os.path.exists(self.bundleFile): 213 if self.bundleFile and os.path.exists(self.bundleFile):
210 os.remove(self.bundleFile) 214 os.remove(self.bundleFile)
211 215
212 # shut down the project helpers 216 # shut down the project helpers
1054 dia = HgDialog(self.tr('Merging').format(name), self) 1058 dia = HgDialog(self.tr('Merging').format(name), self)
1055 res = dia.startProcess(args, repodir) 1059 res = dia.startProcess(args, repodir)
1056 if res: 1060 if res:
1057 dia.exec_() 1061 dia.exec_()
1058 self.checkVCSStatus() 1062 self.checkVCSStatus()
1063
1064 def hgReMerge(self, name):
1065 """
1066 Public method used to merge a URL/revision into the local project.
1067
1068 @param name file/directory name to be merged (string)
1069 """
1070 args = self.initCommand("resolve")
1071 if self.getPlugin().getPreferences("InternalMerge"):
1072 args.append("--tool")
1073 args.append("internal:merge")
1074 if isinstance(name, list):
1075 dname, fnames = self.splitPathList(name)
1076 self.addArguments(args, name)
1077 names = name[:]
1078 else:
1079 dname, fname = self.splitPath(name)
1080 args.append(name)
1081 names = [name]
1082
1083 # find the root of the repo
1084 repodir = dname
1085 while not os.path.isdir(os.path.join(repodir, self.adminDir)):
1086 repodir = os.path.dirname(repodir)
1087 if os.path.splitdrive(repodir)[1] == os.sep:
1088 return
1089
1090 project = e5App().getObject("Project")
1091 names = [project.getRelativePath(nam) for nam in names]
1092 if names[0]:
1093 from UI.DeleteFilesConfirmationDialog import \
1094 DeleteFilesConfirmationDialog
1095 dlg = DeleteFilesConfirmationDialog(
1096 self.parent(),
1097 self.tr("Re-Merge"),
1098 self.tr(
1099 "Do you really want to re-merge these files"
1100 " or directories?"),
1101 names)
1102 yes = dlg.exec_() == QDialog.Accepted
1103 else:
1104 yes = E5MessageBox.yesNo(
1105 None,
1106 self.tr("Re-Merge"),
1107 self.tr("""Do you really want to re-merge the project?"""))
1108 if yes:
1109 dia = HgDialog(self.tr('Re-Merging').format(name), self)
1110 res = dia.startProcess(args, repodir)
1111 if res:
1112 dia.exec_()
1113 self.checkVCSStatus()
1059 1114
1060 def vcsSwitch(self, name): 1115 def vcsSwitch(self, name):
1061 """ 1116 """
1062 Public method used to switch a working directory to a different 1117 Public method used to switch a working directory to a different
1063 revision. 1118 revision.
2053 .format(author, cdate, ctime)) 2108 .format(author, cdate, ctime))
2054 2109
2055 dlg = VcsRepositoryInfoDialog(None, "\n".join(info)) 2110 dlg = VcsRepositoryInfoDialog(None, "\n".join(info))
2056 dlg.exec_() 2111 dlg.exec_()
2057 2112
2058 # TODO: Add support for hg resolve -l displaying a dialog like log 2113 def hgConflicts(self, name):
2059 def hgResolve(self, name): 2114 """
2115 Public method used to show a list of files containing.
2116
2117 @param name file/directory name to be resolved (string)
2118 """
2119 if self.conflictsDlg is None:
2120 from .HgConflictsListDialog import HgConflictsListDialog
2121 self.conflictsDlg = HgConflictsListDialog(self)
2122 self.conflictsDlg.show()
2123 self.conflictsDlg.start(name)
2124
2125 def hgResolved(self, name, unresolve=False):
2060 """ 2126 """
2061 Public method used to resolve conflicts of a file/directory. 2127 Public method used to resolve conflicts of a file/directory.
2062 2128
2063 @param name file/directory name to be resolved (string) 2129 @param name file/directory name to be resolved (string)
2130 @param unresolve flag indicating to mark the file/directory as
2131 unresolved (boolean)
2064 """ 2132 """
2065 args = self.initCommand("resolve") 2133 args = self.initCommand("resolve")
2066 args.append("--mark") 2134 if unresolve:
2135 args.append("--unmark")
2136 else:
2137 args.append("--mark")
2067 2138
2068 if isinstance(name, list): 2139 if isinstance(name, list):
2069 dname, fnames = self.splitPathList(name) 2140 dname, fnames = self.splitPathList(name)
2070 self.addArguments(args, name) 2141 self.addArguments(args, name)
2071 else: 2142 else:
2077 while not os.path.isdir(os.path.join(repodir, self.adminDir)): 2148 while not os.path.isdir(os.path.join(repodir, self.adminDir)):
2078 repodir = os.path.dirname(repodir) 2149 repodir = os.path.dirname(repodir)
2079 if os.path.splitdrive(repodir)[1] == os.sep: 2150 if os.path.splitdrive(repodir)[1] == os.sep:
2080 return 2151 return
2081 2152
2082 dia = HgDialog(self.tr('Resolving files/directories'), self) 2153 if unresolve:
2154 title = self.tr("Marking as 'unresolved'")
2155 else:
2156 title = self.tr("Marking as 'resolved'")
2157 dia = HgDialog(title, self)
2083 res = dia.startProcess(args, repodir) 2158 res = dia.startProcess(args, repodir)
2084 if res: 2159 if res:
2085 dia.exec_() 2160 dia.exec_()
2086 self.checkVCSStatus() 2161 self.checkVCSStatus()
2087 2162

eric ide

mercurial