Added HGChangesetList, a pluggable component to display list of changesets.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Tue, 11 Mar 2014 22:13:44 +0000
changeset 398 65dc8645e496
parent 395 fc0607653d8a
child 399 abafe12d47d6
Added HGChangesetList, a pluggable component to display list of changesets. It takes a repository and a revset and displays all changesets. Selected changeset is kept in a holder.
mercurial/HGChangeset.st
mercurial/HGChangesetList.st
mercurial/HGRepository.st
mercurial/Make.proto
mercurial/Make.spec
mercurial/abbrev.stc
mercurial/bc.mak
mercurial/extensions.st
mercurial/libInit.cc
mercurial/mercurial.rc
mercurial/stx_libscm_mercurial.st
--- a/mercurial/HGChangeset.st	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/HGChangeset.st	Tue Mar 11 22:13:44 2014 +0000
@@ -19,8 +19,8 @@
 "{ Package: 'stx:libscm/mercurial' }"
 
 HGRepositoryObject subclass:#HGChangeset
-	instanceVariableNames:'lazy id branches bookmarks author timestamp message parent1
-		parent2 root changes'
+	instanceVariableNames:'lazy id branches bookmarks author timestamp message summary
+		parent1 parent2 root changes'
 	classVariableNames:'NullChangeset'
 	poolDictionaries:''
 	category:'SCM-Mercurial-Core'
@@ -242,6 +242,15 @@
     "Modified: / 16-12-2012 / 00:35:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+summary
+    summary isNil ifTrue:[ 
+        summary := self message readStream nextLine.
+    ].
+    ^ summary
+
+    "Created: / 11-03-2014 / 21:33:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 timestamp
     self ensureNotLazy.
     ^ timestamp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/HGChangesetList.st	Tue Mar 11 22:13:44 2014 +0000
