eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'SourceCodeManagerUtilities':

Home

Documentation
www.exept.de
Everywhere
for:
[back]

Class: SourceCodeManagerUtilities


Inheritance:

   Object
   |
   +--SourceCodeManagerUtilities
      |
      +--DataBaseSourceCodeManagerUtilities
      |
      +--PerforceSourceCodeManagerUtilities
      |
      +--SourceCodeManagerUtilitiesForContainerBasedManagers
      |
      +--SourceCodeManagerUtilitiesForWorkspaceBasedManagers

Package:
stx:libbasic3
Category:
System-SourceCodeManagement
Version:
rev: 1.430 date: 2024/02/29 13:38:55
user: cg
file: SourceCodeManagerUtilities.st directory: libbasic3
module: stx stc-classLibrary: libbasic3

Description:


utility code which is useful at more than one place
(extracted from the browser)



[instance variables:]

[class variables:]

copyright

COPYRIGHT (c) 2000 eXept Software AG 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.

Class protocol:

Signal constants
o  yesToAllNotification

o  yesToAllQuery

accessing
o  default

o  lastModule
return the value of the static variable 'LastModule' (automatically generated)

o  lastModule: something
set the value of the static variable 'LastModule' (automatically generated)

o  lastPackage
return the value of the static variable 'LastPackage' (automatically generated)

o  lastPackage: something
set the value of the static variable 'LastPackage' (automatically generated)

error handling
o  doesNotUnderstand: aMessage
Bad, method moved to instance side but not forwarded

instance creation
o  forManager: aSourceCodeManager

o  new
return an initialized instance

private-migration
o  compileForwarders
Utility method

Usage example(s):

        SourceCodeManagerUtilities compileForwarders.

resources
o  resourcePackage

utilities
o  classIsNotYetInRepository: aClass withManager: mgr

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  fillSourceCache
moved from the settingsApp to here;
simply accesses all source files to get them
a) fetched from the repository if required
b) loaded into the image if so configured

Usage example(s):

    SourceCodeManagerUtilities fillSourceCache

    FillCachePackageQueue nextPut:'stx:libbasic2'.
    FillCachePackageQueue nextPut:'exept:workflow'.
    FillCachePackageQueue nextPut:'exept:expecco'.

o  nameOfExtensionsContainer

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  setPackageOfAllMethodsIn: aClass to: aPackage

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  setPackageOfAllMethodsInChangeSet: aChangeSet to: aPackage

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  sourceCodeManagerFor: aClass
self warn:'SourceCodeManagement is disabled or not configured.\\Please setup in the Launcher.' withCRs.

o  sourceCodeOfClass: aClass

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  update: something with: aParameter from: changedObject
(comment from inherited method)
dependent is notified of some change -
Default is to try update:with:

o  versionString: a isLessThan: b
SourceCodeManagerUtilities default versionString:'1.10.2' isLessThan:'1.100.1'


** This is an obsolete interface - do not use it (it may vanish in future versions) **

