mercurial/stx_libscm_mercurial.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 10 Dec 2012 02:49:43 +0000
changeset 151 527a1e85aef8
parent 150 1813913f6106
child 154 c1221bf5f357
permissions -rw-r--r--
Support for 'autopush' in commit dialog. When committing, changes can be automatically propagated to an upstream repository (autopush). Also, global preference exists to turn on/off default behavior. When global autopush is on, then commit behaves much like in centralized SCMs - each commit is immediately visible to other developers. However, autopush is off by default.

"{ Package: 'stx:libscm/mercurial' }"

LibraryDefinition subclass:#stx_libscm_mercurial
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'* Projects & Packages *'
!


!stx_libscm_mercurial class methodsFor:'description'!

excludedFromPreRequisites
    "list all packages which should be ignored in the automatic
     preRequisites scan. See #preRequisites for more."

    ^ #(
    )
!

preRequisites
    "list all required packages.
     This list can be maintained manually or (better) generated and
     updated by scanning the superclass hierarchies and looking for
     global variable accesses. (the browser has a menu function for that)
     Howevery, often too much is found, and you may want to explicitely
     exclude individual packages in the #excludedFromPrerequisites method."

    ^ #(
        #'stx:goodies/sunit'    "TestAsserter - superclass of HGTests "
        #'stx:libbasic'    "ByteArray - superclass of HGNodeId "
        #'stx:libbasic2'    "Singleton - superclass of HGStatus::Added "
        #'stx:libbasic3'    "AbstractSourceCodeManager - superclass of HGSourceCodeManager "
        #'stx:libscm/common'    "SCMAbstractTask - superclass of HGCommitTask "
        #'stx:libtool'    "AbstractSourceCodeManagementSettingsAppl - superclass of HGSourceCodeManagementSettingsAppl "
        #'stx:libview'    "ImageMask - referenced by HGIconLibrary class>>hgLogo2 "
        #'stx:libview2'    "Model - superclass of HGSourceCodeManagementSettingsAppl "
    )
! !

!stx_libscm_mercurial class methodsFor:'description - contents'!

classNamesAndAttributes
    "lists the classes which are to be included in the project.
     Each entry in the list may be: a single class-name (symbol),
     or an array-literal consisting of class name and attributes.
     Attributes are: #autoload or #<os> where os is one of win32, unix,..."

    ^ #(
        "<className> or (<className> attributes...) in load order"
        HGCommand
        HGCommandParser
        (HGRepositoriesResource autoload)
        HGRepository
        HGRepositoryObject
        (HGTestCase autoload)
        (HGTests autoload)
        HGWorkingCopyFile
        #'stx_libscm_mercurial'
        HGBranch
        HGWorkingCopy
        HGChangesetId
        HGStatus
        HGError
        HGRepositoryError
        HGCommandError
        (HGCommandParserTests autoload)
        HGChangeset
        HGPackageModel
        HGCommitDialog
        HGIconLibrary
        HGPackageModelRegistry
        HGSourceCodeManagementSettingsAppl
        HGSourceCodeManager
        HGAuthorQuery
        HGCommandParseError
        HGCommitTask
        HGChangesetFile
        (HGStXTests autoload)
        HGRevisionInfo
        HGRevisionAnnotation
        HGNoSuchBranchError
        HGChange
        HGConfig
        HGCommitError
        HGRemote
        HGPushError
        HGPushWouldCreateNewHeadError
    )
!

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."

    ^ #(
        ByteArray asHGChangesetId
        Integer asHGChangesetId
        Object asHGChangesetId
        String asHGChangesetId
        UserPreferences hgCommand
        UserPreferences hgCommand:
        UserPreferences hgAutopush
        UserPreferences hgAutopush:

        Object asHGRevision
        'Annotation class' HGRevision:
        'ProjectDefinition class' hgBinaryRevision
        'ProjectDefinition class' hgLogicalRevision
        'ProjectDefinition class' hgPostLoad
    )

    "Modified: / 10-12-2012 / 02:43:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!stx_libscm_mercurial class methodsFor:'description - project information'!

applicationIconFileName
    "Return the name (without suffix) of an icon-file (the app's icon); will be included in the rc-resource file"

    ^ nil
    "/ ^ self applicationName
!

companyName
    "Return a companyname which will appear in <lib>.rc"

    ^ 'Jan Vrany'

    "Modified: / 23-11-2012 / 20:27:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

description
    "Return a description string which will appear in vc.def / bc.def"

    ^ 'Mercurial integration for Smalltalk/X'

    "Modified: / 23-11-2012 / 20:27:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

legalCopyright
    "Return a copyright string which will appear in <lib>.rc"

    ^ 'Copyright Jan Vrany 2012'

    "Modified: / 23-11-2012 / 20:27:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

productInstallDirBaseName
    "Returns a default installDir which will appear in <app>.nsi.
     This is usually not the one you want to keep"

    ^ (self package asCollectionOfSubstringsSeparatedByAny:':/') last
!

productName
    "Return a product name which will appear in <lib>.rc"

    ^ 'Smalltalk/X Mercurial Integration'

    "Modified: / 23-11-2012 / 20:28:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!stx_libscm_mercurial class methodsFor:'description - svn'!

svnRepositoryUrlString
    "Return a SVN repository URL of myself.
     (Generated since 2011-04-08)
     Do not make the string shorter!!!!!! We have to use fixed-length keyword!!!!!!
    "        

    ^ '$URL::                                                                                                                        $'
!

svnRevisionNr
    "Return a SVN revision number of myself.
     This number is updated after a commit"

    ^ "$SVN-Revision:"'nil             '"$"
! !

!stx_libscm_mercurial class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
!

version_SVN
    ^ '§Id::                                                                                                                        §'
! !