@@ -0,0 +1,517 @@
+"
+stx:libscm - a new source code management library for Smalltalk/X
+Copyright (C) 2012-2013 Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License. 
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+"
+"{ Package: 'stx:libscm/mercurial' }"
+
+ApplicationModel subclass:#HGChangesetList
+	instanceVariableNames:'repositoryHolder revsetHolder changesetList changesetHolder
+		changesetIndexHolder'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SCM-Mercurial-StX-Interface'
+!
+
+Object subclass:#ListEntry
+	instanceVariableNames:'changeset'
+	classVariableNames:'PaddingLeft PaddingRight PaddingTop PaddingBottom'
+	poolDictionaries:''
+	privateIn:HGChangesetList
+!
+
+!HGChangesetList class methodsFor:'documentation'!
+
+copyright
+"
+stx:libscm - a new source code management library for Smalltalk/X
+Copyright (C) 2012-2013 Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License. 
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+"
+! !
+
+!HGChangesetList class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:HGChangesetList andSelector:#windowSpec
+     HGChangesetList new openInterface:#windowSpec
+     HGChangesetList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'HG Changeset List'
+         name: 'HG Changeset List'
+         min: (Point 10 10)
+         bounds: (Rectangle 0 0 300 300)
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (SelectionInListModelViewSpec
+             name: 'SelectionInListModelView1'
+             layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+             model: changesetIndexHolder
+             hasHorizontalScrollBar: true
+             hasVerticalScrollBar: true
+             listModel: changesetList
+             highlightMode: line
+           )
+          )
+        
+       )
+     )
+! !
+
+!HGChangesetList methodsFor:'accessing'!
+
+repository
+    ^ self repositoryHolder value
+
+    "Created: / 11-03-2014 / 20:54:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+repository: anHGRepository
+    self repositoryHolder value: anHGRepository
+
+    "Created: / 11-03-2014 / 20:54:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+revset
+    ^ self revsetHolder value
+
+    "Created: / 11-03-2014 / 20:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+revset: anHGRevset
+    ^ self revsetHolder value: anHGRevset
+
+    "Created: / 11-03-2014 / 20:55:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGChangesetList methodsFor:'aspects'!
+
+changesetHolder
+    "return/create the 'changesetHolder' value holder (automatically generated)"
+
+    changesetHolder isNil ifTrue:[
+        changesetHolder := ValueHolder new.
+        changesetHolder addDependent:self.
+    ].
+    ^ changesetHolder
+!
+
+changesetHolder:something
+    "set the 'changesetHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    changesetHolder notNil ifTrue:[
+        oldValue := changesetHolder value.
+        changesetHolder removeDependent:self.
+    ].
+    changesetHolder := something.
+    changesetHolder notNil ifTrue:[
+        changesetHolder addDependent:self.
+    ].
+    newValue := changesetHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:changesetHolder.
+    ].
+!
+
+changesetIndexHolder
+    "return/create the 'changesetIndexHolder' value holder (automatically generated)"
+
+    changesetIndexHolder isNil ifTrue:[
+        changesetIndexHolder := ValueHolder new.
+        changesetIndexHolder addDependent:self.
+    ].
+    ^ changesetIndexHolder
+!
+
+changesetIndexHolder:something
+    "set the 'changesetIndexHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    changesetIndexHolder notNil ifTrue:[
+        oldValue := changesetIndexHolder value.
+        changesetIndexHolder removeDependent:self.
+    ].
+    changesetIndexHolder := something.
+    changesetIndexHolder notNil ifTrue:[
+        changesetIndexHolder addDependent:self.
+    ].
+    newValue := changesetIndexHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:changesetIndexHolder.
+    ].
+!
+
+changesetList
+    changesetList isNil ifTrue:[
+        changesetList := List new.
+    ].
+    ^ changesetList
+
+    "Modified: / 11-03-2014 / 20:26:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+repositoryHolder
+    "return/create the 'repositoryHolder' value holder (automatically generated)"
+
+    repositoryHolder isNil ifTrue:[
+        repositoryHolder := ValueHolder new.
+        repositoryHolder addDependent:self.
+    ].
+    ^ repositoryHolder
+!
+
+repositoryHolder:something
+    "set the 'repositoryHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    repositoryHolder notNil ifTrue:[
+        oldValue := repositoryHolder value.
+        repositoryHolder removeDependent:self.
+    ].
+    repositoryHolder := something.
+    repositoryHolder notNil ifTrue:[
+        repositoryHolder addDependent:self.
+    ].
+    newValue := repositoryHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:repositoryHolder.
+    ].
+!
+
+revsetHolder
+    "return/create the 'revsetHolder' value holder (automatically generated)"
+
+    revsetHolder isNil ifTrue:[
+        revsetHolder := ValueHolder new.
+        revsetHolder addDependent:self.
+    ].
+    ^ revsetHolder
+!
+
+revsetHolder:something
+    "set the 'revsetHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    revsetHolder notNil ifTrue:[
+        oldValue := revsetHolder value.
+        revsetHolder removeDependent:self.
+    ].
+    revsetHolder := something.
+    revsetHolder notNil ifTrue:[
+        revsetHolder addDependent:self.
+    ].
+    newValue := revsetHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:revsetHolder.
+    ].
+! !
+
+!HGChangesetList methodsFor:'change & update'!
+
+delayedUpdate: aspect with: param from: sender 
+
+    sender == repositoryHolder ifTrue:[
+        self updateList.
+    ].
+
+    sender == revsetHolder ifTrue:[ 
+        self updateList.
+    ].
+    super delayedUpdate:aspect with:param from:sender
+
+    "Created: / 11-03-2014 / 20:34:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+update:aspect with:param from:sender
+    "Invoked when an object that I depend upon sends a change notification."
+
+    sender == repositoryHolder ifTrue:[ 
+        self delayedUpdate: aspect with: param from: sender 
+    ].
+    sender == revsetHolder ifTrue:[ 
+        self delayedUpdate: aspect with: param from: sender 
+    ].
+
+    sender == changesetIndexHolder ifTrue:[ 
+        self updateAfterChangesetIndexHolderChanged.
+    ].
+    sender == changesetHolder ifTrue:[ 
+        self updateAfterChangesetHolderChanged.
+    ].
+
+
+    super update:aspect with:param from:sender
+
+    "Modified: / 11-03-2014 / 20:29:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateAfterChangesetHolderChanged
+    | index changeset |
+
+    changeset := changesetHolder value.
+    index  :=(changeset notNil) 
+                    ifTrue:[ self changesetList findFirst: [:e | e changeset = changeset ] ifNone:[ nil ] ]
+                    ifFalse:[ nil ].
+    self changesetIndexHolder 
+        removeDependent: self;
+        value: index;
+        addDependent: self.
+
+    "Created: / 11-03-2014 / 20:29:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateAfterChangesetIndexHolderChanged
+    | index changeset |
+
+    index := changesetIndexHolder value.
+    changeset :=(index notNil and:[ index ~~ 0 ]) 
+                    ifTrue:[ (self changesetList at: index) changeset  ]
+                    ifFalse:[ nil ].
+    self changesetHolder 
+        removeDependent: self;
+        value: changeset;
+        addDependent: self.
+
+    "Created: / 11-03-2014 / 20:29:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateList
+    self changesetList removeAll.
+    self updateList1.
+
+    "Created: / 11-03-2014 / 20:34:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateList1
+    self updateListWithLimit: 10.
+    self window sensor pushUserEvent: #updateList2 for: self.
+
+    "Created: / 11-03-2014 / 20:36:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateList2
+    self updateListWithLimit: nil
+
+    "Created: / 11-03-2014 / 20:38:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateListWithLimit:limitOrNil
+    | repository revset changesets entries |
+
+    repository := self repositoryHolder value.
+    repository isNil ifTrue:[
+        ^ self.
+    ].
+    revset := self revsetHolder value.
+    revset isNil ifTrue:[ 
+        ^ self.
+    ].
+    changesets := repository log: revset limit: limitOrNil.
+    entries := changesets collect:[:e | ListEntry new changeset: e ].
+    self changesetList. "/ make sure it's initialized.
+
+    (entries size > changesetList size and:[entries startsWith: changesetList]) ifTrue:[ 
+        changesetList addAll: entries from: changesetList size + 1 to: entries size beforeIndex: changesetList size + 1
+    ] ifFalse:[ 
+        changesetList notEmpty ifTrue:[ 
+            changesetList removeAll.
+        ].
+        changesetList addAll: entries from: 1 to: entries size beforeIndex: 1
+    ].
+
+    "Created: / 11-03-2014 / 20:37:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGChangesetList::ListEntry class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    "/ please change as required (and remove this comment)
+
+    PaddingLeft := 3.
+    PaddingRight := 3.
+    PaddingTop := 3.
+    PaddingBottom := 3.
+
+    "Modified: / 11-03-2014 / 21:27:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGChangesetList::ListEntry methodsFor:'accessing'!
+
+changeset
+    ^ changeset
+!
+
+changeset:anHGChangeset
+    changeset := anHGChangeset.
+! !
+
+!HGChangesetList::ListEntry methodsFor:'accessing - presentation'!
+
+authorString
+    ^ changeset author
+
+    "Created: / 11-03-2014 / 21:49:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changesetString
+    ^ changeset id asString
+!
+
+dateString
+    ^ changeset timestamp printString
+
+    "Created: / 11-03-2014 / 21:48:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parentsString
+    "raise an error: this method should be implemented (TODO)"
+
+    | p1 p2 |
+
+    p1 := changeset parent1.
+    p1 isNil ifTrue:[ 
+        ^ HGChangesetId null printString.
+    ].
+
+    p2 := changeset parent2.
+    ^ p2 isNil ifTrue:[ 
+        p1 id asString.
+    ] ifFalse:[ 
+        p1 id asString , ', ' , p2 id asString.
+    ].
+
+    "Created: / 11-03-2014 / 21:52:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+summaryString
+    ^ changeset summary
+
+    "Created: / 11-03-2014 / 21:49:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGChangesetList::ListEntry methodsFor:'comparing'!
+
+= another
+    ^ changeset = another changeset
+
+    "Created: / 11-03-2014 / 21:18:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hash
+    ^ changeset hash
+
+    "Created: / 11-03-2014 / 21:18:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGChangesetList::ListEntry methodsFor:'displaying'!
+
+displayOn:aGC x:x0 y:y0 
+    | x  y  lineH  labelW  resources |
+
+    resources := HGChangesetList resources.
+    lineH := ((aGC font onDevice:aGC device) height * 1.2) rounded.
+    labelW := (aGC widthOfString:(resources string:'changeset')) + 30. "px"
+    x := x0 + PaddingLeft.
+    y := y0 + PaddingTop.
+
+    (resources string:'changeset') displayOn: aGC x:x          y:y.               
+    self changesetString           displayOn: aGC x:x + labelW y:y.
+    y := y + lineH.
+    "/ Make the rest bit indented so it's easy to
+    "/ find beggining of next entry...
+    x := x + 10.
+    labelW := labelW - 10.
+
+
+    (resources string:'user')      displayOn: aGC x:x          y:y.               
+    self authorString              displayOn: aGC x:x + labelW y:y.
+    y := y + lineH.
+
+    (resources string:'date')      displayOn: aGC x:x          y:y.               
+    self dateString                displayOn: aGC x:x + labelW y:y.
+    y := y + lineH.
+
+    changeset parent2 isNil ifTrue:[ 
+        (resources string:'parent')  displayOn: aGC x:x          y:y.           
+    ] ifFalse:[ 
+        (resources string:'parents') displayOn: aGC x:x          y:y.           
+    ].
+    self parentsString               displayOn: aGC x:x + labelW y:y.
+    y := y + lineH.
+
+    (resources string:'summary')  displayOn: aGC x:x          y:y.               
+    self summaryString            displayOn: aGC x:x + labelW y:y.
+    y := y + lineH.
+
+    "Created: / 11-03-2014 / 21:36:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+heightOn:aGC
+    | fontH lineH |
+
+    fontH := (aGC font onDevice:aGC device) height.
+    lineH := (fontH * 1.2) rounded.
+    "
+     changeset
+     user:
+     date:
+     parents:
+     summary:
+     "
+     ^ (lineH * 5) + PaddingTop + PaddingRight.
+
+    "Created: / 11-03-2014 / 21:29:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+HGChangesetList::ListEntry initialize!
--- a/mercurial/HGRepository.st	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/HGRepository.st	Tue Mar 11 22:13:44 2014 +0000
@@ -664,6 +664,7 @@
     csets collect:[ :cset |
         | existing |
 
+        cset setRepository: repository.  
         existing := changesets at: cset id ifAbsent:[ nil ].
         existing isNil ifTrue:[ 
             cset setRepository: repository .
@@ -678,7 +679,7 @@
     ^ csets
 
     "Created: / 07-02-2014 / 13:11:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 08-02-2014 / 22:34:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 11-03-2014 / 21:57:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGRepository::Changesets methodsFor:'initialization'!
--- a/mercurial/Make.proto	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/Make.proto	Tue Mar 11 22:13:44 2014 +0000
@@ -141,10 +141,10 @@
 	cd ../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../common && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libtool && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../common && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 
 
 
@@ -170,6 +170,7 @@
 $(OUTDIR)HGChange.$(O) HGChange.$(H): HGChange.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGChangesetFile.$(O) HGChangesetFile.$(H): HGChangesetFile.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGChangesetId.$(O) HGChangesetId.$(H): HGChangesetId.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
+$(OUTDIR)HGChangesetList.$(O) HGChangesetList.$(H): HGChangesetList.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)HGCommandParser.$(O) HGCommandParser.$(H): HGCommandParser.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGCommitDialog.$(O) HGCommitDialog.$(H): HGCommitDialog.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractCommitDialog.$(H) $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(STCHDR)
 $(OUTDIR)HGCommitTask.$(O) HGCommitTask.$(H): HGCommitTask.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractCommitTask.$(H) $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractFileoutLikeTask.$(H) $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractTask.$(H) $(STCHDR)
@@ -206,11 +207,11 @@
 $(OUTDIR)HGWorkingCopy.$(O) HGWorkingCopy.$(H): HGWorkingCopy.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libscm/mercurial/HGRepositoryObject.$(H) $(STCHDR)
 $(OUTDIR)HGCommandParseError.$(O) HGCommandParseError.$(H): HGCommandParseError.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) $(INCLUDE_TOP)/stx/libscm/mercurial/HGCommandError.$(H) $(INCLUDE_TOP)/stx/libscm/mercurial/HGError.$(H) $(STCHDR)
 $(OUTDIR)HGInvalidExecutableError.$(O) HGInvalidExecutableError.$(H): HGInvalidExecutableError.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) $(INCLUDE_TOP)/stx/libscm/mercurial/HGCommandError.$(H) $(INCLUDE_TOP)/stx/libscm/mercurial/HGError.$(H) $(STCHDR)