utilities-cvs
o  changeSetForExtensionMethodsForPackage: packageToCheckOut askForRevision: askForRevision usingManager: aSourceCodeManager

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  changeSetForExtensionMethodsForPackage: packageToCheckOut revision: revisionOrNil orAskForRevision: askForRevision usingManager: aSourceCodeManager

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkForExistingModule: module directory: directory container: containerFileName usingManager: mgr allowCreate: allowCreate

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkForExistingModule: module directory: directory usingManager: mgr allowCreate: allowCreate

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkForExistingModule: module usingManager: mgr allowCreate: allowCreate

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinClass: aClass

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinClass: aClass withInfo: aLogInfoOrNil

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinClass: aClass withInfo: aLogInfoOrNil withCheck: doCheckClass

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinClasses: aCollectionOfClass

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrNil

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrNil onBranch: branchNameOrNil

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrStringNil withCheck: doCheckClasses

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrStringNil withCheck: doCheckClasses onBranch: branchNameOrNil

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinExtensionMethods: aCollectionOfMethods forPackage: aPackageID withInfo: aLogInfoOrStringOrNil

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkinExtensionMethods: aCollectionOfMethods forPackage: aPackageID withInfo: aLogInfoOrStringOrNil onBranch: branchNameOrNil

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkoutClass: aClass askForMerge: askForMerge

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkoutClass: aClass askForRevision: askForRevision askForMerge: askForMerge

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkoutClass: aClass askForRevision: askForRevision askForMerge: askForMerge askForConfirmation: askForConfirmation

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkoutExtensionMethodsForPackage: packageToCheckOut askForRevision: askForRevision askForMerge: askForMerge usingManager: aSourceCodeManager

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  compareClassWithRepository: aClass

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  compareClassWithRepository: aClass askForRevision: askForRevision

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  compareProject: aProject withRepositoryVersionFrom: aDateOrNilForNewest

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  compareProject: aProject withRepositoryVersionFrom: aDateOrNilForNewest extensionsOnly: extensionsOnly

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  compareProjectWithRepository: aProject

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  createSourceContainerForClass: aClass

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  defineSourceContainerForClass: aClass title: title text: boxText createDirectories: createDirs createContainer: createContainer

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  diffSetOfProject: aProject againstRepositoryVersionFrom: aDateOrNilForNewest

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  diffSetOfProject: aProject againstRepositoryVersionFrom: aDateOrNilForNewest extensionsOnly: extensionsOnly

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  ensureCorrectVersionMethodsInClass: aClass usingManager: aManager

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  getLogMessageForClassCheckinTakingDefaultsFromPreviousLogInfo: aLogInfoOrNil forClass: aClass valuesInto: aBlock

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  removeSourceContainerForClass: aClass

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  removeSourceContainerForClass: aClass confirm: doConfirm warn: doWarn

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  repositoryLogOf: aClass onto: aStream

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  repositoryLogOf: aClass short: shortOrNot onto: aStream

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  tagClass: aClass as: tag

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  tagClasses: aCollectionOfClasses as: tag

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  tagPath: aPath as: tag usingManager: aManager

** This is an obsolete interface - do not use it (it may vanish in future versions) **

utilities-cvs-helpers
o  getMethodVersionsOfClass: aClass selector: selector numberOfRevisions: numberOfRevisionsOrNil

** This is an obsolete interface - do not use it (it may vanish in future versions) **

utilities-cvs-user interaction
o  askForContainer: boxText title: title note: notice initialModule: initialModule initialPackage: initialPackage initialFileName: initialFileName

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  askForContainer: boxText title: title note: notice initialModule: initialModule initialPackage: initialPackage initialFileName: initialFileName forNewContainer: forNewContainer

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  askForExistingRevision: boxText title: title class: aClass

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  askForExistingRevision: boxText title: title class: clsOrNil manager: aSourceCodeManager module: module package: directory fileName: fileName

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  checkAndWarnAboutBadMessagesInClass: aClass checkAgainHolder: checkAgainHolder

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  getCheckinInfoFor: aClassNameOrPackageNameString initialAnswer: initialAnswerOrNil

o  getCheckinInfoFor: aClassNameOrPackageNameString initialAnswer: initialAnswerOrNil withQuickOption: withQuickOption

o  goodInitialLogMessageForCheckinClassOfClass: aClass
figure out, if there were any non-comment changes.
Provide a reasonable initial log message (I am tired of typing in 'comment only').
This is a q&d hack - not complete and not correct (for example, it will generate a method change
info line, even if the selector was removed afterwards).
So check the outcome.

utilities-encoding
o  guessEncodingOfFile: aFilename

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  guessEncodingOfStream: aStream

** This is an obsolete interface - do not use it (it may vanish in future versions) **


Instance protocol:

accessing
o  confirmNewFiles: aBoolean
if true, ask if new files are about to be added to the repo

o  defaultManager

