- Support for commit
authorvranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
Tue, 13 Nov 2012 11:06:16 +0000
changeset 39 10e693b3e034
parent 38 c3d02ed6a645
child 40 e3699c0b00f9
- Support for commit - Some work on parsing revision history - not yet finished
mercurial/HGCommand.st
mercurial/HGCommandParser.st
mercurial/HGCommit.st
mercurial/HGNodeId.st
mercurial/HGRevision.st
mercurial/HGTests.st
mercurial/HGWorkingCopy.st
mercurial/HGWorkingCopyFile.st
mercurial/Make.proto
mercurial/Make.spec
mercurial/abbrev.stc
mercurial/bc.mak
mercurial/libInit.cc
mercurial/mercurial.rc
mercurial/stx_libscm_mercurial.st
--- a/mercurial/HGCommand.st	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/HGCommand.st	Tue Nov 13 11:06:16 2012 +0000
@@ -15,7 +15,14 @@
 !
 
 HGCommand subclass:#commit
-	instanceVariableNames:''
+	instanceVariableNames:'message files'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:HGCommand
+!
+
+HGCommand subclass:#log
+	instanceVariableNames:'start stop'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:HGCommand
@@ -66,9 +73,9 @@
     "/ please change as required (and remove this comment)
 
     "/ HGExecutable := nil.
-    Debugging := false.
+    Debugging := OperatingSystem getLoginName = 'jv'.
 
-    "Modified: / 09-11-2012 / 11:50:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 12-11-2012 / 22:42:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGCommand class methodsFor:'accessing'!
@@ -101,6 +108,18 @@
     "Created: / 01-10-2012 / 00:09:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+commit
+    ^commit new
+
+    "Created: / 12-11-2012 / 22:40:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+log
+    ^log new
+
+    "Created: / 13-11-2012 / 09:00:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 push
     ^push new
 
@@ -326,12 +345,76 @@
     "Modified: / 01-10-2012 / 00:11:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!HGCommand::commit methodsFor:'accessing'!
+
+files
+    ^ files
+!
+
+files:something
+    files := something.
+!
+
+message
+    ^ message
+!
+
+message:something
+    message := something.
+! !
+
 !HGCommand::commit methodsFor:'private'!
 
+argumentsCommandOn:stream
+    "Called to get command specific options"
+
+    stream nextPut:'-m'; nextPut: message.
+    files notNil ifTrue:[
+        stream nextPutAll: files
+    ]
+
+    "Created: / 12-11-2012 / 22:38:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 parse:stream
     "superclass GitCommand says that I am responsible to implement this method"
 
-    ^ self shouldImplement
+    "Nothing to do"
+
+    "Modified: / 12-11-2012 / 22:38:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGCommand::log methodsFor:'private'!
+
+argumentsCommandOn:stream
+    "Called to get command specific options"
+
+    stream nextPut:'--rev'.
+    start isNil ifTrue:[
+        self error:'No start revision given'.
+        stop notNil ifTrue:[
+            stream nextPut:(start printString , ':' , stop printString)
+        ] ifFalse:[
+            stream nextPut:start
+        ].
+    ].
+
+
+    stream 
+        nextPut:'--debug';
+        nextPut:'--template';
+        nextPut:HGCommandParser templateLog.
+
+    "Created: / 13-11-2012 / 09:05:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parse: stream
+    "Parses output of 'hg' command, i.e. commit, log, update, checkout, 
+     etc."
+
+    ^ (HGCommandParser on: stream) parseCommandLog
+
+    "Created: / 13-11-2012 / 09:05:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGCommand::push methodsFor:'accessing'!
--- a/mercurial/HGCommandParser.st	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/HGCommandParser.st	Tue Nov 13 11:06:16 2012 +0000
@@ -11,9 +11,26 @@
 !HGCommandParser class methodsFor:'instance creation'!
 
 on: aStream