-$(OUTDIR)HGUnknownRevisionError.$(O) HGUnknownRevisionError.$(H): HGUnknownRevisionError.st $(INCLUDE_TOP)/stx/libscm/mercurial/HGRepositoryError.$(H) $(INCLUDE_TOP)/stx/libscm/mercurial/HGError.$(H) $(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)HGInvalidVersionError.$(O) HGInvalidVersionError.$(H): HGInvalidVersionError.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) $(INCLUDE_TOP)/stx/libscm/mercurial/HGCommandError.$(H) $(INCLUDE_TOP)/stx/libscm/mercurial/HGError.$(H) $(STCHDR)
 $(OUTDIR)HGPushError.$(O) HGPushError.$(H): HGPushError.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) $(INCLUDE_TOP)/stx/libscm/mercurial/HGError.$(H) $(INCLUDE_TOP)/stx/libscm/mercurial/HGRepositoryError.$(H) $(STCHDR)
+$(OUTDIR)HGUnknownRevisionError.$(O) HGUnknownRevisionError.$(H): HGUnknownRevisionError.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) $(INCLUDE_TOP)/stx/libscm/mercurial/HGError.$(H) $(INCLUDE_TOP)/stx/libscm/mercurial/HGRepositoryError.$(H) $(STCHDR)
 $(OUTDIR)HGPushWouldCreateNewHeadError.$(O) HGPushWouldCreateNewHeadError.$(H): HGPushWouldCreateNewHeadError.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) $(INCLUDE_TOP)/stx/libscm/mercurial/HGError.$(H) $(INCLUDE_TOP)/stx/libscm/mercurial/HGPushError.$(H) $(INCLUDE_TOP)/stx/libscm/mercurial/HGRepositoryError.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/Annotation.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ConfigurableFeatures.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractFileBrowser.$(H) $(INCLUDE_TOP)/stx/libtool/SystemBrowser.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NewSystemBrowser.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/Annotation.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ConfigurableFeatures.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractFileBrowser.$(H) $(INCLUDE_TOP)/stx/libtool/SystemBrowser.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NewSystemBrowser.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/mercurial/Make.spec	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/Make.spec	Tue Mar 11 22:13:44 2014 +0000