o  lastSourceLogMessageHeadlines

o  yesToAllNotification

o  yesToAllQuery

error handling
o  doesNotUnderstand: aMessage
Bad, method is not moved the the instance side

initialization
o  initialize
(comment from inherited method)
just to ignore initialize to objects which do not need it

o  setManager: aSourceCodeManager
not yet set by user

utilities
o  allKnownTagsInClasses: aCollectionOfClasses
returns symbolic tags which are present in any given classes (or-set)

Usage example(s):

     SourceCodeManager defaultManager allKnownTagsInClasses:{Array . ByteArray}

o  classIsNotYetInRepository: aClass withManager: mgr

o  nameOfExtensionsContainer

o  setPackageOfAllMethodsIn: aClass to: aPackage
make all methods belong to the classes project

o  setPackageOfAllMethodsInChangeSet: aChangeSet to: aPackage
make all methods belong to the classes project

o  sourceCodeForExtensions: aCollectionOfMethods package: aPackageID forManager: scmManagerOrNil
don't write a timestamp. Otherwise we would always generate a new version, even if nothing changed

o  sourceCodeManagerFor: aClass

o  sourceCodeOfClass: aClass

o  validateConsistencyOfPackage: aPackage

o  validateConsistencyOfPackage: aPackageSymbolOrClass doClasses: doClasses doExtensions: doExtensions
also done by ProjectChecker...

o  versionString: a isLessThan: b
compare two strings of the form: a.b.c...

Usage example(s):

     self assert:(self default versionString:'12.34.66' isLessThan:'12.35.66').
     self assert:(self default versionString:'12.34.66' isLessThan:'12.35.67').
     self assert:(self default versionString:'11.34.66' isLessThan:'12.34.67').
     self assert:(self default versionString:'11.35.66' isLessThan:'12.34.67').
     self assert:(self default versionString:'13.35.66' isLessThan:'12.34.67') not.
     self assert:(self default versionString:'13.35.66' isLessThan:'13.34.67') not.
     self assert:(self default versionString:'13.35.66' isLessThan:'13.35.67').
     self assert:(self default versionString:'13.35.66' isLessThan:'13.35.65') not.
     self assert:(self default versionString:'13.35.66.1' isLessThan:'13.35.66') not.
     self assert:(self default versionString:'13.35.66' isLessThan:'13.35.66.1').
     self assert:(self default versionString:'13.35.66.2' isLessThan:'13.35.66.1') not.
     self assert:(self default versionString:'13.35.66.1' isLessThan:'13.35.66.2').

utilities-encoding
o  guessEncodingOfFile: aFilename
look for a string
encoding #name
or:
encoding: name
within the given buffer
(which is usually the first few bytes of a textFile).
If that's not found, use heuristics (in CharacterArray) to guess.

** This is an obsolete interface - do not use it (it may vanish in future versions) **

o  guessEncodingOfStream: aStream
look for a string of the form
encoding #name
or:
encoding: name
in the first few bytes of aStream.

** This is an obsolete interface - do not use it (it may vanish in future versions) **

utilities-scm
o  askForPackageVersion: question with: includeSubProjectsHolderOrNil knownTags: knownTags into: aTwoArgBlock

o  askForTagForClasses: classesToFetchExistingTagsFrom askForRevision: askForRevisionBool
open a dialog and ask for a tag name.
Fetch existing tag names from classesToFetchExistingTagsFrom.
If askForRevisonBool is true, ask also for a revision number or tag.
Answer an association tag -> revision.

Usage example(s):

     CVSSourceCodeManager utilities askForTagForClasses:{Array} askForRevision:true
     CVSSourceCodeManager utilities askForTagForClasses:{Array} askForRevision:false

o  askForTagForClasses: classesToFetchExistingTagsFrom askForRevision: askForRevisionBool initialAnswer: tagSuggestion
open a dialog and ask for a tag name.
Fetch existing tag names from classesToFetchExistingTagsFrom.
If askForRevisonBool is true, ask also for a revision number or tag.
Answer an association tag -> revision.

