eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'GitSourceCodeManager':

Home

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

Class: GitSourceCodeManager


Inheritance:

   Object
   |
   +--AbstractSourceCodeManager
      |
      +--GitSourceCodeManager

Package:
stx:libbasic3
Category:
System-SourceCodeManagement
Version:
rev: 1.18 date: 2017/12/06 02:34:07
user: cg
file: GitSourceCodeManager.st directory: libbasic3
module: stx stc-classLibrary: libbasic3
Author:
Claus Gittinger

Description:


Attention: this will be removed soon - it has been obsoleted by the
new mercurial support found in libscm/mercurial.

SourceCodeManager which accesses the sourcecode through Git.
ongoing work - unfinished and unusable

Comment:
    The code here is a copy-paste mess; it definitely needs some cleanup...


Related information:



Class protocol:

accessing
o  executeGitCommand: cmd inDirectory: dir

o  executeGitCommand: cmd outputTo: outStreamOrNil errorTo: errStreamOrNil inDirectory: dir

o  gitBinDirectory: ignoredString
ignored - for backward compatibility (to read old settings files)

o  gitCommandTimeout
360

o  gitCommandTimeout: aTimeDuration

o  gitCommitOptions

o  gitCommitOptions: aString

o  gitExecutable
return the name of the git executable.

o  gitExecutable: aString
set the name of the git executable.

o  gitTmpDirectory
return the name of the tmp repository.
That's the directory, where temporary files are created for checkin/checkout.
If nil, the system's default tempDirectory is used.

o  gitTmpDirectory: aPathNameString
set the name of the tmp repository.
That's the directory, where temporary files are created for checkin/checkout.
If nil, the system's default tempDirectory is used.

o  gitUpdateOptions

o  gitUpdateOptions: aString

o  knownModules
return the modules, we currently know

o  knownRepositories
return the modules, we currently know

o  repositoryForPackage: packageId
superclass AbstractSourceCodeManager class says that I am responsible to implement this method

o  repositoryInfoPerModule
return the dictionary, which associates gitRepositories to module names.
If no entry is contained in this dictionary for some module,
the default crepository will be used.

o  repositoryInfoPerModule: aDictionary
set the dictionary, which associates repositories to module names.
If no entry is contained in this dictionary for some module,
the default repository will be used.

o  repositoryName
return the name of the global repository.
This is used, if no per-module repository is defined.

o  repositoryName: aDirectoryName
set the name of the repository;
that's the name of the global repository, which is used
if no specific repository was defined for a module.

o  repositoryName: aRepositoryName forModule: aModuleName
set the repository which provides the sources for all
classes in a particular module.
This can be used from an rc-script, to specify a repository
for a particular module.
If left unspecified, the global (i.e. fallBack) repository is used.

o  repositoryNameForModule: aModuleName
return the repository which provides the sources for all
classes in a particular module.
Nil is returned for unspecified moduleRoots; in this case,
the global (i.e. fallBack) repository will be used for source access.

o  repositoryNameForPackage: packageId
(comment from inherited method)
Return the repository URL for the given package.
Used for testing/debugging source code management configuration

o  workDirectory

o  workDirectory: aPath

basic access
o  checkinClass: aClassOrNil fileName: classFileName directory: packageDir module: moduleDir source: sourceFileOrNil logMessage: logMessage force: force
checkin of a class into the source repository.
Return true if ok, false if not.

basic administration
o  addFile: fileName inDirectory: dirPath

o  checkForExistingContainer: fileName inModule: moduleName directory: packageDirName
check for a container to exist. Return a boolean result.

o  checkForExistingModule: moduleName
check for a module to be present

o  checkForExistingModule: moduleName directory: packageDir
check for a package directory to be present

o  checkin: containerFilename text: someText directory: packageDir module: moduleDir logMessage: logMessage force: force onBranch: branchNameOrNil
(comment from inherited method)
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.

o  commitRepository: repositoryDirectory logMessage: logMessage

o  createContainerFor: aClass inModule: moduleName directory: dirName container: fileName
create a new container & check into it an initial version of aClass

o  createModule: moduleName
create a new module directory

o  createModule: moduleName directory: directory
create a new package directory

o  initialRevisionStringFor: aClass inModule: moduleDir directory: packageDir container: fileName
return a string usable as initial revision string

o  updateRepository: repositoryDirectory

debugging
o  verboseSourceCodeAccess

o  verboseSourceCodeAccess: aBoolean

initialization
o  forgetDisabledModules

o  gitCommandSemaphore
at most 10 git activities concurrently

o  initialize
GitCommandSemaphore := (Semaphore new:10) name:'Concurrent GIT Commands'. "/ at most 10 git activities concurrently

usage example(s):

     AbstractSourceCodeManager initialize
     GitSourceCodeManager initialize

o  initializeForRepository: aDirectoryName
reinitialize.
Can be used from the launcher to change/configure the repository.

o  initializeRepository

queries
o  isContainerBased
(comment from inherited method)
true, if the SCM uses some kind of source container (,v files).
False, if it is like a database or filesystem.

o  isExperimental

o  isResponsibleForPackage: aString
(comment from inherited method)
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.

o  managerTypeName
(comment from inherited method)
Answers version manager name suitable for UI,
i,e., CVS, SubVersion, Perforce

o  nameOfVersionMethodForExtensions
(comment from inherited method)
that is the old name; now, we use extensionsVersion_<SCM>

o  nameOfVersionMethodInClasses
(comment from inherited method)
that is the old name; now, we use version_<SCM>

o  settingsApplicationClass
link to my settings application (needed for the settings dialog

saving
o  savePreferencesOn: aStream

source code administration
o  revisionInfoFromString: aString
return a VersionInfo object filled with revision info.
This extracts the relevant info from aString.

usage example(s):

     self revisionInfoFromString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826' 

testing
o  isGit



ST/X 7.2.0.0; WebServer 1.670 at bd0aa1f87cdd.unknown:8081; Fri, 19 Apr 2024 05:01:35 GMT