@@ -56,6 +56,7 @@
 	HGChange \
 	HGChangesetFile \
 	HGChangesetId \
+	HGChangesetList \
 	HGCommandParser \
 	HGCommitDialog \
 	HGCommitTask \
@@ -107,6 +108,7 @@
     $(OUTDIR_SLASH)HGChange.$(O) \
     $(OUTDIR_SLASH)HGChangesetFile.$(O) \
     $(OUTDIR_SLASH)HGChangesetId.$(O) \
+    $(OUTDIR_SLASH)HGChangesetList.$(O) \
     $(OUTDIR_SLASH)HGCommandParser.$(O) \
     $(OUTDIR_SLASH)HGCommitDialog.$(O) \
     $(OUTDIR_SLASH)HGCommitTask.$(O) \
--- a/mercurial/abbrev.stc	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/abbrev.stc	Tue Mar 11 22:13:44 2014 +0000
@@ -7,6 +7,7 @@
 HGChange HGChange stx:libscm/mercurial 'SCM-Mercurial-Core' 0
 HGChangesetFile HGChangesetFile stx:libscm/mercurial 'SCM-Mercurial-Core' 0
 HGChangesetId HGChangesetId stx:libscm/mercurial 'SCM-Mercurial-Core' 0
+HGChangesetList HGChangesetList stx:libscm/mercurial 'SCM-Mercurial-StX-Interface' 1
 HGCommandParser HGCommandParser stx:libscm/mercurial 'SCM-Mercurial-Internal' 0
 HGCommandParserTests HGCommandParserTests stx:libscm/mercurial 'SCM-Mercurial-Tests' 1
 HGCommitDialog HGCommitDialog stx:libscm/mercurial 'SCM-Mercurial-StX-Interface' 1