Usage example(s):

     self askForTagForClasses:{Array} askForRevision:true
     self askForTagForClasses:{Array} askForRevision:false

o  changeSetForExtensionMethodsForPackage: packageToCheckOut askForRevision: askForRevision usingManager: aSourceCodeManager
check-out an extension container from the source repository,
and return the methods there as a change set.
If askForRevision is false, check-out the newest version.
Return a changeSet or nil (if any error occurred)

o  changeSetForExtensionMethodsForPackage: packageToCheckOut revision: revisionOrNil orAskForRevision: askForRevision usingManager: aSourceCodeManager
check-out an extension container from the source repository, and return the methods there as a change set.
If askForRevision is false, check-out the newest version.
Return a changeSet or nil (if any error occurred)

o  checkForExistingModule: module directory: directory container: containerFileName usingManager: mgr allowCreate: allowCreate

o  checkForExistingModule: module directory: directory usingManager: mgr allowCreate: allowCreate

o  checkForExistingModule: module usingManager: mgr allowCreate: allowCreate

o  checkOutPackages: packages askForRevision: askForRevision
Updates code of given packages (loaded in the image) to a specific revision.
If `askForRevision` is true, then user is asked to specify to which revision to
update. If `askForRevision` is false, then packages are updated to a 'newest'
revision.

NOTE: Definition of `newest` revision may vary. For SCMs which allows for multiple
heads, it is not clear which one it is. In that case, even if `askForRevision` is
false, this method may result in user interation, asking user to select which of the
newest she wants.

NOTE: Naming is bit confusing, it should be something like #updatePackages:ask...
but to keep this in line with other methods, we use #checkOutPackages

** This method must be redefined in concrete classes (subclassResponsibility) **

o  checkinClass: aClass
check a class into the source repository.
Asks interactively for a log-message.

o  checkinClass: aClass withInfo: aLogInfoOrNil
check a class into the source repository.
If the argument, aLogInfoOrNil isNil, ask interactively for a log-message.

o  checkinClass: aClass withInfo: aLogInfoOrNil withCheck: doCheckClass
check a class into the source repository.
If the argument, aLogInfoOrNil isNil, ask interactively for log-message.
If doCheckClass is true, the class is checked for send of halts etc.

o  checkinClass: aClass withInfo: aLogInfoOrNil withCheck: doCheckClassHolder usingManager: managerOrNil
check a class into the source repository.
If the argument, aLogInfoOrNil isNil, ask interactively for log-message.
If doCheckClass is true, the class is checked for send of halts etc.

o  checkinClass: aClass withInfo: aLogInfoOrNil withCheck: doCheckClassHolder usingManager: managerOrNil confirmNewContainer: confirmNewContainer
check a class into the source repository.
If the argument, aLogInfoOrNil isNil, ask interactively for log-message.
If doCheckClass is true, the class is checked for send of halts etc.

o  checkinClass: aClass withInfo: aLogInfoOrNil withCheck: doCheckClassHolder usingManager: managerOrNil confirmNewContainer: confirmNewContainer onBranch: branchNameOrNil
check a class into the source repository.
If the argument, aLogInfoOrNil isNil, ask interactively for log-message.
If doCheckClass is true, the class is checked for send of halts etc.