-    ^self new stream: aStream
+    ^self new stream: aStream readStream
 
     "Created: / 23-10-2012 / 11:07:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 13-11-2012 / 11:02:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGCommandParser class methodsFor:'templates'!
+
+templateLog
+    ^
+'{rev}:{node}
+{branch}
+{parents}
+{author}
+{date|isodate}
+{desc}
+**EOE**'
+
+    "Created: / 12-11-2012 / 23:06:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-11-2012 / 10:21:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGCommandParser methodsFor:'accessing'!
@@ -39,6 +56,154 @@
 
 !HGCommandParser methodsFor:'parsing'!
 
+parseDate
+    self shouldImplement
+
+    "Created: / 13-11-2012 / 10:22:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parseLog
+    "Parse output of 'hg log' command, assuming the template given
+     was HGCommandParser templateLog. Return a list of HGRevision."
+
+    | revs |
+
+    revs := OrderedCollection new.
+    [ stream atEnd ] whileFalse:[
+        | rev |
+
+        rev := self parseLogEntry.
+        revs add: rev.
+    ].
+
+    ^revs.
+
+    "Created: / 13-11-2012 / 09:46:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parseLogEntry
+    "Parse single revision entry, assuming the template given
+     was HGCommandParser templateLog. Return a HGRevision."
+
+    | rev line message |
+
+    rev := HGRevision new.
+    rev setId: self parseNodeId. self nextLineEnd.
+    rev setBranch: self nextLine.
+    rev setParent1Id: self parseNodeId. self nextSpace.
+    rev setParent2Id: self parseNodeId. self nextLineEnd.
+    rev setAuthor: self nextLine.
+    rev setDate: self parseDate. self nextLineEnd.
+    message := String streamContents:[:s|
+        [ line := self nextLine . line = '**EOE**' ] whileFalse:[
+            s nextPutLine: line
+        ].
+    ].
+    rev setMessage: message
+
+    "Created: / 13-11-2012 / 09:45:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parseNodeId
+    "Parses node id from stream and returns it. Support both,
+     short and full node ids"
+
+    | c c2 sign short revno hash |
+
+    stream peek == $- ifTrue:[        
+        stream next.
+        sign := -1.
+    ] ifFalse:[
+        sign := 1.
+    ].
+
+    "/ Read revno...
+    revno := 0.
+    [ (c := stream peek) == $: ] whileFalse:[
+        c isDigit ifFalse:[
+            self error:'Digit ([0-9]) expected but ', c , 'found'.
+        ].
+        revno := (revno * 10) + c digitValue.
+        stream next.
+    ].
+    stream next. "/eat :
+    revno := revno * sign.
+
+    "/ Read hash
+    hash := ByteArray new: 20.
+    short := true.
+    1 to: 6 do:[:i|
+        stream atEnd ifTrue:[
+            self error:'Unexpected end of stream, hex digit expected'.
+        ].
+        c := stream peek.
+        c isHexDigit ifFalse:[
+            self error:'Hex digit ([0-9a-z]) expected but ', c , ' found'.
+        ].
+        stream next.
+        stream atEnd ifTrue:[
+            self error:'Unexpected end of stream, hex digit expected'.
+        ].
+        c2 := stream peek.
+        c isHexDigit ifFalse:[
+            self error:'Hex digit ([0-9a-z]) expected but ', c , ' found'.
+        ].
+        hash at:i put: (c digitValue << 4) + c2 digitValue.
+        stream next.
+    ].
+    stream peek isHexDigit ifTrue:[
+        "/OK, full 40-char node id
+        short := false.
+        7 to: 20 do:[:i|
+            stream atEnd ifTrue:[
+                self error:'Unexpected end of stream, hex digit expected'.
+            ].
+                        c := stream peek.
+            c isHexDigit ifFalse:[
+                self error:'Hex digit ([0-9a-z]) expected but ', c , ' found'.
+            ].
+            stream next.
+            stream atEnd ifTrue:[
+                self error:'Unexpected end of stream, hex digit expected'.
+            ].
+            c2 := stream peek.
+            c isHexDigit ifFalse:[
+                self error:'Hex digit ([0-9a-z]) expected but ', c , ' found'.
+            ].
+            hash at:i put: (c digitValue << 4) + c2 digitValue.
+            stream next.
+        ].
+    ].
+    ^short ifTrue:[
+        self halt: 'Not yet supported'
+    ] ifFalse:[
+        (HGNodeId fromBytes: hash) revno: revno.
+    ]
+
+    "
+        (HGCommandParser on: '4:6f88e1f44d9eb86e0b56ca15e30e5d786acd83c7' readStream) parseNodeId
+
+        Bad ones:
+
+        (HGCommandParser on: '4:6f88e1f44d9eb86e0b56ca15e30e5d786acd' readStream) parseNodeId
+        (HGCommandParser on: '4:6f88Z1f44d9eb86e0b56ca15e30e5d786acd83c7' readStream) parseNodeId
+
+    "
+
+    "Created: / 13-11-2012 / 10:22:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGCommandParser methodsFor:'parsing - commands'!
+
+parseCommandLog
+    "Parse output of 'hg log' command, assuming the template given
+     was HGCommandParser templateLog. Return a list of HGRevision."
+
+    ^self parseLog
+
+    "Created: / 13-11-2012 / 09:09:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 parseCommandStatus
     | statusesAndPaths |
     statusesAndPaths := OrderedCollection new.