--- a/mercurial/bc.mak	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/bc.mak	Tue Mar 11 22:13:44 2014 +0000
@@ -64,10 +64,10 @@
 	pushd ..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\common & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libwidg2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libtool & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\common & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
 
@@ -101,6 +101,7 @@
 $(OUTDIR)HGChange.$(O) HGChange.$(H): HGChange.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGChangesetFile.$(O) HGChangesetFile.$(H): HGChangesetFile.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGChangesetId.$(O) HGChangesetId.$(H): HGChangesetId.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
+$(OUTDIR)HGChangesetList.$(O) HGChangesetList.$(H): HGChangesetList.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)HGCommandParser.$(O) HGCommandParser.$(H): HGCommandParser.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGCommitDialog.$(O) HGCommitDialog.$(H): HGCommitDialog.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractCommitDialog.$(H) $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(STCHDR)
 $(OUTDIR)HGCommitTask.$(O) HGCommitTask.$(H): HGCommitTask.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractCommitTask.$(H) $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractFileoutLikeTask.$(H) $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractTask.$(H) $(STCHDR)
@@ -137,11 +138,11 @@
 $(OUTDIR)HGWorkingCopy.$(O) HGWorkingCopy.$(H): HGWorkingCopy.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libscm\mercurial\HGRepositoryObject.$(H) $(STCHDR)
 $(OUTDIR)HGCommandParseError.$(O) HGCommandParseError.$(H): HGCommandParseError.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) $(INCLUDE_TOP)\stx\libscm\mercurial\HGCommandError.$(H) $(INCLUDE_TOP)\stx\libscm\mercurial\HGError.$(H) $(STCHDR)
 $(OUTDIR)HGInvalidExecutableError.$(O) HGInvalidExecutableError.$(H): HGInvalidExecutableError.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) $(INCLUDE_TOP)\stx\libscm\mercurial\HGCommandError.$(H) $(INCLUDE_TOP)\stx\libscm\mercurial\HGError.$(H) $(STCHDR)