o  checkinClasses: aCollectionOfClass
check a collection of classes into the source repository.
Asks interactively for log-message.

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrNil
check a bunch of classes into the source repository.
If the argument, aLogInfoOrNil isNil, ask interactively for log-message.

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrNil onBranch: branchNameOrNil
check a bunch of classes into the source repository.
If the argument, aLogInfoOrNil isNil, ask interactively for log-message.

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrStringNil withCheck: doCheckClassesHolder
check a bunch of classes into the source repository.
If the argument, aLogInfoOrStringNil isNil, ask interactively for log-message.

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrStringNil withCheck: doCheckClassesHolder onBranch: branchNameOrNil
check a bunch of classes into the source repository.
If the argument, aLogInfoOrStringNil isNil, ask interactively for log-message.

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrStringOrNil withCheck: doCheckClassesHolder usingManager: aManagerOrNil
check a bunch of classes into the source repository.
If the argument, aLogInfoOrStringOrNil isNil, ask interactively for log-message.

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrStringOrNil withCheck: doCheckClassesHolder usingManager: aManagerOrNil confirmNewContainer: confirmNewContainer
check a bunch of classes into the source repository.
If the argument, aLogInfoOrStringOrNil isNil, ask interactively for log-message.

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrStringOrNil withCheck: doCheckClassesHolder usingManager: aManagerOrNil confirmNewContainer: confirmNewContainer onBranch: branchNameOrNil
check a bunch of classes into the source repository.
If the argument, aLogInfoOrStringOrNil isNil, ask interactively for log-message.

o  checkinClasses: aCollectionOfClasses withInfo: aLogInfoOrStringOrNil withCheck: doCheckClassesHolder usingManager: aManagerOrNil onBranch: branchNameOrNil
check a bunch of classes into the source repository.
If the argument, aLogInfoOrStringOrNil isNil, ask interactively for log-message.

o  checkinPackage: packageToCheckIn classes: doClasses extensions: doExtensions buildSupport: doBuild askForMethodsInOtherPackages: askForMethodsInOtherPackages

o  checkinPackage: packageToCheckIn classes: doClasses extensions: doExtensions buildSupport: doBuild askForMethodsInOtherPackages: askForMethodsInOtherPackages onBranch: branchNameOrNil

o  checkinPackage: packageToCheckIn classes: doClasses extensions: doExtensions buildSupport: doBuild winRCOnly: winRCOnly askForMethodsInOtherPackages: askForMethodsInOtherPackages onBranch: branchNameOrNil

** This method must be redefined in concrete classes (subclassResponsibility) **

o  checkoutClass: aClass askForMerge: askForMerge
check-out a class from the source repository.

o  checkoutClass: aClass askForRevision: askForRevision askForMerge: askForMerge
check-out a class from the source repository.
If askForRevision is false, check-out the newest version.

o  checkoutClass: aClass askForRevision: askForRevision askForMerge: askForMerge askForConfirmation: askForConfirmation
check-out a class from the source repository.
If askForRevision is false, check-out the newest version.

o  checkoutExtensionMethodsForPackage: packageToCheckOut askForRevision: askForRevision askForMerge: askForMerge usingManager: aSourceCodeManager
check-out a class from the source repository.
If askForRevision is false, check-out the newest version.

o  compareClassWithRepository: aClass
open a diff-textView comparing the current (in-image) version
against its orgiginal version found in the repository.

Usage example(s):

      self compareClassWithRepository:Array

o  compareClassWithRepository: aClass askForRevision: askForRevision
open a diff-textView comparing the current (in-image) version
against the newest (askForRevision=false)
or an asked-for version (askForRevision=true) found in the repository.

Usage example(s):

      self compareClassWithRepository:Array

o  comparePackages: packages askForRevision: askForRevision
Compares code of given packages (loaded in the image) against a specific revision
and opens a diff browser on differences.

If `askForRevision` is true, then user is asked to specify to which revision to
update. If `askForRevision` is false, then packages are updated to a 'newest'
revision.

NOTE: Definition of `newest` revision may vary. For SCMs which allows for multiple
heads, it is not clear which one it is. In that case, even if `askForRevision` is
false, this method may result in user interaction, asking user to select which of the
newest she wants.

o  comparePackages: packages askForRevision: askForRevision extensionsOnly: extensionsOnly
Compares code of given packages (loaded in the image) against a specific revision
and opens a diff browser on differences.

If `askForRevision` is true, then user is asked to specify to which revision to
update. If `askForRevision` is false, then packages are updated to a 'newest'
revision.

