124 "Created: / 14-12-2012 / 19:14:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
125 "Created: / 14-12-2012 / 19:14:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
125 ! ! |
126 ! ! |
126 |
127 |
127 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
128 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
128 |
129 |
|
130 hgMenuMerge:anHGChangeset |
|
131 | repo wc appl stream| |
|
132 |
|
133 appl := self openCommandResultApplication. |
|
134 stream := appl resultStream. |
|
135 appl changeTabTo:((resources string: 'Merging with %1') bindWith: anHGChangeset id printString). |
|
136 |
|
137 [ |
|
138 repo := self currentHgRepository. |
|
139 wc := repo workingCopy. |
|
140 stream nextPutAll:(resources string: 'Running ''hg merge''...'). |
|
141 wc merge: anHGChangeset. |
|
142 stream nextPutAll:(resources string: 'done'); cr. |
|
143 (wc conflicts asSortedCollection:[:a :b|a pathName < b pathName]) do:[:each| |
|
144 each isUnresolved ifTrue:[ |
|
145 | merger | |
|
146 |
|
147 stream nextPutAll: ((resources string: 'Resolving conflicts %1...') bindWith: each pathNameRelative). |
|
148 merger := HGMergeTool for: each. |
|
149 merger premerge ifTrue:[ |
|
150 stream nextPutLine:(resources string: 'resolved'). |
|
151 each markResolved. |
|
152 ] ifFalse:[ |
|
153 stream nextPutLine:(resources string: 'UNRESOLVED') |
|
154 ] |
|
155 ] |
|
156 ] |
|
157 ] forkAt: Processor userBackgroundPriority |
|
158 |
|
159 "Created: / 14-01-2013 / 21:59:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
160 "Modified: / 15-01-2013 / 10:48:06 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
161 ! ! |
|
162 |
|
163 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
|
164 |
|
165 hgResolve |
|
166 | wc prefixsz files | |
|
167 |
|
168 wc := self currentHgRepository workingCopy. |
|
169 prefixsz := wc pathName size + 1. |
|
170 files := self currentSelectedObjects. |
|
171 (files size == 1 and:[files anElement = self currentDirectoryDisplayed]) ifTrue:[ |
|
172 files := wc conflicts asSortedCollection:[:a :b|a pathName < b pathName]. |
|
173 files := files select:[:e|e isUnresolved]. |
|
174 ] ifFalse:[ |
|
175 files := files collect:[:file| |
|
176 | path | |
|
177 path := file pathName. |
|
178 path := path copyFrom: prefixsz. |
|
179 wc / path. |
|
180 ]. |
|
181 ]. |
|
182 files do:[:entry| |
|
183 (HGMergeTool for: entry) merge ifTrue:[ |
|
184 entry markResolved. |
|
185 ]. |
|
186 ] |
|
187 |
|
188 "Modified: / 15-01-2013 / 11:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
189 ! ! |
|
190 |
|
191 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
|
192 |
|
193 hgResolveList |
|
194 self hgExecuteCommand: 'resolve --list' objects: #() |
|
195 |
|
196 "Modified: / 14-01-2013 / 21:55:32 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
197 ! ! |
|
198 |
|
199 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
|
200 |
|
201 hgResolveListUnresolved |
|
202 | repo wc appl stream| |
|
203 |
|
204 appl := self openCommandResultApplication. |
|
205 stream := appl resultStream. |
|
206 appl changeTabTo:(resources string: 'Unresolved conflicts'). |
|
207 repo := self currentHgRepository. |
|
208 wc := repo workingCopy. |
|
209 (wc conflicts asSortedCollection:[:a :b|a pathName < b pathName]) do:[:each| |
|
210 each isUnresolved ifTrue:[ |
|
211 stream nextPutLine: each pathNameRelative |
|
212 ]. |
|
213 ]. |
|
214 |
|
215 "Modified: / 15-01-2013 / 10:47:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
216 ! ! |
|
217 |
|
218 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
|
219 |
|
220 hgResolveMark |
|
221 self hgExecuteCommand: 'resolve --mark' objects: self currentSelectedObjects. |
|
222 |
|
223 "Created: / 14-01-2013 / 21:37:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
224 ! ! |
|
225 |
|
226 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
|
227 |
|
228 hgRevert |
|
229 self hgExecuteCommand: 'revert' |
|
230 |
|
231 "Created: / 15-01-2013 / 09:23:38 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
232 ! ! |
|
233 |
|
234 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
|
235 |
129 hgStatus |
236 hgStatus |
130 self hgExecuteCommand: 'status' |
237 self hgExecuteCommand: 'status' |
131 |
238 |
132 "Modified: / 12-01-2013 / 12:09:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
239 "Modified: / 12-01-2013 / 12:09:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
240 ! ! |
|
241 |
|
242 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
|
243 |
|
244 hgUpdate |
|
245 self hgExecuteCommand: 'update' |
|
246 |
|
247 "Created: / 15-01-2013 / 09:23:03 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
248 ! ! |
|
249 |
|
250 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'! |
|
251 |
|
252 hgUpdateClean |
|
253 self hgExecuteCommand: 'update -C' objects: #() |
|
254 |
|
255 "Created: / 15-01-2013 / 09:23:19 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
133 ! ! |
256 ! ! |
134 |
257 |
135 !AbstractFileBrowser class methodsFor:'menu specs-scm'! |
258 !AbstractFileBrowser class methodsFor:'menu specs-scm'! |
136 |
259 |
137 hgMenu |
260 hgMenu |
168 ) |
291 ) |
169 (MenuItem |
292 (MenuItem |
170 label: '-' |
293 label: '-' |
171 ) |
294 ) |
172 (MenuItem |
295 (MenuItem |
|
296 label: 'Update' |
|
297 itemValue: hgUpdate |
|
298 ) |
|
299 (MenuItem |
|
300 label: 'Revert' |
|
301 itemValue: hgRevert |
|
302 ) |
|
303 (MenuItem |
|
304 label: 'Revert all Changes' |
|
305 itemValue: hgUpdateClean |
|
306 ) |
|
307 (MenuItem |
|
308 label: '-' |
|
309 ) |
|
310 (MenuItem |
173 enabled: hasHGWorkingCopySelected |
311 enabled: hasHGWorkingCopySelected |
174 label: 'Merge...' |
312 label: 'Merge...' |
175 submenuChannel: hgMenuMerge |
313 submenuChannel: hgMenuMerge |
176 labelImage: (ResourceRetriever HGIconLibrary merge 'Merge...') |
314 labelImage: (ResourceRetriever HGIconLibrary merge 'Merge...') |
177 ) |
315 ) |
178 (MenuItem |
316 (MenuItem |
|
317 label: 'Resolve' |
|
318 itemValue: hgResolve |
|
319 ) |
|
320 (MenuItem |
179 enabled: hasHGWorkingCopySelected |
321 enabled: hasHGWorkingCopySelected |
180 label: 'Show conflicts' |
322 label: 'Mark as Resolved' |
|
323 itemValue: hgResolveMark |
|
324 ) |
|
325 (MenuItem |
|
326 enabled: hasHGWorkingCopySelected |
|
327 label: 'Mark as Unresolved' |
|
328 itemValue: hgResolveUnmark |
|
329 ) |
|
330 (MenuItem |
|
331 label: '-' |
|
332 ) |
|
333 (MenuItem |
|
334 enabled: hasHGWorkingCopySelected |
|
335 label: 'Show Conflicts' |
181 itemValue: hgResolveList |
336 itemValue: hgResolveList |
182 ) |
337 ) |
183 (MenuItem |
338 (MenuItem |
184 label: 'Resolve conflicts' |
|
185 itemValue: hgResolve |
|
186 ) |
|
187 (MenuItem |
|
188 enabled: hasHGWorkingCopySelected |
339 enabled: hasHGWorkingCopySelected |
189 label: 'Mark as resolved' |
340 label: 'Show Unresolved' |
190 itemValue: hgResolveMark |
341 itemValue: hgResolveListUnresolved |
191 ) |
|
192 (MenuItem |
|
193 enabled: hasHGWorkingCopySelected |
|
194 label: 'Mark as unresolved' |
|
195 itemValue: hgResolveUnmark |
|
196 ) |
342 ) |
197 ) |
343 ) |
198 nil |
344 nil |
199 nil |
345 nil |
200 ) |
346 ) |