-$(OUTDIR)HGUnknownRevisionError.$(O) HGUnknownRevisionError.$(H): HGUnknownRevisionError.st $(INCLUDE_TOP)\stx\libscm\mercurial\HGRepositoryError.$(H) $(INCLUDE_TOP)\stx\libscm\mercurial\HGError.$(H) $(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)HGInvalidVersionError.$(O) HGInvalidVersionError.$(H): HGInvalidVersionError.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) $(INCLUDE_TOP)\stx\libscm\mercurial\HGCommandError.$(H) $(INCLUDE_TOP)\stx\libscm\mercurial\HGError.$(H) $(STCHDR)
 $(OUTDIR)HGPushError.$(O) HGPushError.$(H): HGPushError.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) $(INCLUDE_TOP)\stx\libscm\mercurial\HGError.$(H) $(INCLUDE_TOP)\stx\libscm\mercurial\HGRepositoryError.$(H) $(STCHDR)
+$(OUTDIR)HGUnknownRevisionError.$(O) HGUnknownRevisionError.$(H): HGUnknownRevisionError.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) $(INCLUDE_TOP)\stx\libscm\mercurial\HGError.$(H) $(INCLUDE_TOP)\stx\libscm\mercurial\HGRepositoryError.$(H) $(STCHDR)
 $(OUTDIR)HGPushWouldCreateNewHeadError.$(O) HGPushWouldCreateNewHeadError.$(H): HGPushWouldCreateNewHeadError.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) $(INCLUDE_TOP)\stx\libscm\mercurial\HGError.$(H) $(INCLUDE_TOP)\stx\libscm\mercurial\HGPushError.$(H) $(INCLUDE_TOP)\stx\libscm\mercurial\HGRepositoryError.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\Annotation.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ConfigurableFeatures.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractFileBrowser.$(H) $(INCLUDE_TOP)\stx\libtool\SystemBrowser.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NewSystemBrowser.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\Annotation.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ConfigurableFeatures.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractFileBrowser.$(H) $(INCLUDE_TOP)\stx\libtool\SystemBrowser.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NewSystemBrowser.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/mercurial/extensions.st	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/extensions.st	Tue Mar 11 22:13:44 2014 +0000
@@ -759,6 +759,14 @@
     "Created: / 16-11-2012 / 21:24:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!CharacterArray methodsFor:'converting'!
+
+asHGRevset
+    ^ HGRevset fromString:self.
+
+    "Created: / 11-03-2014 / 20:51:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !ConfigurableFeatures class methodsFor:'queries-features'!
 
 hasHGSupport
@@ -810,6 +818,14 @@
     "Modified: / 27-11-2012 / 17:56:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!Object methodsFor:'converting'!
+
+asHGRevset
+    ^self shouldNotImplement
+
+    "Created: / 11-03-2014 / 20:50:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !Object methodsFor:'testing'!
 
 isHGChangeset