NOTE: Definition of `newest` revision may vary. For SCMs which allows for multiple
heads, it is not clear which one it is. In that case, even if `askForRevision` is
false, this method may result in user interaction, asking user to select which of the
newest she wants.

o  compareProject: aProject repositoryVersionFrom: dateOrNilV1 orTag: symbolicNameOrNilV1 againstRepositoryVersionFrom: dateOrNilV2 orTag: symbolicNameOrNilV2 extensionsOnly: extensionsOnly

o  compareProject: aProject withRepositoryVersionFrom: aDateOrNilForNewest

o  compareProject: aProject withRepositoryVersionFrom: aDateOrNilForNewest extensionsOnly: extensionsOnly

o  compareProject: aProject withRepositoryVersionTaggedAs: aSymbolicName

o  compareProject: aProject withRepositoryVersionTaggedAs: aTagOrNil extensionsOnly: extensionsOnly
if aTagOrNil is nil, compare against the newest version in the repositry

Usage example(s):

     CVSSourceCodeManager utilities
            compareProject:'stx:libbasic2'
            withRepositoryVersionTaggedAs:nil 
            extensionsOnly:false.

     CVSSourceCodeManager utilities
            compareProject:'stx:libbasic2'
            withRepositoryVersionTaggedAs:'expecco_2_10_0' 
            extensionsOnly:false.

o  compareProjectWithRepository: aProject

o  compareTwoPackageVersions: packages
Compares two versions of given packages.

o  compareTwoPackageVersions: packagesIn extensionsOnly: extensionsOnly
Compares two versions of given packages
and opens a diff browser on differences.

Usage example(s):

     CVSSourceCodeManager utilities
        compareTwoPackageVersions:#('stx:libbasic') extensionsOnly:true   

o  createSourceContainerForClass: aClass
let user specify the source-repository values for aClass.
Return false, if failed.

o  createSourceContainerForClass: aClass usingManager: aManager
let user specify the source-repository values for aClass.
Return false, if failed.

o  createSourceContainerForClass: aClass usingManager: aManager confirmNewContainer: confirmNewContainer
let user specify the source-repository values for aClass.
Return false, if failed.

o  defineSourceContainerForClass: aClass title: title text: boxText createDirectories: createDirs createContainer: createContainer
let user specify the source-repository values for aClass

o  defineSourceContainerForClass: aClass usingManager: mgr title: title text: boxText createDirectories: createDirs createContainer: createContainer
let user specify the source-repository values for aClass

o  defineSourceContainerForClass: aClass usingManager: mgr title: title text: boxText createDirectories: createDirs createContainer: createContainer confirmNewContainer: confirmNewContainer
let user specify the source-repository values for aClass

o  diffSetOfProject: aProject againstRepositoryVersionFrom: aDateOrNilForNewest

o  diffSetOfProject: aProject againstRepositoryVersionFrom: aDateOrNilForNewest extensionsOnly: extensionsOnly

o  diffSetOfProject: aProject againstRepositoryVersionFrom: aDateOrNilForNewest orTag: aTagOrNil
return a diffset against either the newest (head), or the version at a particular date,
or a the version with a particular tag.

o  diffSetOfProject: aProject againstRepositoryVersionFrom: aDateOrNilForNewest orTag: aTagOrNil extensionsOnly: extensionsOnly
return a diffset against the version at a particular date (if not nil),
or a the version with a particular tag (if not nil),
or the newest (head) (if both are nil).

o  diffSetOfProject: aProject againstRepositoryVersionTaggedAs: symbolicName

o  diffSetOfProject: aProject againstRepositoryVersionTaggedAs: aTag extensionsOnly: extensionsOnly

o  diffSetOfProject: aProject repositoryVersionFrom: aDateOrNilV1 orTag: aTagOrNilV1 againstRepositoryVersionFrom: aDateOrNilV2 orTag: aTagOrNilV2 extensionsOnly: extensionsOnly
return a diffset of two repository versions,
each specified by either a version at a particular date,
or a the version with a particular tag.

