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 |