--- a/mercurial/libInit.cc	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/libInit.cc	Tue Mar 11 22:13:44 2014 +0000
@@ -33,6 +33,7 @@
 _HGChange_Init(pass,__pRT__,snd);
 _HGChangesetFile_Init(pass,__pRT__,snd);
 _HGChangesetId_Init(pass,__pRT__,snd);
+_HGChangesetList_Init(pass,__pRT__,snd);
 _HGCommandParser_Init(pass,__pRT__,snd);
 _HGCommitDialog_Init(pass,__pRT__,snd);
 _HGCommitTask_Init(pass,__pRT__,snd);
--- a/mercurial/mercurial.rc	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/mercurial.rc	Tue Mar 11 22:13:44 2014 +0000
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libscm_mercurial.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,930,930
+  FILEVERSION     6,2,32767,32767
   PRODUCTVERSION  6,2,3,0
 #if (__BORLANDC__)
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
@@ -20,12 +20,12 @@
     BEGIN
       VALUE "CompanyName", "Jan Vrany\0"
       VALUE "FileDescription", "Mercurial integration for Smalltalk/X (LIB)\0"
-      VALUE "FileVersion", "6.2.930.930\0"
+      VALUE "FileVersion", "6.2.32767.32767\0"
       VALUE "InternalName", "stx:libscm/mercurial\0"
       VALUE "LegalCopyright", "Copyright Jan Vrany 2012\0"
       VALUE "ProductName", "Smalltalk/X Mercurial Integration\0"
       VALUE "ProductVersion", "6.2.3.0\0"
-      VALUE "ProductDate", "Fri, 21 Feb 2014 10:40:58 GMT\0"
+      VALUE "ProductDate", "Tue, 11 Mar 2014 22:09:34 GMT\0"
     END
 
   END
--- a/mercurial/stx_libscm_mercurial.st	Wed Mar 05 10:04:25 2014 +0000
+++ b/mercurial/stx_libscm_mercurial.st	Tue Mar 11 22:13:44 2014 +0000
@@ -59,12 +59,12 @@
 !
 
 mandatoryPreRequisites
-    "list all required mandatory packages.
-     Packages are mandatory, if they contain superclasses of the package's classes
-     or classes which are extended by this package.
-     This list can be maintained manually or (better) generated and
-     updated by scanning the superclass hierarchies
-     (the browser has a menu function for that)"
+    "list packages which are mandatory as a prerequisite.
+     This are packages containing superclasses of my classes and classes which
+     are extended by myself.
+     They are mandatory, beacuse we need these packages as a prerequisite for loading and compiling.
+     This method is generated automatically,
+     by searching along the inheritance chain of all of my classes."
 
     ^ #(
         #'stx:goodies/sunit'    "TestAsserter - superclass of HGCommandParserTests "
@@ -99,12 +99,11 @@
 !
 
 referencedPreRequisites
-    "list all packages containing classes referenced by the packages's members.
-     This list can be maintained manually or (better) generated and
-     updated by looking for global variable accesses
-     (the browser has a menu function for that)
-     However, often too much is found, and you may want to explicitely
-     exclude individual packages in the #excludedFromPreRequisites method."
+    "list packages which are a prerequisite, because they contain
+     classes which are referenced by my classes.
+     We do not need these packages as a prerequisite for loading or compiling.
+     This method is generated automatically,
+     by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
         #'stx:goodies/communication'    "HTTPInterface - referenced by HGInstaller>>doDownload: "
@@ -183,6 +182,7 @@
         HGChange
         HGChangesetFile
         HGChangesetId
+        HGChangesetList
         HGCommandParser
         (HGCommandParserTests autoload)
         HGCommitDialog
@@ -233,8 +233,8 @@
 !
 
 extensionMethodNames
-    "lists the extension methods which are to be included in the project.
-     Entries are 2-element array literals, consisting of class-name and selector."
+    "list class/selector pairs of extensions.
+     A correponding method with real names must be present in my concrete subclasses"
 
     ^ #(
         ByteArray asHGChangesetId
@@ -296,6 +296,8 @@
         AbstractFileBrowser hgInit
         AbstractFileBrowser hgInitEnabled
         'ProjectDefinition class' hgLogicalRevision:
+        CharacterArray asHGRevset
+        Object asHGRevset
     )
 ! !