o  diffsetAgainstRepositoryOfClass: aClass askForRevision: askForRevision
return the differences (or nil) comparing the current (in-image) version
against the newest (askForRevision=false)
or an asked-for version (askForRevision=true) found in the repository.
Return nil, if there are no differences;
raise an error, if the source cannot be retrieved from the repository.

o  ensureCorrectVersionMethodsInClass: aClass usingManager: aManager
(theMetaclass includesSelector:oldVersionMethodName) ifTrue:[

o  fetchSourceOf: aClass askForRevision: askForRevision into: aBlockToReturnMultipleValues
fetch the source of either the newest version or the revision being asked for,
or nil, if there are any problems.
Helper method

o  getLogMessageForCheckinTakingDefaultsFromPreviousLogInfo: aLogInfoOrNil initialLogMessage: initialLogMessage title: title isClassCheckin: isClassCheckin showChangesAction: showChangesAction validateConsistencyAction: validateConsistencyAction valuesInto: aBlock
open a dialog, asking for commit/checkin log info.
Returns 2 values:
a log message
and additional checkinInfo (containing things like markAsStable, etc,)

o  getLogMessageForClassCheckinTakingDefaultsFromPreviousLogInfo: aLogInfoOrNil forClass: aClassOrNil valuesInto: aBlock
open a dialog, asking for commit/checkin log info for a class checkin.
Returns 2 values:
a log message
and additional checkinInfo (containing things like markAsStable, etc,)

o  knownTagsInPackages: packages
return the symbolic names given to any version in packages.
Being lazy, assume tags are persistent across packages (which they are not required to be...)
and only fetch the tag names from the first given package.
May raise an error, if the repository cannot be accessed

Usage example(s):

     CVSSourceCodeManager utilities knownTagsInPackages:#( 'stx:libbasic' 'stc:libbasic2' )

o  removeSourceContainerForClass: aClass
show container & let user confirm twice.

o  removeSourceContainerForClass: aClass confirm: doConfirm warn: doWarn
show container & optionally let user confirm twice.

o  removeSourceContainerForClass: aClass usingSourceInfo: info confirm: doConfirm warn: doWarn
show container & optionally let user confirm twice.

o  repositoryLogOf: aClass onto: aStream

o  repositoryLogOf: aClass short: shortOrNot onto: aStream
old

o  tagClass: aClass as: tag
set a symbolicName for the head (most recent) revision.

o  tagClasses: aCollectionOfClasses as: tag

o  tagClasses: aCollectionOfClasses as: tag revision: revision
Modified (format): / 07-12-2017 / 10:48:36 / cg

o  tagPackage: package as: tag
TODO: what about build support files and extensions???

o  tagPath: aPath as: tag usingManager: aManager

utilities-scm-helpers
o  getMethodVersionsOfClass: aClass selector: selector numberOfRevisions: numberOfRevisionsOrNil
check-out all previous versions of aClass and retrieve the history of selector.
Return a dictionary associating revision with a changeList entries for that method.
Unfinished - need a GUI for that.

Usage example(s):

     self getMethodVersionsOfClass:MenuPanel selector:#'helpTextForItem:' numberOfRevisions:20
     self getMethodVersionsOfClass:NewLauncher class selector:#'menu' numberOfRevisions:20

utilities-scm-user interaction
o  askForContainer: boxText title: title note: notice initialModule: initialModule initialPackage: initialPackage initialFileName: initialFileName
open a dialog asking for a source container;
return a dictionary containing module, package and filename,
or nil if canceled.

o  askForContainer: boxText title: title note: notice initialModule: initialModule initialPackage: initialPackage initialFileName: initialFileName forNewContainer: forNewContainer
open a dialog asking for a source container;
return a dictionary containing module, package and filename,
or nil if canceled.

Usage example(s):

     self 
        askForContainer:'enter container' title:'container' note:'some note'
        initialModule:'foo' initialPackage:'bar' initialFileName:'baz'        

o  askForExistingRevision: boxText title: title class: aClass
open a dialog asking for a containers revision;
return a revision number, or nil if canceled.

o  askForExistingRevision: boxText title: title class: clsOrNil manager: aSourceCodeManager module: module package: directory fileName: fileName
open a dialog asking for a containers revision;
return a revision number, or nil if canceled.

Usage example(s):

     CVSSourceCodeManager utilities
        askForExistingRevision:'enter revision'
        title:'revision'
        class:Array
        manager:CVSSourceCodeManager 
        module:'stx'
        package:'libbasic'
        fileName:nil

o  checkAndWarnAboutBadMessagesInClass: aClass checkAgainHolder: checkAgainHolder
check if a class contains message-sends to:
#halt , #halt:
#error
#todo , #todo:
(and maybe more in the future)

Only checks in non-extension methods - as this is only called when checking

Usage example(s):

     self checkAndWarnAboutBadMessagesInClass:(SourceCodeManagerUtilities)  

o  getCheckinInfoFor: aClassNameOrPackageNameString initialAnswer: initialAnswerOrNil
ask for a log message for checking in a class (plus checkinQuick state info),
and other info (mark as stable, for example).
Return the info-object (actually: the dialog) or nil if aborted.

Usage example(s):

     SourceCodeManagerUtilities getCheckinInfoFor:'hello' initialAnswer:'bla'

o  getCheckinInfoFor: aClassNameOrPackageNameString initialAnswer: initialAnswerOrNil withQuickOption: withQuickOption
ask for a log message for checking in a class (plus checkinQuick state info),
and other info (mark as stable, for example).
Return the info-object (actually: the dialog) or nil if aborted.

Usage example(s):

     SourceCodeManagerUtilities default getCheckinInfoFor:'hello' initialAnswer:'bla' withQuickOption:true

o  getCheckinInfoFor: infoString initialAnswer: initialAnswerOrNil withQuickOption: withQuickOption withValidateConsistencyOption: withValidateConsistencyOption
ask for a log message for checking in a class (plus checkinQuick state info),
and other info (mark as stable, for example).
Return the info-object (actually: the dialog) or nil if aborted.

Usage example(s):

     SourceCodeManagerUtilities default getCheckinInfoFor:'hello' initialAnswer:'bla'

o  getCheckinInfoFor: infoString initialAnswer: initialAnswerOrNil withQuickOption: withQuickOption withValidateConsistencyOption: withValidateConsistencyOption isClassCheckin: isClassCheckin showChangesAction: showChangesActionOrNil
ask for a log message for checking in a class (plus checkinQuick state info),
and other info (mark as stable, for example).
Return the info-object (actually: the dialog) or nil if aborted.

Usage example(s):

     SourceCodeManagerUtilities default getCheckinInfoFor:'hello' initialAnswer:'bla'

o  getCheckinInfoFor: infoString initialAnswer: initialAnswerOrNil withQuickOption: withQuickOption withValidateConsistencyOption: withValidateConsistencyOption showChangesAction: showChangesActionOrNil
ask for a log message for checking in a class (plus checkinQuick state info),
and other info (mark as stable, for example).
Return the info-object (actually: the dialog) or nil if aborted.

Usage example(s):

     SourceCodeManagerUtilities default getCheckinInfoFor:'hello' initialAnswer:'bla'

o  revisionForSymbolicName: tag class: cls fileName: classFileName directory: packageDir module: moduleDir manager: aSourceCodeManager
given a tag, return the corresponding revision

Usage example(s):

     CVSSourceCodeManager 
        revisionForSymbolicName:'stable' 
        class:Array fileName:'Array.st' 
        directory:'libbasic' module:'stx' 



ST/X 7.7.0.0; WebServer 1.702 at 20f6060372b9.unknown:8081; Mon, 18 Nov 2024 04:40:55 GMT