MCMergeRecord.st
author Claus Gittinger <cg@exept.de>
Thu, 08 Mar 2018 00:48:11 +0100
changeset 1039 88f5b1106042
parent 640 9b0140e0627b
permissions -rw-r--r--
#BUGFIX by cg class: MCSnapshot changed: #asChangeSet don't loose comment changes

"{ Package: 'stx:goodies/monticello' }"

Object subclass:#MCMergeRecord
	instanceVariableNames:'version packageSnapshot ancestorInfo ancestor ancestorSnapshot
		imagePatch mergePatch'
	classVariableNames:''
	poolDictionaries:''
	category:'SCM-Monticello-Versioning'
!


!MCMergeRecord class methodsFor:'as yet unclassified'!

version: aVersion
	^ self basicNew initializeWithVersion: aVersion
! !

!MCMergeRecord methodsFor:'as yet unclassified'!

ancestorInfo
	^ ancestorInfo ifNil: [ancestorInfo _ version info commonAncestorWith: version workingCopy ancestry]
!

ancestorSnapshot
	^ ancestorSnapshot ifNil: [ancestorSnapshot _ version workingCopy findSnapshotWithVersionInfo: self ancestorInfo]
!

imageIsClean
	| ancestors |
	ancestors _ version workingCopy ancestors.
	^ ancestors size = 1
		and: [ancestors first = self ancestorInfo]	
		and: [self imagePatch isEmpty]
!

imagePatch
	^ imagePatch ifNil: [imagePatch _ self packageSnapshot patchRelativeToBase: self ancestorSnapshot]
!

initializeWithVersion: aVersion
	version _ aVersion
!

isAncestorMerge
	^ version workingCopy ancestry hasAncestor: version info
!

mergePatch
	^ mergePatch ifNil: [mergePatch _ version snapshot patchRelativeToBase: self ancestorSnapshot]
!

packageSnapshot
	^ packageSnapshot ifNil: [packageSnapshot _ version package snapshot]
!

updateWorkingCopy
	self isAncestorMerge ifFalse:
		[self imageIsClean
			ifTrue: [version workingCopy loaded: version]
			ifFalse: [version workingCopy merged: version]]
!

version
	^ version
! !

!MCMergeRecord class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCMergeRecord.st,v 1.2 2012-09-11 21:23:10 cg Exp $'
! !