|
Class: AbstractSourceCodeManager
Object
|
+--AbstractSourceCodeManager
|
+--CVSSourceCodeManager
|
+--DataBaseSourceCodeManager
|
+--FileBasedSourceCodeManager
|
+--GitSourceCodeManager
|
+--MercurialSourceCodeManager
|
+--PerforceSourceCodeManager
|
+--StoreSourceCodeManager
- Package:
- stx:libbasic3
- Category:
- System-SourceCodeManagement
- Version:
- rev:
1.429
date: 2024/01/11 10:53:26
- user: cg
- file: AbstractSourceCodeManager.st directory: libbasic3
- module: stx stc-classLibrary: libbasic3
Abstract superclass for sourceCodeManagers.
Concrete subclasses provide access to a source repository.
Most protocol here traps into subclassResponsbility errors.
Please read more documentation in concrete subclasses
(especially: CVSSourceCodeManager) for how to use this manager and
what to redefine in another repository manager if required.
Notice (& caveat):
for very traditional reasons (and because it works for us),
exept uses CVS for its source code repository,
and this is best supported in the tools.
The other managers are provided by third parties and Jan,
who uses SVN and git.
You may have to massage those.
copyrightCOPYRIGHT (c) 1995 by Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
accessing
-
availableManagers
-
return the set of loaded source code managers
(i.e. CVSSourceCodeManager, SVNSourceCodeManager, etc.)
Usage example(s):
-
branchStartTagFor: branchName
-
this tag is used to tag the original starting point of a branch;
i.e. the head version from which the branch was created.
Here, we use <branchTagPrefix><branchName>_0
-
branchTagFor: branchName
-
this tag is used to tag the current branch-head of a branch (or the branch as such);
i.e. the last version checked onto the branch.
Here, we use <branchTagPrefix><branchName>
-
branchTagPrefix
-
-
cacheDirectoryName
-
return the name of the cache directory, where checked out class
sources are kept for faster access. The default is '/tmp/stx_sourceCache'.
This cache is shared among all ST/X users on a system.
-
cacheDirectoryName: aStringOrFilename
-
set the name of the cache directory, where checked out class
sources are kept for faster access. The default is '/tmp/stx_sourceCache'.
This cache is shared among all ST/X users on a system.
The directory is typically set via the launcher's setting menu,
or from a startup rc-file.
-
cachingSources
-
return true, if source caching is enabled.
(see cacheDirectoryName for what that means)
-
cachingSources: aBoolean
-
enable/disable the caching of source files.
(see cacheDirectoryName for what that means)
Usage example(s):
AbstractSourceCodeManager cachingSources:true
|
-
defaultManager
-
return the default sourceCodeManager class
-
enabledManagers
-
Return list of source code managers that are enabled
Usage example(s):
-
managerForMatchingModule: aPackageIDMatchString put: aSourceCodeManagerClass
-
update the per-module manager definitions, adding a manager class for a matchString
-
managerForPackage: aPackageID
-
return the sourceCodeManager for a aPackageID, nil if unspecified in the manager per package list
Usage example(s):
self managerForPackage:'stx:libbasic'
self managerForPackage:'stx:libbasic2'
self managerForPackage:'exept:expecco'
|
-
managerPerMatchingModuleDefinitions
-
return the sourceCodeManager definitions
-
managerPerMatchingModuleDefinitions: aCollection
-
set the sourceCodeManager definitions; must be an orderedCollection of packageMatchString -> manager
associations
(not a dictionary, because order is relevant in the matching process, where the first match counts)
-
named: managerTypeName
-
AbstractSourceCodeManager named: 'CVS'
AbstractSourceCodeManager named: 'Perforce'
-
repositoryInfoPerModule
-
return the dictionary, which associates CVSRoots to module names.
If no entry is contained in this dictionary for some module,
the default cvsRoot (CVSRoot) will be used.
-
repositoryInfoPerModule: info
-
ignore here
-
repositoryName
-
return the name of the repository.
Since this is an abstract class, return nil (i.e. none)
-
repositoryNameForPackage: packageId
-
Return the repository URL for the given package.
Used for testing/debugging source code management configuration
** This method must be redefined in concrete classes (subclassResponsibility) **
-
shownInBrowserMenus
-
can be redefined in subclasses which can be suppressed in the browser's menus
-
shownInBrowserMenus: aBoolean
-
can be redefined in subclasses which can be suppressed in the browser's menus
-
useWorkTree
-
return the setting of useWorkTree, which (eventually)
controls if an up-to-date view of a CVS working tree should be
kept in sync. This is not yet implemented.
-
useWorkTree: aBoolean
-
enable/disable the useWorkTree feature, which (eventually)
controls if an up-to-date view of a CVS working tree should be
kept in sync. This is not yet implemented.
-
utilities
-
Returns a 'utilities' object that can be used by tools.
By default, it returns an instance of
SourceCodeManagerUtilities with receiver as its
manager, but individual managers may override this
method and supply its own, customized utilities.
Usage example(s):
SourceCodeManager defaultManager
SourceCodeManager defaultManager utilities
CVSSourceCodeManager utilities
|
-
workTreeDirectoryName
-
return the name of the workTree, which is kept in sync
with the current class versions. This is not yet implemented
-
workTreeDirectoryName: aStringOrFilename
-
set the name of the workTree, which is kept in sync
with the current class versions. This is not yet implemented
basic access
-
checkinClass: aClass fileName: classFileName directory: packageDir module: moduleDir source: sourceFile logMessage: logMessage force: force
-
checkin of a class into the source repository.
Return true if ok, false if not.
** This method must be redefined in concrete classes (subclassResponsibility) **
-
checkoutModule: aModule directory: aPackage andDo: aBlock
-
check out everything from a package into a temporary directory.
Then evaluate aBlock, passing the name of that temp-directory.
Afterwards, the tempDir is removed.
Return true, if OK, false if any error occurred.
** This method must be redefined in concrete classes (subclassResponsibility) **
-
streamForClass: aClass fileName: classFileName revision: revision directory: packageDir module: moduleDir cache: doCache
-
extract a classes source code and return an open readStream on it.
A revision of nil selects the current (in image) revision.
The classes source code is extracted using the revision and the sourceCodeInfo,
which itself is extracted from the classes packageString.
** This method must be redefined in concrete classes (subclassResponsibility) **
-
streamForExtensionFile: fileName package: package directory: dir module: mod cache: doCache
-
check for umlaut-remover/adder bug from felix in extensionsRevisionString !!!!
basic administration
-
checkForExistingContainer: fileName inModule: moduleName directory: packageDirName
-
check for a container to be present. Return a boolean result.
** This method must be redefined in concrete classes (subclassResponsibility) **
-
checkForExistingContainer: fileName inModule: moduleName directory: packageDirName warn: doWarn
-
check for a container to be present. Return a boolean result.
-
checkForExistingContainer: fileName inPackage: aPackage
-
check if a source-code container is present in a packages directory.
-
checkForExistingContainerForClass: aClass
-
check if a source-code container for a given class is present in the repository.
-
checkForExistingModule: moduleName
-
check for a module directory to be present
** This method must be redefined in concrete classes (subclassResponsibility) **
-
checkForExistingModule: moduleDir directory: packageDir
-
check for a package directory to be present
** This method must be redefined in concrete classes (subclassResponsibility) **
-
createContainerFor: aClass inModule: moduleName directory: dirName container: fileName
-
create a new container & check into it an initial version of aClass
** This method must be redefined in concrete classes (subclassResponsibility) **
-
createContainerFor: cls inModule: moduleName package: packageDir container: classFileName
-
create a new container & check into it an initial version of aClass
-
createModule: moduleName
-
create a new module directory
** This method must be redefined in concrete classes (subclassResponsibility) **
-
createModule: module directory: directory
-
create a new package directory
** This method must be redefined in concrete classes (subclassResponsibility) **
-
initialRevisionStringFor: aClass inModule: moduleDir directory: packageDir container: fileName
-
return a string usable as initial revision string
** This method must be redefined in concrete classes (subclassResponsibility) **
-
revisionLogOf: clsOrNil fromRevision: firstRev toRevision: lastRef fileName: classFileName directory: packageDirOrNil module: moduleDir
-
-
revisionLogOf: clsOrNil fromRevision: rev1OrNil toRevision: rev2OrNil numberOfRevisions: limitOrNil fileName: classFileName directory: packageDirOrNil module: moduleDirOrNil
-
Return info about the repository container and (part of) the revisionlog as a collection
of revision entries. Return nil on failure.
This must be implemented by a concrete source-code manager
If numRevisionsOrNil is notNil, it limits the number of revision records returned -
only numRevions of the newest revision infos will be collected.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#cvsRoot -> the CVS root (repository)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container (nil for all)
#revisions -> collection of per-revision info (see below)
firstRevOrNil / lastRevOrNil specify from which revisions a logEntry is wanted:
-If firstRevOrNil is nil, the first revision is the initial revision
otherwise, the log starts with that revision.
-If lastRevOrNil is nil, the last revision is the newest revision
otherwise, the log ends with that revision.
-If both are nil, all logEntries are extracted.
-If both are 0 (not nil), no logEntries are extracted (i.e. only the header).
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
#logMessage -> the checkIn log message
revisions are ordered newest first
(i.e. the last entry is for the initial revision; the first for the most recent one)
Attention: if state = 'dead' that revision is no longer valid.
** This method must be redefined in concrete classes (subclassResponsibility) **
cache administration
-
condenseSourceCache
-
remove all cached old versions (i.e. leave the newest only)
Usage example(s):
-
flushSourceCache
-
remove all cached versions
Usage example(s):
change & update
-
update: something with: aParameter from: changedObject
-
flush resources on language changes
debugging
-
verboseSourceCodeAccess
-
-
verboseSourceCodeAccess: aBoolean
-
initialization
-
forgetDisabledModules
-
intentionally left blank
-
initCacheDirPath
-
initialize the name of the cacheDirectory.
This is:
<tempDir>/stx_sourceCache (non-UNIX)
~/.smalltalk/source-cache (UNIX, as <tempDir> is pruned upon each reboot)
Usage example(s):
-
initialize
-
setup for caching and no workTree
-
validateCacheDirPath
-
obsolete backward compatibility
-
checkForExistingModule: moduleDir package: packageDir
-
check for a package directory to be present
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
checkoutModule: aModule package: aPackage andDo: aBlock
-
check out everything from a package into a temporary directory.
Then evaluate aBlock, passing the name of that temp-directory.
Afterwards, the tempDir is removed.
Return true, if OK, false if any error occurred.
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
createModule: module package: package
-
create a new package directory
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
getExistingContainersInModule: aModule package: aPackage
-
return a collection containing the names of existing containers
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
getExistingPackagesInModule: aModule
-
return a collection containing the names of existing packages
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
initialRevisionStringFor: aClass inModule: moduleDir package: packageDir container: fileName
-
return a string usable as initial revision string
** This is an obsolete interface - do not use it (it may vanish in future versions) **
private
-
checkMethodPackagesOf: aClass
-
check if aClass contains methods from another package;
ask if these should be checked in with the class.
Raises abortSignal if checkIn is to be suppressed.
returns:
#base - only check in methods from the classes package
#all - check in all
the old code looked for all extensions, and allowed them to be moved to the base-package.
This was dangerous, as if one presses yes too quickly, extensions move to the base too easy.
The new code only allows for extensions from the __NOPROJECT__ package to be moved.
Extensions always remain extensions, and must be moved by an explicit method-menu action.
-
checkTabSpaceConventionIn: aStream
-
This method checks whether data in given stream follows
tab-space discipline.
More precisely, this checks that each line starts with zero or more
tabs (16r9) followed by 0-7 spaces (16r32) followed by non-space non-tab
character.
This is done for two reasons:
1) Makefiles (and Make.proto/Make.spec) files MUST not have leading spaces in their rules, but tabs.
otherwise, make fails badly.
2) for diff-comparison, a consisten tab/space discipline avoids false diff-positivies, which resulted from simple
edititing with different editors with different tab conventions.
-
compileVersionMethod: methodName of: aClass for: newRevisionString
-
self assert: language isSmalltalk.
-
containerFromSourceInfo: info
-
given a sourceInfo, return the classes container
-
createTempDirectory: packageDir forModule: moduleDir in: aParentDir
-
create a temp directory for checking out
Usage example(s):
self createTempDirectory:'fooPackage' forModule:'fooModule'
|
-
directoryFromContainerPath: containerPath forClass: aClass
-
given a full path as in an RCS header,
extract the directory (i.e. package).
Usage example(s):
CVSSourceCodeManager directoryFromContainerPath:'/files/CVS/stx/libbasic/Array.st' forClass:Array
|
-
directoryFromContainerPath: containerPath forPackage: packageID
-
given a full path as in an RCS header,
extract the directory (i.e. package) within the module.
Notice:
for top-level folder-only modules (like exept, stx),
an empty string is returned.
Usage example(s):
CVSSourceCodeManager directoryFromContainerPath:'/files/CVS/stx/libbasic/Array.st' forPackage:'stx' => 'libbasic'
CVSSourceCodeManager directoryFromContainerPath:'/files/CVS/stx/goodies/refactoryBrowser/Array.st' forPackage:'stx' => 'goodies/refactoryBrowser'
CVSSourceCodeManager directoryFromContainerPath:'CVS/stx/libbasic/Array.st' forPackage:'stx' => 'libbasic'
|
-
directoryFromSourceInfo: info
-
given a sourceInfo, return the classes package directory
-
isPackageWithoutExtensionMethodConfirmation: aPackageID
-
usually, the checkin dialog asks if unpackaged methods should be moved
to the package.
This can be suppressed on a per-package base with a checkbox ('do not...again')
in the dialog.
This method returns true, if this was done for a particular package
-
moduleFromContainerPath: containerPath forClass: aClass
-
given a full path as in an RCS header, extract the module.
Usage example(s):
SourceCodeManager moduleFromContainerPath:'/files/CVS/stx/libbasic/Array.st' forClass:Array
|
-
moduleFromContainerPath: containerPath forPackage: packageID
-
given a full path as in an RCS header, extract the module.
Usage example(s):
SourceCodeManager moduleFromContainerPath:'/files/CVS/stx/libbasic/Array.st'
|
-
moduleFromSourceInfo: info
-
given a sourceInfo, return the classes module directory
-
packageFromSourceInfo: info
-
given a sourceInfo, return the classes package directory
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
pathInRepositoryFrom: containerPath forPackage: packageID
-
this tries to extract the path within a repository,
given some path as present in an RCS Header string.
Typically, this ought to be that string directly;
however, if the repository directory is accessed via a symbolic link during
ci/co, some systems extract different strings with co.
One such system here had a symbolic link from /phys/ibm/CVS... to /file/CVS,
and extracted sources had /phys/ibm/CVS in their header.
Do not depend on the code below to work correctly all the time.
Usage example(s):
SourceCodeManager pathInRepositoryFrom:'/files/CVS/stx/libbasic/Array.st' forPackage:Array package
SourceCodeManager pathInRepositoryFrom:'/phys/ibm/CVS/stx/libbasic/Array.st' forPackage:Array package
SourceCodeManager pathInRepositoryFrom:'/files/CVS/stx/libbasic/Array.st' forPackage:nil
SourceCodeManager pathInRepositoryFrom:'/phys/ibm/CVS/stx/libbasic/Array.st' forPackage:nil
|
-
postCheckInClass: aClass
-
invoked after a checkIn
-
postCheckInExtensionsForPackage: aPackageId
-
invoked after a checkIn
-
rememberPackageWithoutExtensionMethodConfirmation: aPackageID
-
usually, the checkin dialog asks if unpackaged methods should be moved
to the package.
This can be suppressed on a per-package base with a checkbox ('do not...again')
in the dialog.
This method adds a package to the set of non-asking packages
-
reportError: msg
-
-
repositoryTopDirectory
-
return the name of the repository
-
sourceCacheDirectory
-
return the sourceCache directories name.
Ensure that it exists.
-
sourceInfoOfClass: aClass
-
helper: return a classes sourceCodeInfo by extracting its
versionString components.
Usage example(s):
SourceCodeManager sourceInfoOfClass:Array
|
-
updateVersionMethod: selector of: aClass for: newRevisionString
-
helper for the checkin procedure.
Update my #version_XXX method, to now return newRevisionString.
-
updateVersionMethodOf: aClass for: newRevisionString
-
helper for the checkin procedure.
Update my #version_XXX method, to now return newRevisionString.
queries
-
enabled
-
JV@2012-01-19: Quick hack, see senders. Is that what you mean?
-
initialRevisionString
-
redefinable in subclasses
-
isAbstract
-
Return if this class is an abstract class.
True is returned here for myself only; false for subclasses.
Abstract subclasses must redefine this again.
-
isContainerBased
-
true, if the SCM uses some kind of source container (,v files).
False, if it is like a database or filesystem.
-
isExperimental
-
-
isExtensionsVersionMethodSelector: selector
-
true if the given selector is for ANY of the manager's extensions version methods.
These are all named extensionVersion_XXX, where XXX is manager-specific (CVS, P4, SVN etc.).
For backward compatibility (times, when there was only one CVS sourcecode manager,
the selector named 'extensionsVersion' alone also counts as a version method
(which might be a somewhat bad idea in the long term...).
-
isResponsibleForModule: module
-
-
isResponsibleForPackage: aStringOrSymbol
-
Returns true if the manager can handle source code for given package.
Answering true does not imply that receiver is configured default
manager for that package, it only means that it has a repository
configured for given package.
** This method must be redefined in concrete classes (subclassResponsibility) **
-
isRevision: revision1 after: revision2
-
true, if the dotted revision string revision1 is > than revision2
Usage example(s):
SourceCodeManager isRevision:'1' after:'2'
SourceCodeManager isRevision:'2' after:'1'
SourceCodeManager isRevision:'1.1' after:'2.1.2'
SourceCodeManager isRevision:'2.1' after:'1.2.3'
SourceCodeManager isRevision:'1' after:'1.1'
SourceCodeManager isRevision:'1.1' after:'1'
SourceCodeManager isRevision:'1.1' after:'1.2'
SourceCodeManager isRevision:'1.10' after:'1.2'
SourceCodeManager isRevision:'1.2' after:'1.1'
SourceCodeManager isRevision:'1.2.3.4' after:'1.2.3.5'
SourceCodeManager isRevision:'1.2.3.4' after:'1.2.3.3'
SourceCodeManager isRevision:'1.2.3.4' after:'1.2.3'
SourceCodeManager isRevision:'1.2.3.4' after:'1.2.3.4'
|
-
isRevision: revision1 sameOrAfter: revision2
-
true, if the dotted revision string revision1 is >= than revision2
-
isVersionMethodForExtensionsSelector: selector
-
true if the given selector is for one of the manager's extensions version methods.
These are all named extensionVersion_XXX, where XXX is manager-specific (CVS, P4, SVN etc.).
For backward compatibility (times, when there was only one CVS sourcecode manager,
the selector named 'extensionsVersion' alone also counts as a version method
(which might be a somewhat bad idea in the long term...).
** This is an obsolete interface - do not use it (it may vanish in future versions) **
-
isVersionMethodSelector: selector
-
true if the given selector is for one of the manager's version methods.
These are all named version_XXX, where XXX is manager-specific (CVS, P4, SVN etc.).
For backward compatibility (times, when there was only one CVS sourcecode manager,
the selector named 'version' alone also counts as a version method
(which might be a somewhat bad idea in the long term...).
-
managerTypeName
-
Answers version manager name suitable for UI,
i,e., CVS, SubVersion, Perforce
** This method must be redefined in concrete classes (subclassResponsibility) **
-
managerTypeNameShort
-
Answers short version manager name suitable for UI,
i,e., CVS, SVN, P4. Used in cases where sorter strings
are preferred. Defaults to #managerTypeName
-
nameOfVersionMethodForExtensions
-
that is the old name; now, we use extensionsVersion_<SCM>
-
nameOfVersionMethodInClasses
-
that is the old name; now, we use version_<SCM>
-
performsCompilabilityChecks
-
Should return true, if the manager itself performs
compilability checks, false otherwise.
Basically a hack, see my senders...
-
prefixOfVersionMethodForExtensionsSelector
-
all scm-extensionsVersion methods start with this prefix
-
prefixOfVersionMethodSelector
-
all scm-version methods start with this prefix
-
repositoryTopDirectoryFromSCMRoot
-
return the top of the repository.
** This method must be redefined in concrete classes (subclassResponsibility) **
-
revisionAfter: aRevisionString
-
generate the next revision number after the given number
Usage example(s):
SourceCodeManager revisionAfter:'1.2.3.4'
SourceCodeManager revisionAfter:'123'
SourceCodeManager revisionAfter:'1.24'
|
-
settingsApplicationClass
-
link to my settings application (needed for the settings dialog
** This method must be redefined in concrete classes (subclassResponsibility) **
-
sourceCodeManagerForPackage: aPackageID
-
JV@2012-01-23: If source code management is disabled, return #().
Usage example(s):
self sourceCodeManagerForPackage:'stx:libbasic'.
self sourceCodeManagerForPackage:'stx:libboss'.
self managerForMatchingModule:'stx:libba*' put:SVNSourceCodeManager.
self sourceCodeManagerForPackage:'stx:libbasic'.
self sourceCodeManagerForPackage:'stx:libboss'.
|
-
supportsCheckinLogMessages
-
true, if log-messages are supported
-
versionInfoClass
-
-
versionMethodKeyword
-
Answers the keyword used by the version management system to
expand a current version in a file (_without_ dollars). For
CVS it is 'Header', for SVN 'Id', others may use different
keywords. If nil is returned, then the version management does
not use any keyword.
-
versionMethodTemplateForJavaScript
-
CVSSourceCodeManager versionMethodTemplateForJavaScript
-
versionMethodTemplateForJavaScriptFor: aSelector
-
do not make the thing below a single string - otherwise
it would get expanded by the sourcecodemanager, which we do not want here
-
versionMethodTemplateForRuby
-
CVSSourceCodeManager versionMethodTemplateForRuby
-
versionMethodTemplateForRubyFor: aSelector
-
do not make the thing below a single string - otherwise
it would get expanded by the sourcecodemanager, which we do not want here
-
versionMethodTemplateForSmalltalk
-
CVSSourceCodeManager versionMethodTemplateForSmalltalk
-
versionMethodTemplateForSmalltalkFor: aSelector
-
do not make the thing below a single string - otherwise
it would get expanded by the sourcecodemanager, which we do not want here
-
versionString: stringA isLessThan: stringB
-
source code access
-
basicCheckinClass: aClass fileName: classFileName directory: packageDir module: moduleDir logMessage: logMessage force: force
-
low level checkin of a class into the source repository. Does not deal with any version method updates,
only does the checkin, using a temporary file.
Return true if ok, false if not.
-
checkin: containerFilename text: someText directory: packageDir module: moduleName logMessage: logMessage force: force
-
enter some (source) code (which is someText)
into the source repository. If the force argument is true, no merge is done;
instead, the code is checked in as given (Dangerous).
Return true if ok, false if not.
-
checkin: containerFilename text: someText directory: packageDir module: moduleName logMessage: logMessage force: force onBranch: branchNameOrNil
-
enter some (source) code (which is someText)
into the source repository. If the force argument is true, no merge is done;
instead, the code is checked in as given (Dangerous).
Return true if ok, false if not.
** This method must be redefined in concrete classes (subclassResponsibility) **
-
checkinClass: aClass fileName: classFileName directory: packageDir module: moduleDir logMessage: logMessage
-
checkin of a class into the source repository.
Return true if ok, false if not.
-
checkinClass: aClass fileName: classFileName directory: packageDir module: moduleDir logMessage: logMessage force: force
-
checkin of a class into the source repository.
Return true if ok, false if not.
Usage example(s):
SourceCodeManager checkinClass:Array
|
-
checkinClass: aClass fileName: classFileName directory: packageDir module: moduleDir logMessage: logMessage onBranch: branchNameOrNil
-
checkin of a class into the source repository.
Return true if ok, false if not.
-
checkinClass: aClass logMessage: logMessage
-
checkin of a class into the source repository.
Return true if ok, false if not.
Usage example(s):
SourceCodeManager checkinClass:Array logMessage:'foo'
|
-
checkinClass: aClass logMessage: logMessage onBranch: branchNameOrNil
-
checkin of a class into the source repository.
Return true if ok, false if not.
Usage example(s):
SourceCodeManager checkinClass:Array logMessage:'foo'
|
-
getFile: fileName revision: revision directory: packageDir module: moduleDir
-
SourceCodeManager
getFile:'Make.spec'
revision:#newest
directory:'libbasic2'
module:'stx'
-
getMostRecentSourceStreamForClassNamed: aClassName
-
given a class, return an open stream to its most recent source
(not knowing anything about its version).
Used when autoloading classes.
-
getMostRecentSourceStreamForClassNamed: aClassName inPackage: forcedPackage
-
given a class, return an open stream to its most recent source
(not knowing anything about its version).
Used when autoloading classes or to compare a classes source with the most
recent found in the repostitory.
The forcePackage argument passes the classes package information
and is only required when autoloading or when the class is not already
present (i.e. there is no way to extract the package info).
If nil, the package is extracted from the class - which must exist.
-
getMostRecentSourceStreamForFile: aFileName inPackage: aPackage
-
given a filename, return an open stream to its most recent contents
(not knowing anything about its version).
Used when autoloading extensions or to compare a classes source with the most
recent found in the repostitory.
-
getSourceStreamFor: aClass
-
extract a classes source code and return an open readStream on it.
The classes source code is extracted using the revision and the sourceCodeInfo,
which itself is extracted from the classes packageString.
-
getSourceStreamFor: aClass revision: aRevisionStringOrNil
-
extract a classes source code and return an open readStream on it.
A revision of nil selects the current (in image) revision.
The classes source code is extracted using the revision and the sourceCodeInfo,
which itself is extracted from the classes packageString.
-
getSourceStreamFor: aClass revision: aRevisionStringOrNil cache: cache
-
extract a classes source code and return an open readStream on it.
A revision of nil selects the current (in image) revision.
The classes source code is extracted using the revision and the sourceCodeInfo,
which itself is extracted from the classes packageString.
-
loadPackageWithId: aPackageId fromRepositoryAsAutoloaded: doLoadAsAutoloaded
-
Should be redefined by subclasses.
Raise an exception, if load failed.
-
streamForFile: fileName revision: revision directory: packageDir module: moduleDir
-
SourceCodeManager
streamForFile:'Make.spec'
revision:#newest
directory:'libbasic2'
module:'stx'
-
withClass: aClass classFileName: classFileName filedOutToTemporaryFileDo: aBlock
-
helper. fileout and eval aBlock
source code administration
-
allKnownTagsInClasses: aCollectionOfClasses
-
returns symbolic tags which are present in any given classes (or-set)
-
commonTagsInClasses: aCollectionOfClasses
-
returns symbolic tags which are preent in all given classes (and-set)
Usage example(s):
SourceCodeManager defaultManager commonTagsInClasses:{Array . ByteArray}
|
-
fileOutSourceCodeExtensions: extensions package: package on: stream
-
File out extension methods for given package on stream.
Not programming-language safe - can handle smalltalk methods.
-
fileOutSourceCodeExtensions: extensions package: pkg on: stream version: versionIt
-
File out extension methods for given package on stream.
Not programming-language safe - can handle smalltalk methods.
-
fileOutSourceCodeOf: aClass on: aStream
-
-
fileOutSourceCodeOf: aClass on: aStream withTimeStamp: withTimeStamp withInitialize: withInitialize withDefinition: withDefinition methodFilter: methodFilter
-
JV@2012-02-02: Do not fileout extensionVersion methods, that one is filed out
when extensions are filed out.
-
getExistingContainersInModule: aModule directory: aPackage
-
return a collection containing the names of existing containers
** This method must be redefined in concrete classes (subclassResponsibility) **
-
getExistingDirectoriesInModule: aModule
-
return a collection containing the names of existing packages
** This method must be redefined in concrete classes (subclassResponsibility) **
-
getExistingModules
-
return a collection containing the names of existing modules
** This method must be redefined in concrete classes (subclassResponsibility) **
-
knownBranchTagsAndRevisionsFor: aClass
-
retrieve a list of branch (symbolic tags -> versionNr) associations known for that class.
I.e. which tags/symbolic versions exist, and which revision-nr is attached to it
Usage example(s):
CVSSourceCodeManager knownBranchTagsAndRevisionsFor:Array
|
-
knownBranchTagsAndRevisionsForContainer: classFileName directory: packageDir module: moduleDir
-
retrieve all branch tages.
Usage example(s):
CVSSourceCodeManager knownBranchTagsAndRevisionsFor:cg_test2
CVSSourceCodeManager knownBranchTagsAndRevisionsForContainer:'cg_test2.st' directory:'test2' module:'cg'
|
-
knownTagsAndRevisionsFor: aClass
-
retrieve a list of (symbolic tags -> versionNr) associations known for that class.
I.e. which tags/symbolic versions exist, and which revision-nr is attached to it
Usage example(s):
CVSSourceCodeManager knownTagsAndRevisionsFor:Array
|
-
knownTagsAndRevisionsForContainer: fileName directory: packageDir module: moduleDir
-
retrieve a list of (symbolic tags -> versionNr) associations.
I.e. which tags/symbolic versions exist, and which revision-nr is attached to it
Usage example(s):
CVSSourceCodeManager knownTagsAndRevisionsForContainer:'Make.proto' directory:'libbasic' module:'stx'
|
-
knownTagsFor: aClass
-
retrieve a colelction of symbolic tags known for that class.
I.e. which tags/symbolic versions exist
-
newestRevisionInFile: classFileName directory: packageDirOrNil module: moduleDir
-
return the newest revision found in a container.
Return nil on failure.
Usage example(s):
SourceCodeManager newestRevisionInFile:'Array.st' directory:'libbasic' module:'stx'
|
-
newestRevisionLogEntryOf: aClass
-
return the newest revisions log found in the repository.
Return nil on failure.
Usage example(s):
SourceCodeManager newestRevisionLogEntryOf:Array
SourceCodeManager newestRevisionLogEntryOf:Connection
|
-
newestRevisionOf: aClass
-
return the newest revision (as string) found in the repository.
Return nil on failure.
Usage example(s):
SourceCodeManager newestRevisionOf:Array
SourceCodeManager newestRevisionOf:Connection
|
-
oldestRevisionLogEntryOf: aClass
-
return the oldest revisions log found in the repository.
Return nil on failure.
Can be used to determine the time of initial checkin or the original author
Usage example(s):
SourceCodeManager oldestRevisionLogEntryOf:Array
|
-
onlyBranchTagsFrom: tagsAndVersions
-
retrieve a list of branch (symbolic tags -> versionNr) associations known for that class.
I.e. which tags/symbolic versions exist, and which revision-nr is attached to it
-
printClassRepositorySummaryForClass: aClass on: aStream
-
returns summary info from the repository:
current version,
newest in repository,
original checkin date (i.e. age),
tags on the current version
maybe more in the future
-
removeContainer: container inModule: module directory: directory
-
remove a container
** This method must be redefined in concrete classes (subclassResponsibility) **
-
revisionForSymbolicName: tag class: cls fileName: classFileName directory: packageDir module: moduleDir
-
given a tag, return the corresponding revision
Usage example(s):
CVSSourceCodeManager
revisionForSymbolicName:'stable'
class:Array fileName:'Array.st'
directory:'libbasic' module:'stx'
CVSSourceCodeManager
revisionForSymbolicName:'stable'
class:Array fileName:nil
directory:'libbasic' module:'stx'
|
-
revisionForTag: tagName inClass: aClass
-
retrieve the revision number associated to a particular tag/symbolic version.
Nil if unknown
Usage example(s):
SourceCodeManager revisionForTag:'stable' inClass:Array
|
-
revisionForTag: tagName inContainer: classFileName directory: packageDir module: moduleDir
-
retrieve the revision number associated to a particular tag/symbolic version.
Nil if unknown
Usage example(s):
SourceCodeManager revisionForTag:'stable' inClass:Array
SourceCodeManager revisionForTag:'stable' inContainer:'Make.proto' directory:'libbasic' module:'stx'
|
-
revisionInfoFromRCSString: aString
-
return a dictionary filled with revision info.
This extracts the relevant info from aString.
-
revisionInfoFromStandardVersionString: aString
-
return a VersionInfo object filled with revision info.
This extracts the relevant info from aString which is in the format as created
by standardRevisionStringFor:....
Usage example(s):
self revisionInfoFromStandardVersionString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826'
|
-
revisionInfoFromString: aString
-
return a dictionary filled with revision info.
This extracts the relevant info from aString.
** This method must be redefined in concrete classes (subclassResponsibility) **
-
revisionInfoFromString: vsnString inClass: class
-
-
revisionLogOf: aClass
-
return info about the repository container and
the revisionlog as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container
#revisions -> collection of per-revision info
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
revisions are ordered newest first
(i.e. the last entry is for the initial revision; the first for the most recent one)
Usage example(s):
SourceCodeManager revisionLogOf:Array
|
-
revisionLogOf: aClass fromRevision: rev1
-
return info about the repository container and
(part of) the revisionlog as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container
#revisions -> collection of per-revision info (see below)
for some classes, additional info is returned:
#renamed -> true if the class has been renamed or copied
and the sourceInfo is from the previous one
#expectedFileName -> the filename we would expect (i.e. for the new class)
rev1 specifies from which revisions a logEntry is wanted:
If rev1 is nil, the first revision is the initial revision
otherwise, the log starts with that revision.
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
revisions are ordered newest first
(i.e. the last entry is for the initial revision;
the first for the most recent one)
Usage example(s):
SourceCodeManager revisionLogOf:Array fromRevision:'1.40'
|
-
revisionLogOf: aClass fromRevision: rev1 toRevision: rev2
-
return info about the repository container and
(part of) the revisionlog as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container
#revisions -> collection of per-revision info (see below)
for some classes, additional info is returned:
#renamed -> true if the class has been renamed or copied
and the sourceInfo is from the previous one
#expectedFileName -> the filename we would expect (i.e. for the new class)
rev1 / rev2 specify from which revisions a logEntry is wanted:
If rev1 is nil, the first revision is the initial revision
otherwise, the log starts with that revision.
If rev2 is nil, the last revision is the newest revision
otherwise, the log ends with that revision.
If both are nil, no logEntries are extracted (i.e. only the header).
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
revisions are ordered newest first
(i.e. the last entry is for the initial revision;
the first for the most recent one)
-
revisionLogOf: aClass fromRevision: rev1 toRevision: rev2 finishAfter: maxCountOrNil
-
return info about the repository container and
(part of) the revisionlog as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container
#revisions -> collection of per-revision info (see below)
for some classes, additional info is returned:
#renamed -> true if the class has been renamed or copied
and the sourceInfo is from the previous one
#expectedFileName -> the filename we would expect (i.e. for the new class)
rev1 / rev2 specify from which revisions a logEntry is wanted:
If rev1 is nil, the first revision is the initial revision
otherwise, the log starts with that revision.
If rev2 is nil, the last revision is the newest revision
otherwise, the log ends with that revision.
If both are nil, no logEntries are extracted (i.e. only the header).
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
revisions are ordered newest first
(i.e. the last entry is for the initial revision;
the first for the most recent one)
Usage example(s):
SourceCodeManager revisionLogOf:Array fromRevision:'1.40' toRevision:'1.43'
SourceCodeManager revisionLogOf:XtBoxNew
|
-
revisionLogOf: aClass numberOfRevisions: numRevisionsOrNilForAll
-
return info about the repository container and
(part of) the revisionlog (numRevisions newest revisions)
as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container (nil for all)
#revisions -> collection of per-revision info (see below)
for some classes, additional info is returned:
#renamed -> true if the class has been renamed or copied
and the sourceInfo is from the previous one
#expectedFileName -> the filename we would expect (i.e. for the new class)
rev1 / rev2 specify from which revisions a logEntry is wanted:
If rev1 is nil, the first revision is the initial revision
otherwise, the log starts with that revision.
If rev2 is nil, the last revision is the newest revision
otherwise, the log ends with that revision.
If both are nil, no logEntries are extracted (i.e. only the header).
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
#logMessage -> the checkIn log message
revisions are ordered newest first
(i.e. the last entry is for the initial revision;
the first for the most recent one)
Usage example(s):
SourceCodeManager revisionLogOf:Array numberOfRevisions:10
SourceCodeManager revisionLogOf:Array numberOfRevisions:nil
|
-
revisionLogOf: clsOrNil numberOfRevisions: numRevisionsOrNilForAll fileName: classFileName directory: packageDirOrNil module: moduleDirOrNil
-
Modified (format): / 07-07-2019 / 23:17:22 / Claus Gittinger
-
revisionLogOfContainer: classFileName directory: packageDir module: moduleDir
-
return info about the repository container and
(part of) the revisionlog as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container
#revisions -> collection of per-revision info (see below)
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
revisions are ordered newest first
(i.e. the last entry is for the initial revision;
the first for the most recent one)
-
revisionLogOfContainer: fileName module: moduleDir directory: packageDir fromRevision: rev1 toRevision: rev2
-
return info about the repository container and
(part of) the revisionlog as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container
#revisions -> collection of per-revision info (see below)
for some classes, additional info is returned:
#renamed -> true if the class has been renamed or copied
and the sourceInfo is from the previous one
#expectedFileName -> the filename we would expect (i.e. for the new class)
rev1 / rev2 specify from which revisions a logEntry is wanted:
If rev1 is nil, the first revision is the initial revision
otherwise, the log starts with that revision.
If rev2 is nil, the last revision is the newest revision
otherwise, the log ends with that revision.
If both are nil, no logEntries are extracted (i.e. only the header).
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
revisions are ordered newest first
(i.e. the last entry is for the initial revision;
the first for the most recent one)
Usage example(s):
SourceCodeManager
revisionLogOfContainer:'Array.st'
module:'stx'
directory:'libbasic'
fromRevision:'1.1'
toRevision:nil
|
-
revisionLogOfFile: aFilename fromRevision: rev1 toRevision: rev2
-
return info about the repository container and
(part of) the revisionlog as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container
#revisions -> collection of per-revision info (see below)
for some classes, additional info is returned:
#renamed -> true if the class has been renamed or copied
and the sourceInfo is from the previous one
#expectedFileName -> the filename we would expect (i.e. for the new class)
rev1 / rev2 specify from which revisions a logEntry is wanted:
If rev1 is nil, the first revision is the initial revision
otherwise, the log starts with that revision.
If rev2 is nil, the last revision is the newest revision
otherwise, the log ends with that revision.
If both are nil, no logEntries are extracted (i.e. only the header).
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
revisions are ordered newest first
(i.e. the last entry is for the initial revision;
the first for the most recent one)
-
revisionLogOfFile: aFilename fromRevision: rev1 toRevision: rev2 finishAfter: maxCountOrNil
-
return info about the repository container and
(part of) the revisionlog as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container
#revisions -> collection of per-revision info (see below)
for some classes, additional info is returned:
#renamed -> true if the class has been renamed or copied
and the sourceInfo is from the previous one
#expectedFileName -> the filename we would expect (i.e. for the new class)
rev1 / rev2 specify from which revisions a logEntry is wanted:
If rev1 is nil, the first revision is the initial revision
otherwise, the log starts with that revision.
If rev2 is nil, the last revision is the newest revision
otherwise, the log ends with that revision.
If both are nil, no logEntries are extracted (i.e. only the header).
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
revisions are ordered newest first
(i.e. the last entry is for the initial revision;
the first for the most recent one)
Usage example(s):
SourceCodeManager revisionLogOfFile:'../../libbasic/Array.st' fromRevision:'1.40' toRevision:'1.43'
|
-
revisionLogOfFile: aFilename numberOfRevisions: numRevisions
-
return info about the repository container and
(part of) the revisionlog (numRevisions newest revisions)
as a collection of revision entries.
Return nil on failure.
The returned information is a structure (IdentityDictionary)
filled with:
#container -> the container file name (for container-based SCMs)
#filename -> the actual source file name
#newestRevision -> the revisionString of the newest revision
#numberOfRevisions -> the number of revisions in the container (nil for all)
#revisions -> collection of per-revision info (see below)
for some classes, additional info is returned:
#renamed -> true if the class has been renamed or copied
and the sourceInfo is from the previous one
#expectedFileName -> the filename we would expect (i.e. for the new class)
rev1 / rev2 specify from which revisions a logEntry is wanted:
If rev1 is nil, the first revision is the initial revision
otherwise, the log starts with that revision.
If rev2 is nil, the last revision is the newest revision
otherwise, the log ends with that revision.
If both are nil, no logEntries are extracted (i.e. only the header).
per revision info consists of one record per revision:
#revision -> the revision string
#author -> who checked that revision into the repository
#date -> when was it checked in
#state -> the RCS state
#numberOfChangedLines -> the number of changed line w.r.t the previous
#logMessage -> the checkIn log message
revisions are ordered newest first
(i.e. the last entry is for the initial revision;
the first for the most recent one)
Usage example(s):
SourceCodeManager revisionLogOfFile:'../../libbasic/Array.st' numberOfRevisions:10
SourceCodeManager revisionLogOfFile:'../../libbasic/Array.st' numberOfRevisions:nil
|
-
revisionStringFor: aClass inModule: moduleDir directory: packageDir container: fileName revision: revisionString
-
utility function: return a string usable as initial revision string.
Can be redefined in subclasses
Usage example(s):
self
revisionStringFor:Array
inModule:'stx'
directory:'libbasic'
container:'Array.st'
revision:'123'
|
-
revisionsOf: aClass
-
return a collection of revisions (as strings) found in the repository.
The most recent (newest) revision will be the first in the list.
Return nil on failure.
Usage example(s):
SourceCodeManager revisionsOf:Array
SourceCodeManager newestRevisionOf:Array
|
-
standardRevisionStringFor: aClass inModule: moduleDir directory: packageDir container: fileName revision: revisionString
-
utility function: return a string usable as initial revision string
-
withSourceRewriteHandlerDo: aBlock
-
hook for just-in-time rewriting of a method's sourceCode while filing out
used when saving version_XXX methods in a non-XXX sourceCodeManager,
or when generating sourcecode for another Smalltalk system (VSE fileout)
-
writeHistoryLogSince: timeGoal filterSTSources: filterSTSourcesBoolean filterUser: userFilter filterRepository: repositoryFilter filterModules: moduleFilter filterProjects: projectFilterArg to: aStream
-
send a full historyLog to some stream.
This walks over all possible repository roots.
-
writeHistoryLogSince: timeGoal filterSTSources: filter filterUser: userFilter filterRepository: repositoryFilter filterModules: moduleFilter to: aStream
-
send a full historyLog to some stream.
This walks over all possible repository roots.
-
writeHistoryLogSince: timeGoal filterSTSources: filter filterUser: userFilter filterRepository: repositoryFilter to: aStream
-
send a full historyLog to some stream.
This walks over all possible repository roots.
-
writeHistoryLogSince: timeGoal filterSTSources: filter filterUser: userFilter to: aStream
-
send a full historyLog to some stream.
This walks over all possible repository roots.
-
writeHistoryLogSince: timeGoal filterSTSources: filter to: aStream
-
send a repositories historyLog to some stream
-
writeHistoryLogSince: timeGoal to: aStream
-
send a repositories historyLog to some stream
-
writeRevisionLogMessagesFrom: log to: aStream
-
helper; send the revisionlog to aStream
-
writeRevisionLogMessagesFrom: log withHeader: header to: aStream
-
helper; send the revisionlog to aStream
-
writeRevisionLogOf: aClass fromRevision: rev1 toRevision: rev2 finishAfter: maxCount to: aStream
-
extract a classes log and append it to aStream.
Usage example(s):
SourceCodeManager writeRevisionLogOf:Array fromRevision:'1.40' toRevision:'1.43' to:Transcript
|
-
writeRevisionLogOf: aClass fromRevision: rev1 toRevision: rev2 to: aStream
-
extract a classes log and append it to aStream.
Usage example(s):
SourceCodeManager writeRevisionLogOf:Array fromRevision:'1.40' toRevision:'1.43' to:Transcript
|
-
writeRevisionLogOf: aClass short: shortOrNot to: aStream
-
extract a classes log and append it to aStream.
Usage example(s):
SourceCodeManager writeRevisionLogOf:Array to:Transcript
|
-
writeRevisionLogOf: aClass to: aStream
-
extract a classes log and append it to aStream.
Usage example(s):
SourceCodeManager writeRevisionLogOf:Array to:Transcript
|
source code utilities
-
diffListFor: clsOrNil fileName: classFileName directory: packageDir module: moduleDir revision1: rev1 revision2: rev2
-
return diff info. This is supposed to return a standard diff-like
list of lines, representing the diffs between two revisions.
experimental (for ownershipGraph)
-
diffListFor: clsOrNil fileName: classFileNameArg directory: packageDirArg module: moduleDirArg revision1: rev1 revision2: rev2 cache: cacheIt
-
return diff info. This is supposed to return a standard diff-like
list of lines, representing the diffs between two revisions.
experimental (for ownershipGraph).
This fallback retrieves the two versions and calls a diff
-
ensureDollarsInVersionMethod: aString
-
given the source code of my version method, ensure that it contains dollars for
proper keyword expansion
-
ensureKeyword: keyword inVersionMethod: source
-
nil keyword means that given source code management system
-
ensureKeywordExpansionWith: aCharacter inVersionMethod: aString
-
given the source code of my version method, ensure that it contains aCharacter for
proper keyword expansion
Usage example(s):
self ensureKeywordExpansionWith: $§ inVersionMethod: 'foo ^ ''hello'' '
self ensureKeywordExpansionWith: $§ inVersionMethod: 'foo ^ '' hello '' '
self ensureKeywordExpansionWith: $§ inVersionMethod: 'foo ^ ''§Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.218 2009/10/07 12:12:30 fm Exp §'' '
self ensureKeywordExpansionWith: $$ inVersionMethod: 'foo ^ ''hello'' '
self ensureKeywordExpansionWith: $$ inVersionMethod: 'foo ^ '' hello '' '
self ensureKeywordExpansionWith: $$ inVersionMethod: 'foo ^ ''$','Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.228 2009/10/20 09:55:58 fm Exp $'' '
self ensureKeywordExpansionWith: $§ inVersionMethod: 'foo ^ ''§Head'' '
self ensureKeywordExpansionWith: $§ inVersionMethod: 'foo ^ ''Header§'' '
|
-
ensureKeywordInVersionMethod: source
-
-
ensureNoDollarsInVersionMethod: aString
-
given the source code of another manager's version method, ensure that it does NOT
contain dollars and add $§ instead, to avoid that CVS expands keywords in it
-
extractKeyValueFor: key fromRevisionString: aString
-
extract a particular value from a string which has the format:
key1: value1, key2: value2, .... keyN: valueN
Usage example(s):
self
extractKeyValueFor:'Path'
fromRevisionString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826'
self
extractKeyValueFor:'Time'
fromRevisionString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826'
|
-
repositoryVersionsOfMethod: method for: anAppProvidingResourcesOrNil labelInto: callBackForLabel
-
get versions of method;
does some user interaction via dialogs
subclass responsibility
-
reportHistoryLogSince: timeGoal filterSTSources: filter filterUser: userFilter filterRepository: repositoryFilter filterModules: moduleFilter inTo: aBlock
-
process a full historyLog, evaluate aBlock for each entry, passing
each logs' info in a dictionary.
This walks over all possible repositories.
filterRep may be a collection of repository names (eg. 'stx', 'exept', 'phx' etc.) to only report changes made to one
of those repositories.
userFilter, if a non-nil string or stringCollection,
will filter only changes made by that user(s) (eg. 'sv' or #('sv' 'cg')).
filterModules, if non-empty, will only present changes in that module (eg. 'stx:libbasic')
** This method must be redefined in concrete classes (subclassResponsibility) **
testing
-
isCVS
-
-
isGit
-
-
isMercurial
-
-
isSVN
-
-
isSmallTeam
-
-
isStore
-
PackageAndManager
|