MCConflict.st
author Jan Vrany <jan.vrany@labware.com>
Tue, 11 Jul 2023 12:13:27 +0100
branchjv
changeset 1173 e3dd2050492e
parent 1095 87f223484bc3
permissions -rw-r--r--
Update class category to match package name if it does not This is needed because in Squeak / Pharo world package membership is defined by (class) category prefix. This is soo annoying...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1095
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 616
diff changeset
     1
"{ Encoding: utf8 }"
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 616
diff changeset
     2
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ Package: 'stx:goodies/monticello' }"
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
Object subclass:#MCConflict
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:'operation chooseRemote'
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
616
a188c0e99a82 category change
Claus Gittinger <cg@exept.de>
parents: 274
diff changeset
     9
	category:'SCM-Monticello-Merging'
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!MCConflict class methodsFor:'as yet unclassified'!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
operation: anOperation
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	^ self new operation: anOperation	
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
! !
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!MCConflict methodsFor:'as yet unclassified'!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
annotations
191
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
    22
	| op | 
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
    23
	^(op := operation) ifNotNil: [ op annotations ]
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
applyTo: anObject
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	self isResolved ifFalse: [self error: 'Cannot continue until this conflict has been resolved'].
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	self remoteChosen ifTrue: [operation applyTo: anObject].
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
chooseLocal
191
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
    32
	chooseRemote := false
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
chooseNewer
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	self isLocalNewer ifTrue: [ self chooseLocal ]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
		ifFalse: [ self isRemoteNewer ifTrue: [ self chooseRemote ]]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
chooseOlder
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	self isRemoteNewer ifTrue: [ self chooseLocal ]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
		ifFalse: [ self isLocalNewer ifTrue: [ self chooseRemote ]]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
chooseRemote
191
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
    46
	chooseRemote := true
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
clearChoice
191
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
    50
	chooseRemote := nil
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
definition
191
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
    54
	| op | 
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
    55
	^(op := operation) ifNotNil: [ op definition ]
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
isConflict
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	^true
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
isLocalNewer
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	^ self localDefinition fullTimeStamp > self remoteDefinition fullTimeStamp
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
isRemoteNewer
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	^ self localDefinition fullTimeStamp < self remoteDefinition fullTimeStamp
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
isResolved
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	^ chooseRemote notNil
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
localChosen
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
	^ chooseRemote notNil and: [chooseRemote not]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
localDefinition
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
	^ operation baseDefinition
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
operation
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	^ operation
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
operation: anOperation
191
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
    87
	operation := anOperation
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
remoteChosen
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
	^ chooseRemote notNil and: [chooseRemote]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
remoteDefinition
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
	^ operation targetDefinition
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
source
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
	^ self localChosen
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
		ifTrue: [operation fromSource]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
		ifFalse: [operation source]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
status
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
	^ self isResolved
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
		ifFalse: ['']
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
		ifTrue: [self remoteChosen
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
					ifFalse: ['L']
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
					ifTrue: ['R']]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
summary
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
	| attribute |
191
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
   114
	attribute := 
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
		self isResolved
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
			ifTrue: [self remoteChosen ifTrue: [#underlined] ifFalse: [#struckOut]]
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
			ifFalse: [#bold].
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
	^ Text string: operation summary attribute: (TextEmphasis perform: attribute)
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
! !
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
!MCConflict class methodsFor:'documentation'!
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
274
176217c3971f initial checkin
Claus Gittinger <cg@exept.de>
parents: 191
diff changeset
   123
version
616
a188c0e99a82 category change
Claus Gittinger <cg@exept.de>
parents: 274
diff changeset
   124
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCConflict.st,v 1.4 2012-09-11 21:21:04 cg Exp $'
274
176217c3971f initial checkin
Claus Gittinger <cg@exept.de>
parents: 191
diff changeset
   125
!
176217c3971f initial checkin
Claus Gittinger <cg@exept.de>
parents: 191
diff changeset
   126
191
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
   127
version_CVS
616
a188c0e99a82 category change
Claus Gittinger <cg@exept.de>
parents: 274
diff changeset
   128
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCConflict.st,v 1.4 2012-09-11 21:21:04 cg Exp $'
191
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
   129
!
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
   130
f8afcf4b6f29 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 44
diff changeset
   131
version_SVN
1095
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 616
diff changeset
   132
    ^ '§Id: MCConflict.st 17 2010-10-13 12:07:52Z vranyj1 §'
44
df9a9f28bad9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
! !