author | Claus Gittinger <cg@exept.de> |
Mon, 26 Oct 2009 18:54:19 +0100 | |
changeset 155 | c7a154a5ff3e |
parent 65 | 99f7b2e2fe1f |
child 193 | 910cb9414852 |
permissions | -rw-r--r-- |
65 | 1 |
"{ Package: 'stx:goodies/monticello' }" |
2 |
||
3 |
Object subclass:#MCPatch |
|
4 |
instanceVariableNames:'operations' |
|
5 |
classVariableNames:'' |
|
6 |
poolDictionaries:'' |
|
7 |
category:'Monticello-Patching' |
|
8 |
! |
|
9 |
||
10 |
||
11 |
!MCPatch class methodsFor:'as yet unclassified'! |
|
12 |
||
13 |
fromBase: baseSnapshot target: targetSnapshot |
|
14 |
^ self new initializeWithBase: baseSnapshot target: targetSnapshot |
|
15 |
! |
|
16 |
||
17 |
operations: aCollection |
|
18 |
^ self basicNew initializeWithOperations: aCollection |
|
19 |
! ! |
|
20 |
||
21 |
!MCPatch methodsFor:'accessing'! |
|
22 |
||
23 |
operations |
|
24 |
^ operations |
|
25 |
! ! |
|
26 |
||
27 |
!MCPatch methodsFor:'applying'! |
|
28 |
||
29 |
applyTo: anObject |
|
30 |
operations do: [:ea | ea applyTo: anObject]. |
|
31 |
! ! |
|
32 |
||
33 |
!MCPatch methodsFor:'intializing'! |
|
34 |
||
35 |
initializeWithBase: baseSnapshot target: targetSnapshot |
|
155
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
36 |
| base target | |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
37 |
operations _ OrderedCollection new. |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
38 |
base _ MCDefinitionIndex definitions: baseSnapshot definitions. |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
39 |
target _ MCDefinitionIndex definitions: targetSnapshot definitions. |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
40 |
|
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
41 |
Smalltalk isSmalltalkX ifTrue:[ |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
42 |
target definitions do: |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
43 |
[:t | |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
44 |
base |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
45 |
definitionLike: t |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
46 |
ifPresent: [:b | (b isSameRevisionAs: t) ifFalse: [operations add: (MCModification of: b to: t)]] |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
47 |
ifAbsent: [operations add: (MCAddition of: t)]]. |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
48 |
] ifFalse:[ |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
49 |
target definitions do: |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
50 |
[:t | |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
51 |
base |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
52 |
definitionLike: t |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
53 |
ifPresent: [:b | (b isSameRevisionAs: t) ifFalse: [operations add: (MCModification of: b to: t)]] |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
54 |
ifAbsent: [operations add: (MCAddition of: t)]] |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
55 |
displayingProgress: 'Diffing...'. |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
56 |
]. |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
57 |
base definitions do: |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
58 |
[:b | |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
59 |
target |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
60 |
definitionLike: b |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
61 |
ifPresent: [:t] |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
62 |
ifAbsent: [operations add: (MCRemoval of: b)]] |
65 | 63 |
! |
64 |
||
65 |
initializeWithOperations: aCollection |
|
66 |
operations _ aCollection |
|
67 |
! ! |
|
68 |
||
69 |
!MCPatch methodsFor:'querying'! |
|
70 |
||
71 |
isEmpty |
|
72 |
^ operations isEmpty |
|
73 |
! ! |
|
74 |
||
75 |
!MCPatch methodsFor:'ui'! |
|
76 |
||
77 |
browse |
|
78 |
^ (MCPatchBrowser forPatch: self) show |
|
79 |
! ! |
|
80 |
||
81 |
!MCPatch class methodsFor:'documentation'! |
|
82 |
||
83 |
version |
|
155
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
84 |
^ '$Header: /cvs/stx/stx/goodies/monticello/MCPatch.st,v 1.2 2009-10-26 17:54:19 cg Exp $' |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
85 |
! |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
86 |
|
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
87 |
version_CVS |
c7a154a5ff3e
changed: #initializeWithBase:target:
Claus Gittinger <cg@exept.de>
parents:
65
diff
changeset
|
88 |
^ '$Header: /cvs/stx/stx/goodies/monticello/MCPatch.st,v 1.2 2009-10-26 17:54:19 cg Exp $' |
65 | 89 |
! ! |