@@ -70,6 +235,15 @@
     "Modified: / 09-11-2012 / 12:02:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+nextLineEnd
+    | c |
+    ((c := stream next) ~= Character cr) ifTrue:[
+        self error:'New line expected. ''', c , ''' found!!'
+    ]
+
+    "Created: / 13-11-2012 / 10:17:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 nextSpace
     | c |
     ((c := stream next) ~= Character space) ifTrue:[
--- a/mercurial/HGCommit.st	Fri Nov 09 12:09:13 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-"{ Package: 'stx:libscm/mercurial' }"
-
-Object subclass:#HGCommit
-	instanceVariableNames:'id user timestamp files message parent1 parent2'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'SCM-Mercurial-Core'
-!
-
-
-!HGCommit class methodsFor:'instance creation'!
-
-new
-    "return an initialized instance"
-
-    ^ self basicNew initialize.
-! !
-
-!HGCommit methodsFor:'initialization'!
-
-initialize
-    "Invoked when a new instance is created."
-
-    "/ please change as required (and remove this comment)
-    "/ id := nil.
-    "/ user := nil.
-    "/ timestamp := nil.
-    "/ files := nil.
-    "/ message := nil.
-
-
-    "/ super initialize.   -- commented since inherited method does nothing
-
-    "Modified: / 19-10-2012 / 16:08:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!HGCommit class methodsFor:'documentation'!
-
-version_SVN
-    ^ '$Id::                                                                                                                        $'
-! !
--- a/mercurial/HGNodeId.st	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/HGNodeId.st	Tue Nov 13 11:06:16 2012 +0000
@@ -1,7 +1,7 @@
 "{ Package: 'stx:libscm/mercurial' }"
 
 ByteArray variableByteSubclass:#HGNodeId
-	instanceVariableNames:'NullId'
+	instanceVariableNames:'revno'
 	classVariableNames:'NullId'
 	poolDictionaries:''
 	category:'SCM-Mercurial-Core'
@@ -71,37 +71,54 @@
 
 null
     NullId isNil ifTrue:[
-	NullId := self new
+        NullId := self new.
+        NullId revno: -1
     ].
     ^NullId
 
+    "
+        HGNodeId null
+    "
+
     "Created: / 19-10-2012 / 15:51:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 13-11-2012 / 09:54:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGNodeId methodsFor:'accessing'!
+
+revno
+    ^ revno ? -2
+
+    "Created: / 13-11-2012 / 09:52:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+revno:anInteger
+    revno := anInteger.
 ! !
 
 !HGNodeId methodsFor:'printing & storing'!
 
 displayOn:aStream
-    "append a printed representation if the receiver to the argument, aStream"
+    ^self printOn: aStream
 
-    self hexPrintOn:aStream.
-
-    "Created: / 19-09-2012 / 00:34:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 13-11-2012 / 09:55:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 printOn:aStream
     "append a printed representation if the receiver to the argument, aStream"
 
+    | rn |
+
+    rn := self revno.
+    rn == -2 ifTrue:[
+        aStream nextPut:$?.
+    ] ifFalse:[
+        rn printOn: aStream.
+    ].
+    aStream nextPut: $:.
     self hexPrintOn:aStream.
 
-    "Modified: / 19-09-2012 / 00:32:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!HGNodeId methodsFor:'testing'!
-
-isGitOid
-    ^true
-
-    "Created: / 19-09-2012 / 13:59:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-11-2012 / 09:52:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGNodeId class methodsFor:'documentation'!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/HGRevision.st	Tue Nov 13 11:06:16 2012 +0000
@@ -0,0 +1,77 @@
+"{ Package: 'stx:libscm/mercurial' }"
+
+Object subclass:#HGRevision
+	instanceVariableNames:'id branch user timestamp message parent1 parent2'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SCM-Mercurial-Core'
+!
+
+
+!HGRevision class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
+!HGRevision methodsFor:'initialization'!
+
+initialize
+    "Invoked when a new instance is created."
+
+    "/ please change as required (and remove this comment)
+    "/ id := nil.
+    "/ user := nil.
+    "/ timestamp := nil.
+    "/ files := nil.
+    "/ message := nil.
+
+
+    "/ super initialize.   -- commented since inherited method does nothing
+
+    "Modified: / 19-10-2012 / 16:08:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setAuthor: aString
+    message := aString
+
+    "Created: / 13-11-2012 / 10:23:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setBranch: aString
+    branch := aString
+
+    "Created: / 13-11-2012 / 10:16:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setId: anHGNodeId
+    id := anHGNodeId
+
+    "Created: / 13-11-2012 / 10:08:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setMessage: aString
+    message := aString
+
+    "Created: / 13-11-2012 / 10:23:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setParent1Id: anHGNodeId
+    parent1 := anHGNodeId
+
+    "Created: / 13-11-2012 / 10:23:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setParent2Id: anHGNodeId
+    parent1 := anHGNodeId
+
+    "Created: / 13-11-2012 / 10:23:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGRevision class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id::                                                                                                                        $'
+! !
--- a/mercurial/HGTests.st	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/HGTests.st	Tue Nov 13 11:06:16 2012 +0000
@@ -89,8 +89,10 @@
 
     wc commit: 'test_01a commit 1'.
 
+    self assert: f1_txt isModified not.
+
     "Created: / 19-09-2012 / 23:06:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 09-11-2012 / 11:59:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 12-11-2012 / 22:41:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGTests class methodsFor:'documentation'!
--- a/mercurial/HGWorkingCopy.st	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/HGWorkingCopy.st	Tue Nov 13 11:06:16 2012 +0000
@@ -23,6 +23,29 @@
     ^ root
 ! !
 
+!HGWorkingCopy methodsFor:'actions'!
+
+commit: message
+    "Commits all uncommited changes with given message"
+
+    ^self commit: message files: nil
+
+    "Created: / 12-11-2012 / 22:35:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+commit: message files: files
+    "Commit given files with given message. If files
+     is nil, all tracked modified files are commited"
+
+    ^HGCommand commit
+        workingDirectory: root pathName;
+        message: message;
+        files: files;
+        execute
+
+    "Created: / 12-11-2012 / 22:36:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !HGWorkingCopy methodsFor:'initialization'!
 
 setRepository: aGitRepository
--- a/mercurial/HGWorkingCopyFile.st	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/HGWorkingCopyFile.st	Tue Nov 13 11:06:16 2012 +0000
@@ -18,6 +18,12 @@
 
 !HGWorkingCopyFile methodsFor:'accessing'!
 
+pathName
+    ^filename pathName
+
+    "Created: / 12-11-2012 / 22:43:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 pathNameRelative
     ^self == wc root
         ifTrue:[wc root pathName]
--- a/mercurial/Make.proto	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/Make.proto	Tue Nov 13 11:06:16 2012 +0000
@@ -144,12 +144,12 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)HGCommand.$(O) HGCommand.$(H): HGCommand.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGCommandParser.$(O) HGCommandParser.$(H): HGCommandParser.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)HGCommit.$(O) HGCommit.$(H): HGCommit.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGError.$(O) HGError.$(H): HGError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGNodeId.$(O) HGNodeId.$(H): HGNodeId.st $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepository.$(O) HGRepository.$(H): HGRepository.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepositoryError.$(O) HGRepositoryError.$(H): HGRepositoryError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepositoryObject.$(O) HGRepositoryObject.$(H): HGRepositoryObject.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)HGRevision.$(O) HGRevision.$(H): HGRevision.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGStatus.$(O) HGStatus.$(H): HGStatus.st $(INCLUDE_TOP)/stx/libbasic2/Singleton.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGWorkingCopyFile.$(O) HGWorkingCopyFile.$(H): HGWorkingCopyFile.st $(INCLUDE_TOP)/stx/libscm/git/GitStatusCodes.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)stx_libscm_mercurial.$(O) stx_libscm_mercurial.$(H): stx_libscm_mercurial.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/mercurial/Make.spec	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/Make.spec	Tue Nov 13 11:06:16 2012 +0000
@@ -59,11 +59,11 @@
 	stx_libscm_mercurial \
 	HGBranch \
 	HGWorkingCopy \
-	HGCommit \
 	HGNodeId \
 	HGStatus \
 	HGError \
 	HGCommandError \
+	HGRevision \
 
 
 
@@ -78,11 +78,11 @@
     $(OUTDIR)stx_libscm_mercurial.$(O) \
     $(OUTDIR)HGBranch.$(O) \
     $(OUTDIR)HGWorkingCopy.$(O) \
-    $(OUTDIR)HGCommit.$(O) \
     $(OUTDIR)HGNodeId.$(O) \
     $(OUTDIR)HGStatus.$(O) \
     $(OUTDIR)HGError.$(O) \
     $(OUTDIR)HGCommandError.$(O) \
+    $(OUTDIR)HGRevision.$(O) \
 
 
 
--- a/mercurial/abbrev.stc	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/abbrev.stc	Tue Nov 13 11:06:16 2012 +0000
@@ -12,8 +12,8 @@
 stx_libscm_mercurial stx_libscm_mercurial stx:libscm/mercurial '* Projects & Packages *' 3
 HGBranch HGBranch stx:libscm/mercurial 'SCM-Mercurial-Core' 0
 HGWorkingCopy HGWorkingCopy stx:libscm/mercurial 'SCM-Mercurial-Core' 0
-HGCommit HGCommit stx:libscm/mercurial 'SCM-Mercurial-Core' 0
 HGNodeId HGNodeId stx:libscm/mercurial 'SCM-Mercurial-Core' 0
 HGStatus HGStatus stx:libscm/mercurial 'SCM-Mercurial-Core' 1
 HGError HGError stx:libscm/mercurial 'SCM-Mercurial-Core' 1
 HGCommandError HGCommandError stx:libscm/mercurial 'SCM-Mercurial-Core' 1
+HGRevision HGRevision stx:libscm/mercurial 'SCM-Mercurial-Core' 0
--- a/mercurial/bc.mak	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/bc.mak	Tue Nov 13 11:06:16 2012 +0000
@@ -80,12 +80,12 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)HGCommand.$(O) HGCommand.$(H): HGCommand.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGCommandParser.$(O) HGCommandParser.$(H): HGCommandParser.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)HGCommit.$(O) HGCommit.$(H): HGCommit.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGError.$(O) HGError.$(H): HGError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGNodeId.$(O) HGNodeId.$(H): HGNodeId.st $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepository.$(O) HGRepository.$(H): HGRepository.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepositoryError.$(O) HGRepositoryError.$(H): HGRepositoryError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepositoryObject.$(O) HGRepositoryObject.$(H): HGRepositoryObject.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)HGRevision.$(O) HGRevision.$(H): HGRevision.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGStatus.$(O) HGStatus.$(H): HGStatus.st $(INCLUDE_TOP)\stx\libbasic2\Singleton.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGWorkingCopyFile.$(O) HGWorkingCopyFile.$(H): HGWorkingCopyFile.st $(INCLUDE_TOP)\stx\libscm\git\GitStatusCodes.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)stx_libscm_mercurial.$(O) stx_libscm_mercurial.$(H): stx_libscm_mercurial.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/mercurial/libInit.cc	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/libInit.cc	Tue Nov 13 11:06:16 2012 +0000
@@ -29,12 +29,12 @@
 __BEGIN_PACKAGE2__("libstx_libscm_mercurial", _libstx_libscm_mercurial_Init, "stx:libscm/mercurial");
 _HGCommand_Init(pass,__pRT__,snd);
 _HGCommandParser_Init(pass,__pRT__,snd);
-_HGCommit_Init(pass,__pRT__,snd);
 _HGError_Init(pass,__pRT__,snd);
 _HGNodeId_Init(pass,__pRT__,snd);
 _HGRepository_Init(pass,__pRT__,snd);
 _HGRepositoryError_Init(pass,__pRT__,snd);
 _HGRepositoryObject_Init(pass,__pRT__,snd);
+_HGRevision_Init(pass,__pRT__,snd);
 _HGStatus_Init(pass,__pRT__,snd);
 _HGWorkingCopyFile_Init(pass,__pRT__,snd);
 _stx_137libscm_137mercurial_Init(pass,__pRT__,snd);
--- a/mercurial/mercurial.rc	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/mercurial.rc	Tue Nov 13 11:06:16 2012 +0000
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libscm_mercurial.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,38,38
+  FILEVERSION     6,2,0,1
   PRODUCTVERSION  6,2,3,1
 #if (__BORLANDC__)
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
@@ -20,12 +20,12 @@
     BEGIN
       VALUE "CompanyName", "eXept Software AG\0"
       VALUE "FileDescription", "Smalltalk/X Class library (LIB)\0"
-      VALUE "FileVersion", "6.2.38.38\0"
+      VALUE "FileVersion", "6.2.0.1\0"
       VALUE "InternalName", "stx:libscm/mercurial\0"
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 1998-2012\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.3.1\0"
-      VALUE "ProductDate", "Fri, 09 Nov 2012 12:11:30 GMT\0"
+      VALUE "ProductDate", "Tue, 13 Nov 2012 11:08:02 GMT\0"
     END
 
   END
--- a/mercurial/stx_libscm_mercurial.st	Fri Nov 09 12:09:13 2012 +0000
+++ b/mercurial/stx_libscm_mercurial.st	Tue Nov 13 11:06:16 2012 +0000
@@ -29,7 +29,7 @@
     ^ #(
         #'stx:goodies/sunit'    "TestResource - superclass of HGRepositoriesResource "
         #'stx:libbasic'    "ProjectDefinition - superclass of stx_libscm_mercurial "
-        #'stx:libbasic2'    "Singleton - superclass of HGStatus::Clean "
+        #'stx:libbasic2'    "Singleton - superclass of HGStatus::Added "
         #'stx:libscm/git'    "GitSignature - referenced by HGTests>>performTest "
     )
 ! !
@@ -55,11 +55,11 @@
         #'stx_libscm_mercurial'
         HGBranch
         HGWorkingCopy
-        HGCommit
         HGNodeId
         HGStatus
         HGError
         HGCommandError
+        HGRevision
     )
 !