PerforceSourceCodeManager.st
author Claus Gittinger <cg@exept.de>
Tue, 19 Apr 2011 14:16:22 +0200
changeset 2354 ff5d19f308b4
parent 2353 8841e465eb49
child 2355 6c21470136d2
permissions -rw-r--r--
added: #getWorkSpaceDepotPrefixToModuleFrom: #revisionLogOf:fromRevision:toRevision:numberOfRevisions:fileName:directory:module:moduleDir: #settingsApplicationClass comment/format in: #checkForExistingModule: #executePerforceCommand:module:inDirectory:log:pipe:clientName:inputFrom: changed:8 methods
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libbasic3' }"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
AbstractSourceCodeManager subclass:#PerforceSourceCodeManager
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
     4
        instanceVariableNames:''
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
     5
        classVariableNames:'PerforceExecutable PerforceModuleRoots PerforceClient
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
     6
                PerforcePort PerforceUser PerforcePassword PerforceTempDir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
     7
                Verbose PerforceCommandSemaphore PerforceEnabled
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
     8
                PerforceCacheDirectoryName'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
     9
        poolDictionaries:''
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    10
        category:'System-SourceCodeManagement'
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
Object subclass:#CheckInDefinition
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    14
        instanceVariableNames:'class packageDir classFileName sourceFileName force logMessage
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    15
                moduleName manager tempDirectory workSpaceDefinition
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    16
                newestRevision definitionClass'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    17
        classVariableNames:''
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    18
        poolDictionaries:''
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    19
        privateIn:PerforceSourceCodeManager
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
    22
Object subclass:#WorkSpaceDefinition
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    23
        instanceVariableNames:'client host localDir owner repositoryDir root workSpaceName
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
    24
                workSpaceDefinitionFilename moduleName'
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    25
        classVariableNames:''
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    26
        poolDictionaries:''
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    27
        privateIn:PerforceSourceCodeManager
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
    28
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
    29
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!PerforceSourceCodeManager class methodsFor:'initialization'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
forgetDisabledModules
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
    ^ self
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
initialize
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    PerforceCommandSemaphore := Semaphore new:10.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
!PerforceSourceCodeManager class methodsFor:'accessing'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
cacheDirectoryName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    "return the name of the cache directory, where checked out class
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
     sources are kept for faster access. The default is '/tmp/stx_sourceCache'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
     This cache is shared among all ST/X users on a system."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    ^ PerforceCacheDirectoryName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    "Modified: 12.9.1996 / 02:20:45 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
cacheDirectoryName:aStringOrFilename
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    "set the name of the cache directory, where checked out class
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
     sources are kept for faster access. The default is '/tmp/stx_sourceCache'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
     This cache is shared among all ST/X users on a system.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
     The directory is typically set via the launchers setting menu, or
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
     from a startup rc-file."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    PerforceCacheDirectoryName := aStringOrFilename
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    "Created: 16.12.1995 / 15:18:43 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    "Modified: 12.9.1996 / 02:21:35 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
perforceClient
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    |envVar|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    PerforceClient notNil ifTrue:[ ^ PerforceClient].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    envVar := OperatingSystem getEnvironment:'P4CLIENT'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    envVar notEmptyOrNil ifTrue:[ ^ envVar].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    ^ 'workspace'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
perforceClient:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    PerforceClient := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
perforceEnabled
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    PerforceEnabled notNil ifTrue:[ ^ false].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    ^ PerforceEnabled
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
perforceEnabled:enable
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    PerforceEnabled := enable.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
perforceExecutable
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    ^ PerforceExecutable ? 'p4'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
perforceExecutable:aString
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    "set the name of the cvs executable."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    aString isEmptyOrNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
    99
        PerforceExecutable := nil
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   101
        PerforceExecutable := aString.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    "Created: / 21-09-2006 / 15:31:59 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    "Modified: / 21-09-2006 / 16:41:33 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
perforcePassword
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    |envVar|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    PerforcePassword notNil ifTrue:[ ^ PerforcePassword].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    envVar := OperatingSystem getEnvironment:'P4PASSWD'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    envVar notEmptyOrNil ifTrue:[ ^ envVar].
2341
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   114
    ^ 'pass'
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   115
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   116
    "Modified: / 19-04-2011 / 10:46:56 / cg"
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
perforcePassword:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    PerforcePassword := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
perforcePort
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    |envVar|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    PerforcePort notNil ifTrue:[ ^ PerforcePort].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    envVar := OperatingSystem getEnvironment:'P4PORT'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    envVar notEmptyOrNil ifTrue:[ ^ envVar].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    ^ 'localhost:1666'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
perforcePort:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    PerforcePort := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
perforceUser
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    |envVar|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    PerforceUser notNil ifTrue:[ ^ PerforceUser].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    envVar := OperatingSystem getEnvironment:'P4USER'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    envVar notEmptyOrNil ifTrue:[ ^ envVar].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    ^ OperatingSystem getLoginName ? 'user'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
perforceUser:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    PerforceUser := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
repositoryInfoPerModule
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    "Superclass AbstractSourceCodeManager class says that I am responsible to implement this method"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    ^ PerforceModuleRoots ? Dictionary new
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
repositoryInfoPerModule:aDictionary
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    "set the dictionary, which associates CVSRoots to module names.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
     If no entry is contained in this dictionary for some module,
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
     the default cvsRoot (CVSRoot) will be used."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    PerforceModuleRoots := aDictionary
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
repositoryName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    "return the name of the repository.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
     Since this is an abstract class, return nil (i.e. none)"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
    ^ (self perforceClient ,':',
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
       self perforceUser, ':',
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
       (self perforcePassword ? 'pass'), '@',
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
       self perforcePort)
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    "Modified: 12.9.1996 / 02:20:45 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    "Created: 14.9.1996 / 13:21:37 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
repositoryName:settingsString
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
    "return the name of the repository.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
     Since this is an abstract class, return nil (i.e. none)"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    |settings|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    settings := self getPerforceSettingsFromString:settingsString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    self perforceClient:(settings at:#client ifAbsent:nil).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    self perforceUser:(settings at:#user ifAbsent:nil).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    self perforcePassword:(settings at:#password ifAbsent:nil).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    self perforcePort:(settings at:#port ifAbsent:nil).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
    "Modified: 12.9.1996 / 02:20:45 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    "Created: 14.9.1996 / 13:21:37 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
repositoryNameForModule:aModuleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    |settings|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    settings := self getPerforceSettingsForModule:aModuleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    settings isNil ifTrue:[ ^ ''].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    ^ ((settings at:#client ifAbsent:'') ,':',
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
       (settings at:#user ifAbsent:''), ':',
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
       (settings at:#password ifAbsent:''), '@',
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
       (settings at:#port ifAbsent:''))
2341
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   200
!
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   201
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   202
verboseSourceCodeAccess
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   203
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   204
    ^ Verbose
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   205
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   206
    "Created: / 19-04-2011 / 10:52:29 / cg"
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   207
!
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   208
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   209
verboseSourceCodeAccess:aBoolean
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   210
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   211
    Verbose := aBoolean
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   212
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   213
    "Created: / 19-04-2011 / 10:52:43 / cg"
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
!PerforceSourceCodeManager class methodsFor:'basic access'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
checkoutModule:aModule directory:aPackage andDo:aBlock
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    "check out everything from a package into a temporary directory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
     Then evaluate aBlock, passing the name of that temp-directory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
     Afterwards, the tempDir is removed.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
     Return true, if OK, false if any error occurred."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
    self shouldImplement
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
createTempDirectory:packageDir forModule:moduleDir
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    "create a temp directory for checking out"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    |tempdir dir|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    "/ if CVSTempDir isNil, use current.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    OperatingSystem errorSignal handle:[:ex |
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   234
        self reportError:('cannot create temporary directory').
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   235
        ^ nil.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    ] do:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   237
        tempdir := Filename newTemporaryDirectoryIn:(self perforceTmpDirectory).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
    moduleDir notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   241
        dir := tempdir construct:moduleDir.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   242
        dir makeDirectory.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   244
        packageDir notNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   245
            dir := dir construct:packageDir.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   246
            dir recursiveMakeDirectory.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   247
        ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   248
        dir exists ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   249
            (tempdir construct:moduleDir) recursiveRemove.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   250
            tempdir recursiveRemove.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   251
            self reportError:('cannot create temporary directory').
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   252
            ^ nil.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   253
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
    ^ tempdir
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    "self createTempDirectory:'fooPackage' forModule:'fooModule'"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    "Created: / 09-12-1995 / 19:14:35 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
    "Modified: / 19-12-1995 / 16:13:02 / stefan"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
    "Modified: / 29-08-2006 / 13:16:23 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
savePreferencesOn:aStream
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
    aStream nextPutLine:'  PerforceSourceCodeManager notNil ifTrue:['.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    aStream nextPutLine:'    PerforceSourceCodeManager repositoryInfoPerModule:' , self repositoryInfoPerModule storeString , '.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    PerforceExecutable notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   268
        aStream nextPutLine:'    PerforceSourceCodeManager perforceExecutable:' , PerforceExecutable storeString , '.'.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
    (Smalltalk at:#SourceCodeManager) == self ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   271
        aStream nextPutLine:'    Smalltalk at:#SourceCodeManager put: PerforceSourceCodeManager.'.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   272
        aStream nextPutLine:'    PerforceSourceCodeManager initializeForRepository:' , self repositoryName storeString , '.'.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
    aStream nextPutLine:'  ].'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
    "Created: / 09-11-2006 / 15:09:25 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    "Modified: / 10-11-2006 / 18:14:16 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
streamForClass:cls fileName:fileName revision:revision directory:packageDir module:moduleDir cache:doCache
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    "extract a classes source code and return an open readStream on it.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
     A revision of nil selects the current (in image) revision.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
     The classes source code is extracted using the revision and the sourceCodeInfo,
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
     which itself is extracted from the classes packageString."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
    |cacheIt cacheDir classFileName fullName cachedSourceFilename cacheSubDir cachedFile tempdir checkoutName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
     checkoutNameLocal revisionArg revMsg fullTempName fullCachedName stream tempFile cmd inDirectory inStream outStream
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
     line modulDir lineNr result|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
    cacheIt := doCache.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
    (cacheIt and:[revision ~~ #newest and:[revision notNil]]) ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   292
        (cacheDir := self sourceCacheDirectory) isNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   293
            'PerforceSourceCodeManager [warning]: no source cache directory' errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   294
        ]
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
    classFileName := fileName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
    classFileName isNil ifTrue:[classFileName := cls classBaseFilename].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
    (classFileName endsWith:',v') ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   301
        classFileName := classFileName copyWithoutLast:2.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
    (classFileName endsWith:'.st') ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   304
        cls notNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   305
            classFileName := classFileName copyWithoutLast:3.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   306
        ]
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
    fullName := moduleDir , '/' , packageDir , '/' , classFileName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
    cls notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   310
        fullName := fullName , '.st'.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    (revision isNil or:[revision == #newest]) ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   314
        cachedSourceFilename := classFileName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   316
        cachedSourceFilename := classFileName , '_' , revision.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
    cacheDir notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   320
        cacheSubDir := cacheDir construct:moduleDir.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   321
        cacheSubDir exists ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   322
            cacheSubDir := cacheSubDir construct:packageDir.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   323
            cacheSubDir exists ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   324
                cachedFile := cacheSubDir construct:cachedSourceFilename.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   325
                cachedFile exists ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   326
                    ^ cachedFile readStream
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   327
                ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   328
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   329
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
    "/
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
    "/ first, create a temporary work tree
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
    "/ Do not make module and package directories, their existence cause cvs checkout to fail in server mode
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
    "/
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
    tempdir := self createTempDirectory:nil forModule:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
    "/
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
    "/ check it out there
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
    "/
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
    checkoutName :=  fullName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
    modulDir := moduleDir asFilename construct:packageDir.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
    checkoutNameLocal := modulDir constructString:(fullName asFilename baseName).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
    (revision isNil or:[revision == #newest]) ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   348
        cachedSourceFilename := classFileName.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   349
        revisionArg := ''.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   350
        revMsg := ''.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   352
        cachedSourceFilename := classFileName , '_' , revision.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   353
        revisionArg := ' -r ' , revision.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   354
        revMsg := ' (' , revision , ')'.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
    self activityNotification:'checking out source ' , checkoutName , revMsg.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
    fullTempName := tempdir construct:checkoutNameLocal.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
    cmd := ('print ' , classFileName, '.st#', revision).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
    inDirectory := (Filename currentDirectory asAbsoluteFilename construct:modulDir) pathName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   363
                    module:moduleDir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   364
                    inDirectory:inDirectory
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   365
                    log:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   366
                    pipe:false.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   368
        ('PerforceSourceCodeManager [error]: error execute command ', cmd) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   369
        ^ nil
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
    inStream := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   372
                    module:moduleDir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   373
                    inDirectory:inDirectory
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   374
                    log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   375
                    pipe:true.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
    inStream isNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   378
        ('PerforceSourceCodeManager [error]: could not get Stream from ', cmd) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   379
        ^ nil
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
    FileStream openErrorSignal handle:[:ex|
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   382
        ('PerforceSourceCodeManager [error]: can not create ', fullTempName pathName) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   383
        ^ nil.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
    ] do:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   385
        fullTempName directory recursiveMakeDirectory.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   386
        outStream := fullTempName writeStream.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
    lineNr := 1.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
    [inStream atEnd not] whileTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   390
        line:= inStream nextLine.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   391
        line notNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   392
            lineNr = 1 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   393
            ] ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   394
                outStream nextPutLine:line.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   395
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   396
        ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   397
        lineNr := lineNr + 1.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
    outStream close.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
    (cacheSubDir isNil) ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   402
        cacheIt := false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   404
        cacheSubDir recursiveMakeDirectory.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   405
        fullCachedName := cacheSubDir constructString:cachedSourceFilename.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
    fullTempName exists ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   408
        ('PerforceSourceCodeManager [error]: failed to checkout ', fullTempName pathName, ' (file does not exist after cvs co)') errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   409
        tempdir recursiveRemove.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   410
        ^ nil
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
    (cacheIt
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
    and:[cachedFile notNil
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
    and:[fullTempName exists]])
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
    ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   417
        (OperatingSystem errorSignal catch:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   418
            fullTempName moveTo:fullCachedName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   419
        ]) ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   420
            ('CVSSourceCodeManager [error]: failed to rename ', fullTempName pathName, ' to ', cachedSourceFilename) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   421
            tempdir recursiveRemove.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   422
            ^ nil
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   423
        ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   424
        fullCachedName asFilename exists ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   425
            stream := fullCachedName asFilename readStream.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   426
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   428
        OperatingSystem isUNIXlike ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   429
            "/ cannot remove files which are still open ...
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   430
            "/ sigh - need a delete-on-close flag in FileStream.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   431
            "/
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   432
            tempFile := Filename newTemporary.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   433
            fullTempName copyTo:tempFile.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   434
            stream := tempFile readStream.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   435
            stream notNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   436
                stream removeOnClose:true.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   437
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   438
        ] ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   439
            stream := fullTempName readStream.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   440
        ]
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
    ^ stream
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
!PerforceSourceCodeManager class methodsFor:'basic administration'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
checkForExistingContainer:fileName inModule:moduleDir directory:packageDir
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
    "check for a container to exist"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
    |newestRevision class className|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
    fileName isString ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   454
        className := fileName asFilename withoutSuffix baseName.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   455
        class := Smalltalk at:(className asSymbol).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   457
        class := fileName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
    newestRevision := self newestRevisionOf:class.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
    ^ newestRevision notNil
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
checkForExistingModule:moduleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
    "check for a module directory to be present"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
    |workSpaceDefinition|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
    workSpaceDefinition := self getWorkSpaceForModule:moduleName modulePath:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
    ^ workSpaceDefinition notNil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
self checkForExistingModule:'applistx'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
self checkForExistingModule:'balla'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
"
2344
8a715906b999 comment/format in: #checkForExistingModule:
Claus Gittinger <cg@exept.de>
parents: 2341
diff changeset
   476
8a715906b999 comment/format in: #checkForExistingModule:
Claus Gittinger <cg@exept.de>
parents: 2341
diff changeset
   477
    "Modified: / 19-04-2011 / 11:30:41 / cg"
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
checkForExistingModule:moduleName directory:packageDir
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
    "check for a package directory to be present"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
    |modulePath cmd inDirectory inStream line workSpaceDefinition repositoryDir|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
    modulePath :=  moduleName , '/' , packageDir.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
    inDirectory := (Filename currentDirectory asAbsoluteFilename) pathName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
    workSpaceDefinition := self getWorkSpaceForModule:moduleName modulePath:modulePath.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
    workSpaceDefinition isNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   490
        ('PerforceSourceCodeManager [error]: cant get perforce client info for ', moduleName) errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   491
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
    ].
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   493
    repositoryDir := workSpaceDefinition repositoryDir.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
    (repositoryDir endsWith:'...') ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   495
        repositoryDir := repositoryDir copyTo:(repositoryDir size - 3).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
    cmd := ('sync ' , repositoryDir, modulePath, '/...').
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
    inStream := self executePerforceCommand:cmd
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   499
                        module:moduleName
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   500
                        inDirectory:inDirectory
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   501
                        log:true
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   502
                        pipe:true.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
    inStream isNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   504
        ('PerforceSourceCodeManager [error]: cannot open pipe to perforce sync ', moduleName) errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   505
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
    "/
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
    "/ read the commands pipe output and extract the container info
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
    "/
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
    [inStream atEnd not] whileTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   512
        line:= inStream nextLine.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   513
        line notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   514
            (line endsWith:'no such file(s).') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   515
                ^ false
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   516
            ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   517
        ]
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
    ^ true
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
    self checkForExistingModule:'testModule' directory:'libTestPerforce'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   526
checkinClass:cls fileName:classFileName directory:packageDir module:moduleName logMessage:logMessage force:forceArg
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
    "enter a classes source code
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   528
     into the source repository. If the force argument is true, no merge is done;
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
     instead, the code is checked in as given (Dangerous).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
     Return true if ok, false if not."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   531
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   532
    |tempdir cmd checkoutName logMsg locRevision newestRevision binRevision newVersionString
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
     workspaceDefinitionFile workSpaceName result checkInDefinition workSpaceDefinition depotRoot|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
    cls isPrivate ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   536
        self reportError:'refuse to check in private classes.'.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   537
        ^ false.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   538
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   539
    checkInDefinition := CheckInDefinition new.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   540
    checkInDefinition definitionClass:cls.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   541
    checkInDefinition classFileName:classFileName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   542
    checkInDefinition force:forceArg.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   543
    checkInDefinition moduleName:moduleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   544
    checkInDefinition packageDir:packageDir.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
    checkInDefinition manager:self.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   546
    (checkInDefinition setLogMessage:logMessage) ifFalse:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   547
        self reportError:'perforce cannot handle unicode in logMessage'.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   548
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   550
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   551
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   552
    locRevision := checkInDefinition getLocalRevisionNumber.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
    (binRevision := checkInDefinition getBinaryRevisionNumber) notNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   554
        locRevision ~= binRevision ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   555
            ('PerforceSourceCodeManager [info]: class ' , checkInDefinition className , ' is based upon ' , binRevision printString, ' but has revision ' , (locRevision printString ? '?')) infoPrintCR
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   556
        ]
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   557
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   558
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   559
    locRevision isNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   560
        locRevision := checkInDefinition getLocalRevisionNumberFromRepository.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   561
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   562
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   563
    "/
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   564
    "/ first, create a temporary work tree
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   565
    "/
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   566
    tempdir := checkInDefinition tempDirectory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   567
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   568
    tempdir notNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   569
            [
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   570
            checkoutName :=  checkInDefinition classFileName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   571
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   572
            workSpaceDefinition := self createWorkspaceFor:checkInDefinition.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   573
            workSpaceDefinition isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   574
                ('PerforceSourceCodeManager [error]: failed to create workspace for', checkoutName)  errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   575
                ^ false
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   576
            ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   577
            checkInDefinition workSpaceDefinition:workSpaceDefinition.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   579
            workspaceDefinitionFile := checkInDefinition workSpaceDefinitionFilename.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   580
            workspaceDefinitionFile notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   581
                [
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   582
                    workSpaceName := checkInDefinition workSpaceName.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   583
                    newestRevision := checkInDefinition getNewestRevisionNumber.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   585
                    newestRevision isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   586
                        " create container for class initial check in"
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   587
                        (binRevision notNil) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   588
                            (Dialog confirm:('Someone seems to have removed the source container for ',cls name,'\\Force new checkin ?') withCRs) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   589
                                cls setBinaryRevision:nil.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   590
                                ^ self checkinClass:cls fileName:classFileName directory:packageDir module:moduleName logMessage:logMsg force:forceArg.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   591
                            ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   592
                        ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   593
                        "initial checkin here"
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   594
                        ^ self initialCheckinFor:checkInDefinition.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   595
                    ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   596
                    "/ is the version correct ?
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   597
                    locRevision > newestRevision ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   598
                        (Dialog confirm:('The version-info of ',cls name allBold,' is wrong \(The class version (',locRevision allBold,') is newer than the newest version in the repository (',newestRevision printString allBold,').\\Patch the version and retry checkin ?') withCRs)
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   599
                        ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   600
                            newVersionString := self updatedRevisionStringOf:cls forRevision:newestRevision with:cls revisionString.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   601
                            cls updateVersionMethodFor:newVersionString.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   602
                            ^ self checkinClass:cls fileName:classFileName directory:packageDir module:moduleName logMessage:logMsg force:forceArg.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   603
                        ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   604
                    ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   605
                    newestRevision > locRevision ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   606
                        "someone changed repository in the meanwhile"
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   607
                        self activityNotification:'merging ' , cls name , ' with repository version...'.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   608
                        self mergeOrResolveConflictsFor:checkInDefinition.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   609
                        self postCheckInClass:cls checkInDefinition:checkInDefinition.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   610
                    ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   611
                        result := self standardCheckinFor:checkInDefinition localRevision:locRevision.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   612
                        result ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   613
                            ('PerforceSourceCodeManager [error]: failed to checkin ', checkoutName)  errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   614
                            ^ false
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   615
                        ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   616
                    ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   617
                ]
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   618
                ensure:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   619
                    " we have to revert all before delete workspace "
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   620
                    depotRoot := workSpaceDefinition repositoryDir.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   621
                    depotRoot notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   622
                        cmd := ('revert  ' , depotRoot).
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   623
                        result := self executePerforceCommand:cmd
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   624
                                        module:moduleName
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   625
                                        inDirectory:tempdir
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   626
                                        log:true
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   627
                                        pipe:false
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   628
                                        clientName:workSpaceName.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   629
                    ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   630
                    cmd := ('client -d  ' , workSpaceName).
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   631
                    result := self executePerforceCommand:cmd
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   632
                                        module:moduleName
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   633
                                        inDirectory:tempdir
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   634
                                        log:true
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   635
                                        pipe:false
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   636
                                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   637
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   638
                ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   639
            ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   640
        ] ensure:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   641
            tempdir recursiveRemove.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   642
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   643
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   644
    ^ true
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   645
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   646
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   647
     SourceCodeManager checkinClass:Array logMessage:'testing only'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   648
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   649
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   650
    "Created: / 11-09-1996 / 16:16:11 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   651
    "Modified: / 26-02-1998 / 17:34:16 / stefan"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   652
    "Modified: / 25-10-2006 / 17:41:46 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   653
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   654
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   655
checkinClass:cls fileName:classFileName directory:packageDir module:moduleName source:sourceFileName logMessage:logMessage force:forceArg
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   656
    "enter a classes source code (which has been already filed out into sourceFileName)
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   657
     here we have to create our own source file
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   658
     into the source repository. If the force argument is true, no merge is done;
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   659
     instead, the code is checked in as given (Dangerous).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   660
     Return true if ok, false if not."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   661
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   662
    ^ self checkinClass:cls fileName:classFileName directory:packageDir module:moduleName logMessage:logMessage force:forceArg
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   663
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   664
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   665
     SourceCodeManager checkinClass:Array logMessage:'testing only'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   666
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   667
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   668
    "Created: / 11-09-1996 / 16:16:11 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   669
    "Modified: / 26-02-1998 / 17:34:16 / stefan"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   670
    "Modified: / 25-10-2006 / 17:41:46 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   671
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   672
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   673
createContainerFor:aClass inModule:moduleName directory:dirName container:fileName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   674
    "create a new container & check into it an initial version of aClass"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   675
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   676
    self shouldImplement
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   677
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   678
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   679
createContainerFor:cls inModule:moduleName package:packageDir container:classFileName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   680
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   681
    ^ self checkinClass:cls fileName:classFileName directory:packageDir module:moduleName logMessage:'Initial check in' force:false.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   682
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   683
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   684
createContainerFor:cls inModule:moduleName package:packageDir container:classFileName logMessage:logMessage
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   685
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   686
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   687
    ^ self checkinClass:cls fileName:classFileName directory:packageDir module:moduleName logMessage:logMessage force:false.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   688
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   689
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   690
createModule:moduleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   691
    "create a new module directory"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   692
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   693
    self shouldImplement
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   694
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   695
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   696
createModule:module directory:directory
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   697
    "nothing to do with PerforceSourceCodeManager
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   698
     subdirectory in repository will created with adding the file "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   699
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   700
    ^ true
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   701
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   702
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   703
initialRevisionStringFor:aClass inModule:moduleDir directory:packageDir container:fileName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   704
    "return a string usable as initial revision string"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   705
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   706
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   707
    |modulePath workSpaceDefinition version checkoutName repositoryDir repositoryPathName|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   708
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   709
    modulePath :=  moduleDir , '/' , packageDir.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   710
    checkoutName :=  modulePath , '/' , aClass name, '.st'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   711
    workSpaceDefinition := self getWorkSpaceForModule:moduleDir modulePath:modulePath.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   712
    version := PerforceVersionInfo new.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   713
    repositoryDir := workSpaceDefinition repositoryDir.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   714
    (repositoryDir endsWith:'...') ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   715
        repositoryDir := repositoryDir copyTo:(repositoryDir size - 3).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   716
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   717
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   718
    repositoryPathName := repositoryDir asFilename construct:checkoutName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   719
    version repositoryPathName:repositoryPathName pathName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   720
    version revision:'1'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   721
    ^ version getVersionString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   722
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   723
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   724
readRevisionLogEntryFromStream:inStream
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   725
    "read and parse a single revision info-entry from the cvs log output.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   726
     Return nil on end.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   727
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   728
     The returned information is a structure (IdentityDictionary)
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   729
     filled with:
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   730
              #revision              -> the revision string
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   731
              #author                -> who checked that revision into the repository
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   732
              #date                  -> when was it checked in
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   733
              #state                 -> the RCS state
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   734
              #numberOfChangedLines  -> the number of changed line w.r.t the previous
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   735
              #logMessage            -> the checkIn log message
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   736
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   737
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   738
    |revLine1 atEnd|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   739
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   740
    atEnd := false.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   741
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   742
    revLine1 := inStream nextLine.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   743
    ^ self readRevisionLogEntryFromString:revLine1.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   744
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   745
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   746
readRevisionLogEntryFromString:revLine1
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   747
    "read and parse a single revision info-entry from the cvs log output.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   748
     Return nil on end.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   749
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   750
     The returned information is a structure (IdentityDictionary)
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   751
     filled with:
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   752
              #revision              -> the revision string
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   753
              #author                -> who checked that revision into the repository
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   754
              #date                  -> when was it checked in
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   755
              #state                 -> the RCS state
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   756
              #numberOfChangedLines  -> the number of changed line w.r.t the previous
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   757
              #logMessage            -> the checkIn log message
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   758
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   759
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   760
    | record revisionLineElements noOfRevisionLineElements posText|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   761
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   762
    (revLine1 notNil) ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   763
        record := IdentityDictionary new.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   764
        revisionLineElements := revLine1 asCollectionOfWords.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   765
        noOfRevisionLineElements := revisionLineElements size.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   766
        noOfRevisionLineElements > 1 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   767
            record at:#revision put:((revisionLineElements at:2) copyFrom:2).
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   768
        ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   769
        noOfRevisionLineElements > 8 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   770
            record at:#author put:(revisionLineElements at:9).
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   771
        ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   772
        noOfRevisionLineElements > 6 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   773
            record at:#date put:(revisionLineElements at:7).
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   774
        ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   775
        noOfRevisionLineElements > 4 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   776
            record at:#state put:(revisionLineElements at:5).
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   777
        ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   778
        noOfRevisionLineElements > 10 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   779
            posText := 0.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   780
            1 to:9 do:[:ele| posText := posText + (revisionLineElements at:ele) size + 1].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   781
            record at:#logMessage put:(revLine1 copyFrom:posText).
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   782
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   783
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   784
    ^record.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   785
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   786
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   787
revisionLogOf:clsOrNil 
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   788
fromRevision:firstRev 
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   789
toRevision:lastRef 
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   790
numberOfRevisions:numRevisions 
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   791
fileName:classFileName 
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   792
directory:packageDir 
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   793
module:moduleName
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   794
    "return info about the repository container and
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   795
     (part of) the revisionlog as a collection of revision entries.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   796
     Return nil on failure.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   797
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   798
     If numRevisions is notNil, it limits the number of revision records returned -
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   799
     only numRevions of the newest revision infos will be collected.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   800
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   801
     The returned information is a structure (IdentityDictionary)
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   802
     filled with:
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   803
            #newestRevision     -> the revisionString of the newest revision
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   804
            #numberOfRevisions  -> the number of revisions in the container (nil for all)
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   805
            #revisions          -> collection of per-revision info (see below)
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   806
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   807
            firstRev / lastRef specify from which revisions a logEntry is wanted:
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   808
             -If firstRev is nil, the first revision is the initial revision
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   809
              otherwise, the log starts with that revision.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   810
             -If lastRef is nil, the last revision is the newest revision
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   811
              otherwise, the log ends with that revision.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   812
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   813
             -If both are nil, all logEntries are extracted.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   814
             -If both are 0 (not nil), no logEntries are extracted (i.e. only the header).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   815
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   816
            per revision info consists of one record per revision:
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   817
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   818
              #revision              -> the revision string
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   819
              #author                -> who checked that revision into the repository
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   820
              #date                  -> when was it checked in
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   821
              #state                 -> the RCS state
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   822
              #numberOfChangedLines  -> the number of changed line w.r.t the previous
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   823
              #logMessage            -> the checkIn log message
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   824
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   825
            revisions are ordered newest first
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   826
            (i.e. the last entry is for the initial revision; the first for the most recent one)
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   827
            Attention: if state = 'dead' that revision is no longer valid.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   828
        "
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   829
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   830
    |fullName inStream atEnd line inHeaderInfo workSpaceDefinition
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   831
     info record revisionRecords headerOnly msg revArg inDirectory infoAndLogString elements newestRevision foundView|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   832
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   833
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   834
    [
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   835
        |cmd moduleDir|
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   836
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   837
        revArg := ''.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   838
        headerOnly := false.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   839
        (firstRev notNil or:[lastRef notNil]) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   840
            (firstRev == 0 and:[lastRef == 0]) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   841
                headerOnly := true.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   842
            ]
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   843
        ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   844
        workSpaceDefinition := self getWorkSpaceForModule:moduleName.
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   845
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   846
        workSpaceDefinition isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   847
            self error:('Perforce cant get workspace definition for module ', moduleName, '.').
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   848
            ^ nil.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   849
        ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   850
        headerOnly ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   851
            msg := 'fetching revision info '
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   852
        ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   853
            msg := 'reading revision log '
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   854
        ].
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   855
        foundView := workSpaceDefinition getDepotPackageDirDorModule:packageDir classFileName:classFileName.
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   856
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   857
        clsOrNil isNil ifTrue:[
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   858
            msg := msg , 'in ' , foundView.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   859
        ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   860
            msg := msg , 'of ', clsOrNil name.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   861
        ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   862
        self activityNotification:msg,'...'.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   863
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   864
        cmd := ('filelog ' , foundView).
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   865
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   866
        inDirectory := (Filename currentDirectory asAbsoluteFilename) pathName.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   867
        inStream := self executePerforceCommand:cmd
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   868
                            module:moduleName
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   869
                            inDirectory:inDirectory
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   870
                            log:true
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   871
                            pipe:true.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   872
        inStream isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   873
            ('PerforceSourceCodeManager [error]: cannot open pipe to perforce filelog ', fullName) errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   874
            ^ nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   875
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   876
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   877
        "/
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   878
        "/ read the commands pipe output and extract the container info
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   879
        "/
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   880
        info := IdentityDictionary new.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   881
        inHeaderInfo := true.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   882
        revisionRecords := OrderedCollection new.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   883
        [inHeaderInfo and:[inStream atEnd not]] whileTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   884
            line:= inStream nextLine.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   885
            line notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   886
                |gotIt|
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   887
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   888
                gotIt := false.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   889
                infoAndLogString := line asCollectionOfSubstringsSeparatedBy:$'.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   890
                elements := infoAndLogString size.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   891
                elements > 1 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   892
                    record := self readRevisionLogEntryFromString:line.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   893
                    newestRevision := record at:#revision.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   894
                    info at:#newestRevision put:newestRevision.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   895
                    info at:#numberOfRevisions put:newestRevision asNumber.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   896
                    revisionRecords add:record.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   897
                    inHeaderInfo := false
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   898
                ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   899
            ]
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   900
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   901
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   902
        info isEmpty ifTrue:[
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
   903
            ('PerforceSourceCodeManager [warning]: no log for ', foundView) errorPrintCR.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   904
            ^ nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   905
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   906
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   907
        "/ strip selected revisions from the total-revisions entry
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   908
        headerOnly ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   909
            "/
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   910
            "/ continue to read the commands pipe output
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   911
            "/ and extract revision info records
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   912
            "/
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   913
            info at:#revisions put:revisionRecords.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   914
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   915
            atEnd := false.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   916
            [atEnd or:[inStream atEnd]] whileFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   917
                record := self readRevisionLogEntryFromStream:inStream.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   918
                record isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   919
                    atEnd := true.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   920
                ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   921
                    revisionRecords add:record.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   922
                ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   923
                (numRevisions notNil and:[revisionRecords size >= numRevisions]) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   924
                    atEnd := true
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   925
                ]
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   926
            ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   927
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   928
    ] ensure:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   929
        inStream notNil ifTrue:[inStream close].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   930
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
   931
        self activityNotification:nil.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   932
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   933
    ^ info
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   934
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   935
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   936
     AbstractSourceCodeManager revisionLogOf:ExtIF
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   937
     SourceCodeManager revisionLogOf:Array fromRevision:'1.40' toRevision:'1.43'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   938
     SourceCodeManager revisionLogOf:Array fromRevision:'1.40' toRevision:nil
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   939
     SourceCodeManager revisionLogOf:Array fromRevision:nil toRevision:'1.3'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   940
     SourceCodeManager revisionLogOf:Array fromRevision:nil toRevision:nil
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   941
     SourceCodeManager revisionLogOf:Array fromRevision:0 toRevision:0
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   942
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   943
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   944
    "Created: / 16-11-1995 / 13:25:30 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   945
    "Modified: / 29-01-1997 / 16:51:30 / stefan"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   946
    "Modified: / 29-08-2006 / 14:57:26 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   947
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   948
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   949
!PerforceSourceCodeManager class methodsFor:'execute'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   950
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   951
executePerforceCommand:cvsCommand module:moduleName inDirectory:dir
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   952
    "execute command and prepend cvs command name and global options.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   953
     if dir ~= nil, execute command in that directory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   954
     This also leads to a log-entry to be added to cvs's logfile."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   955
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   956
    ^ self
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   957
        executePerforceCommand:cvsCommand
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   958
        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   959
        inDirectory:dir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   960
        log:true
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   961
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   962
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   963
executePerforceCommand:cvsCommand module:moduleName inDirectory:dir log:doLog
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   964
    "execute command and prepend cvs command name and global options.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   965
     if dir ~= nil, execute command in that directory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   966
     The doLog argument, if false supresses a logEntry to be added
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   967
     in the cvs log file (used when reading / extracting history)"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   968
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   969
    ^ self
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   970
        executePerforceCommand:cvsCommand module:moduleName inDirectory:dir log:doLog
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   971
        pipe:false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   972
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   973
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   974
executePerforceCommand:perforceCommand module:moduleName inDirectory:dirArg log:doLog pipe:doPipe
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   975
    "execute command and prepend perforce command name and global options.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   976
     execute command in the dirArg directory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   977
     The doLog argument, if false supresses a logEntry to be added
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   978
     in the cvs log file (used when reading / extracting history)"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   979
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   980
    ^ self executePerforceCommand:perforceCommand module:moduleName inDirectory:dirArg log:doLog pipe:doPipe clientName:nil
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   981
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   982
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   983
executePerforceCommand:perforceCommand module:moduleName inDirectory:dirArg log:doLog pipe:doPipe clientName:clientName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   984
    "execute command and prepend perforce command name and global options.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   985
     execute command in the dirArg directory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   986
     The doLog argument, if false supresses a logEntry to be added
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   987
     in the cvs log file (used when reading / extracting history)"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   988
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   989
    ^ self executePerforceCommand:perforceCommand module:moduleName inDirectory:dirArg log:doLog pipe:doPipe clientName:clientName inputFrom:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   990
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   991
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   992
executePerforceCommand:perforceCommand module:moduleName inDirectory:dirArg log:doLog pipe:doPipe clientName:clientName inputFrom:inputStream
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   993
    "execute command and prepend perforce command name and global options.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   994
     execute command in the dirArg directory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   995
     The doLog argument, if false supresses a logEntry to be added
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   996
     in the cvs log file (used when reading / extracting history)"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   997
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   998
    |command perforceSettings rslt ok pathOfDir errorString commandStream password user port client executable|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   999
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1000
    dirArg notNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1001
        pathOfDir := dirArg asFilename pathName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1002
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1003
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1004
    perforceSettings := self getPerforceSettingsForModule:moduleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1005
    perforceSettings isNil ifTrue:[ ^ nil].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1006
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1007
    commandStream := WriteStream on:''.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1008
    executable := self perforceExecutable.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1009
    (executable includes:Character space) ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1010
        commandStream nextPut:$".
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1011
        commandStream nextPutAll:executable.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1012
        commandStream nextPut:$".
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1013
    ] ifFalse:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1014
        commandStream nextPutAll:executable.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1015
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1016
    commandStream space.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1017
    port := perforceSettings at:#port ifAbsent:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1018
    port notNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1019
        commandStream space.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1020
        commandStream nextPutAll:'-p '.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1021
        commandStream nextPutAll:(perforceSettings at:#port).
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1022
        commandStream space.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1023
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1024
    clientName notNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1025
        client := clientName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1026
    ] ifFalse:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1027
        client := perforceSettings at:#client ifAbsent:nil.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1028
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1029
    client notEmptyOrNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1030
        commandStream space.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1031
        commandStream nextPutAll:'-c '.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1032
        commandStream nextPutAll:client.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1033
        commandStream space.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1034
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1035
    user := perforceSettings at:#user ifAbsent:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1036
    user notNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1037
        commandStream space.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1038
        commandStream nextPutAll:'-u '.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1039
        commandStream nextPutAll:(perforceSettings at:#user).
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1040
        commandStream space.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1041
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1042
    password := perforceSettings at:#password ifAbsent:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1043
    password notNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1044
        commandStream space.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1045
        commandStream nextPutAll:'-P '.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1046
        commandStream nextPutAll:(perforceSettings at:#password ifAbsent:'').
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1047
        commandStream space.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1048
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1049
    commandStream nextPutAll:perforceCommand.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1050
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1051
    command := commandStream contents.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1052
    Verbose == true ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1053
        ('PerforceSourceCodeManager [info]: executing: ' , command , ' [in ' , (pathOfDir?'.') , ']') infoPrintCR.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1054
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1055
    doPipe ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1056
        rslt := PipeStream readingFrom:command errorDisposition:#inline inDirectory:pathOfDir.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1057
        ok := rslt notNil.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1058
    ] ifFalse:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1059
        Processor isDispatching ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1060
            rslt := ok := OperatingSystem executeCommand:command
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1061
                            inputFrom:inputStream
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1062
                            outputTo:nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1063
                            errorTo:nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1064
                            auxFrom:nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1065
                            inDirectory:pathOfDir
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1066
                            lineWise:true
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1067
                            onError:[:status| false].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1068
        ] ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1069
            PerforceCommandSemaphore critical:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1070
                |p errOut|
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1071
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1072
                errOut := WriteStream on:String new.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1073
                p := [
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1074
                    rslt := ok := OperatingSystem executeCommand:command
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1075
                                    inputFrom:inputStream
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1076
                                    outputTo:nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1077
                                    errorTo:nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1078
                                    auxFrom:nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1079
                                    inDirectory:pathOfDir
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1080
                                    lineWise:true
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1081
                                    onError:[:status| false].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1082
                ] fork.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1083
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1084
                (p waitUntilTerminatedWithTimeout:300) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1085
                    ('PerforceSourceCodeManager [info]: command timeout: ' , command) errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1086
                    ok := false.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1087
                    errorString := 'Perforce command timeout'.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1088
                ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1089
                    ok ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1090
                        errorString := errOut contents.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1091
                    ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1092
                ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1093
            ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1094
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1095
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1096
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1097
    ok ifFalse:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1098
        ('PerforceSourceCodeManager [info]: command failed: ' , command) errorPrintCR.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1099
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1100
        SourceCodeManagerError isHandled ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1101
            SourceCodeManagerError raiseErrorString:(errorString ? 'Perforce Error').
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1102
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1103
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1104
    ^ rslt.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1105
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1106
    "Modified: / 23-04-1996 / 15:24:00 / stefan"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1107
    "Created: / 20-05-1998 / 16:06:34 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1108
    "Modified: / 29-09-2006 / 15:06:42 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1109
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1110
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1111
!PerforceSourceCodeManager class methodsFor:'private'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1112
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1113
checkinTroubleDialog:title message:message log:log abortable:abortable option:optionTitle
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1114
    "trouble checking in - open a dialog"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1115
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1116
    ^ self
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1117
        checkinTroubleDialog:title
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1118
        message:message
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1119
        log:log
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1120
        abortable:abortable
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1121
        option:optionTitle
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1122
        option2:nil
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1123
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1124
    "Created: 10.12.1995 / 17:34:33 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1125
    "Modified: 12.9.1996 / 02:39:06 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1126
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1127
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1128
checkinTroubleDialog:title message:message log:log abortable:abortable option:optionTitle option2:optionTitle2
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1129
    ^self
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1130
        checkinTroubleDialog:title
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1131
        message:message
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1132
        log:log
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1133
        abortable:abortable
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1134
        option:optionTitle
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1135
        option2:optionTitle2
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1136
        option3:nil
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1137
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1138
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1139
checkinTroubleDialog:title message:message log:log abortable:abortable option:optionTitle option2:optionTitle2 option3:optionTitle3
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1140
    "trouble checking in - open a dialog"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1141
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1142
    |l box list listView optionPressed option2Pressed option3Pressed|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1143
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1144
    l := log collect:[:line | line withTabsExpanded].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1145
    list := SelectionInList with:l.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1146
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1147
    box := Dialog new.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1148
    box label:(title).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1149
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1150
    (box addTextLabel:message) borderWidth:0.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1151
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1152
    listView := SelectionInListView on:list.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1153
    listView disable.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1154
    listView height:200.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1155
    box addComponent:(HVScrollableView forView:listView miniScrollerH:true) tabable:false.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1156
    box addVerticalSpace.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1157
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1158
    abortable ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1159
        box addAbortButton
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1160
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1161
    optionTitle notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1162
        box addOkButton:(Button label:optionTitle action:[optionPressed := true. box hide]).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1163
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1164
    optionTitle2 notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1165
        box addOkButton:(Button label:optionTitle2 action:[option2Pressed := true. box hide]).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1166
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1167
    optionTitle3 notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1168
        box addOkButton:(Button label:optionTitle3 action:[option3Pressed := true. box hide]).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1169
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1170
    box addOkButton.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1171
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1172
    box extent:(box preferredExtent).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1173
    box minExtent:box extent.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1174
    box maxExtent:box extent.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1175
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1176
    box open.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1177
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1178
    box destroy.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1179
    optionPressed == true ifTrue:[^ #option].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1180
    option2Pressed == true ifTrue:[^ #option2].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1181
    option3Pressed == true ifTrue:[^ #option3].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1182
    ^ box accepted
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1183
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1184
    "Created: 9.9.1996 / 19:12:45 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1185
    "Modified: 12.9.1996 / 02:39:10 / cg"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1186
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1187
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1188
createWorkspaceFor:checkInDefinition
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1189
    "
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1190
        create an temporary workspace for handle checkin
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1191
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1192
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1193
    |workSpaceName workSpaceDefinitionFilename ws cmd foundView result
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1194
     workSpaceDefinition readStream moduleName modulePath directory|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1195
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1196
    moduleName := checkInDefinition moduleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1197
    modulePath := checkInDefinition modulePath.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1198
    directory := checkInDefinition tempDirectory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1199
    workSpaceDefinition := self getWorkSpaceForModule:moduleName modulePath:modulePath.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1200
    workSpaceDefinition isNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1201
        self error:('Perforce cant get workspace definition for module ', moduleName, '.').
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1202
        ^ nil.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1203
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1204
    directory exists ifFalse:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1205
        self error:('Perforce create workspace directory ', directory pathName, ' not exists.').
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1206
        ^ nil.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1207
    ].
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1208
    foundView := workSpaceDefinition repositoryDir.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1209
    workSpaceName := UUID genUUID displayString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1210
    workSpaceName := 'stxTestWorkSpace'.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1211
    workSpaceDefinition workSpaceName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1212
    workSpaceDefinitionFilename := directory asFilename construct:workSpaceName.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1213
    workSpaceDefinition workSpaceDefinitionFilename:workSpaceDefinitionFilename.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1214
    ws := workSpaceDefinitionFilename writeStream.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1215
    ws nextPutAll:'Client: '.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1216
    ws nextPutAll:workSpaceName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1217
    ws cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1218
    ws nextPutAll:'Owner: '.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1219
    ws nextPutAll:(workSpaceDefinition owner).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1220
    ws cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1221
    ws nextPutAll:'Host: '.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1222
    ws nextPutAll:(workSpaceDefinition host).
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1223
    ws cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1224
    ws nextPutAll:'Description: '.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1225
    ws nextPutAll:'Used temporary for Smalltalk/X'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1226
    ws cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1227
    ws nextPutAll:'Root: '.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1228
    ws nextPutAll:directory asFilename pathName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1229
    ws cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1230
    ws nextPutAll:'Options: '.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1231
    ws nextPutAll:'allwrite noclobber nocompress unlocked nomodtime normdir'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1232
    ws cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1233
    ws nextPutAll:'SubmitOptions: '.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1234
    ws nextPutAll:'submitunchanged'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1235
    ws cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1236
    ws nextPutAll:'LineEnd: '.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1237
    ws nextPutAll:'local'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1238
    ws cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1239
    ws nextPutAll:'View: '.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1240
    ws nextPutAll:foundView.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1241
    ws space.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1242
    ws nextPutAll:'//', workSpaceName, '/'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1243
    (foundView endsWith:'...') ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1244
        ws nextPutAll:'...'.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1245
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1246
    ws cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1247
    ws close.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1248
    readStream := ReadStream on:workSpaceDefinitionFilename contents asString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1249
    cmd := 'client -i '.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1250
    result := self executePerforceCommand:cmd
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1251
                        module:moduleName
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1252
                        inDirectory:directory pathName
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1253
                        log:true
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1254
                        pipe:false
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1255
                        clientName:nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1256
                        inputFrom:readStream.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1257
    result ifFalse:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1258
        ('PerforceSourceCodeManager [error]: cannot create perforce client ', workSpaceDefinitionFilename baseName) errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1259
        ^ nil
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1260
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1261
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1262
    ^ workSpaceDefinition.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1263
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1264
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1265
diffTextComment
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1266
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1267
    |ws|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1268
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1269
    ws := WriteStream on:''.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1270
    ws nextPutLine:'"/ ***************************************************************'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1271
    ws nextPutLine:'"/ This text contains your current versions code (blue)'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1272
    ws nextPutLine:'"/ merged with the conflicting code as found in the repository (red) which resulted'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1273
    ws nextPutLine:'"/ from some other checkin.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1274
    ws nextPutLine:'"/ Each such conflict is surrounded by green text (like this paragraph).'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1275
    ws nextPutLine:'"/ '.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1276
    ws nextPutLine:'"/ Please have a look at ALL the conflicts and fix things as appropriate.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1277
    ws nextPutLine:'"/ Delete the green lines as a confirmation - I will not checkin the changed text,'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1278
    ws nextPutLine:'"/ unless no more green parts are present. This includes this comment at the top.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1279
    ws nextPutLine:'"/ ***************************************************************'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1280
    ^ ws contents
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1281
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1282
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1283
getWorkSpaceDepotPrefixToModuleFrom:workSpaceDefinition
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1284
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1285
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1286
getWorkSpaceForModule:aModule
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1287
    "
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1288
        create an temporary workspace for handle checkin
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1289
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1290
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1291
    ^ self getWorkSpaceForModule:aModule modulePath:nil
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1292
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1293
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1294
getWorkSpaceForModule:aModule modulePath:modulePath
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1295
    "
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1296
        create an temporary workspace for handle checkin
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1297
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1298
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1299
    |cmd inStream line views nextKey root myBaseDirectory client localDir position
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1300
     newLocalDir foundDir foundView workSpaceDefinition pathToModule restAfterRoot|
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1301
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1302
    pathToModule := Smalltalk packageDirectoryForPackageId:aModule.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1303
    workSpaceDefinition := WorkSpaceDefinition new.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1304
    cmd := 'client -o'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1305
    myBaseDirectory := (Filename currentDirectory asAbsoluteFilename) pathName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1306
    inStream := self executePerforceCommand:cmd
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1307
                        module:aModule
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1308
                        inDirectory:myBaseDirectory
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1309
                        log:true
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1310
                        pipe:true.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1311
    inStream isNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1312
        ('PerforceSourceCodeManager [error]: cannot open pipe to perforce client ') errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1313
        ^ nil
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1314
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1315
    views := OrderedCollection new.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1316
    [inStream atEnd not] whileTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1317
        line:= inStream nextLine.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1318
        line notEmptyOrNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1319
                line first = $# ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1320
                (line startsWith:'Owner:') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1321
                    workSpaceDefinition owner:line asCollectionOfWords second.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1322
                ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1323
                (line startsWith:'Host:') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1324
                    workSpaceDefinition host:line asCollectionOfWords second.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1325
                ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1326
                (line startsWith:'Client:') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1327
                    client := line asCollectionOfWords second.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1328
                    workSpaceDefinition client:client.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1329
                ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1330
                (line startsWith:'Root:') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1331
                    root := line asCollectionOfWords second.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1332
                    workSpaceDefinition root:root.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1333
                ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1334
                (line startsWith:'View:') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1335
                    nextKey := false.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1336
                    [nextKey not and:[inStream atEnd not]] whileTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1337
                        line:= inStream nextLine.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1338
                        line notEmptyOrNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1339
                            line first isSeparator ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1340
                                views add:(line asCollectionOfWords).
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1341
                            ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1342
                                nextKey := true.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1343
                            ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1344
                        ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1345
                    ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1346
                ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1347
            ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1348
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1349
    ].
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1350
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1351
    views do:[:reposAndlocalDir |
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1352
        localDir := reposAndlocalDir second.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1353
        position := localDir findString:client ifAbsent:nil.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1354
        position isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1355
            ('PerforceSourceCodeManager [error]: cannot get client view') errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1356
            ^ nil
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1357
        ].
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1358
        restAfterRoot := (localDir copyFrom:(position + client size + 1)).
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1359
        newLocalDir := root asFilename construct:restAfterRoot.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1360
        newLocalDir asAbsoluteFilename = pathToModule ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1361
            foundDir := newLocalDir.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1362
            foundView := reposAndlocalDir first.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1363
        ]
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1364
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1365
    foundDir isNil ifTrue:[
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1366
        ('PerforceSourceCodeManager [error]: cannot open find my view in perforce client ') errorPrintCR.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1367
        ^ nil
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1368
    ].
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  1369
    workSpaceDefinition moduleName:aModule.
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1370
    workSpaceDefinition localDir:foundDir.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  1371
    workSpaceDefinition repositoryDir:foundView.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1372
    ^ workSpaceDefinition.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1373
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1374
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1375
initialCheckinFor:checkInDefinition
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1376
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1377
    |modulePath checkoutName fullFileName classFileName packageDir moduleName logMsg force s class cmd result|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1378
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1379
    modulePath := checkInDefinition modulePath.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1380
    checkoutName := checkInDefinition checkoutName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1381
    classFileName := checkInDefinition classFileName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1382
    class := checkInDefinition definitionClass.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1383
    packageDir := checkInDefinition packageDir.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1384
    moduleName := checkInDefinition moduleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1385
    logMsg := checkInDefinition logMessage.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1386
    force := checkInDefinition force.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1387
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1388
    (class binaryRevision notNil) ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1389
        (Dialog confirm:('Someone seems to have removed the source container for ',class name,'\\Force new checkin ?') withCRs) ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1390
            class setBinaryRevision:nil.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1391
            ^ self checkinClass:class fileName:classFileName directory:packageDir module:moduleName logMessage:logMsg force:force.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1392
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1393
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1394
    "initial checkin here"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1395
    fullFileName := checkInDefinition tempDirectory construct:checkoutName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1396
    fullFileName directory recursiveMakeDirectory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1397
    s := fullFileName writeStream.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1398
    self fileOutSourceCodeOf:class on:s.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1399
    s close.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1400
    cmd := ('add  -t +k ' , checkoutName).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1401
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1402
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1403
                        inDirectory:checkInDefinition tempDirectory
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1404
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1405
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1406
                        clientName:checkInDefinition workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1407
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1408
        ('PerforceSourceCodeManager [error]: failed to add ', checkoutName)  errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1409
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1410
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1411
    ^ self submitModule:moduleName inDirectory:checkInDefinition tempDirectory logMessage:logMsg workSpaceDefinition:checkInDefinition workSpaceDefinition.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1412
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1413
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1414
mergeOrResolveConflictsFor:checkInDefinition
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1415
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1416
    |modulePath checkoutName classFileName packageDir moduleName logMsg force class fileNameAndRev cmd result tempdir workSpaceName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1417
     changesDict words fullFileName inStream line chunksPart s mySource mergedSource localRevision resultSource changesAsLogged msg
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1418
     answer checkInRepaired emphasizedText emSep diffTextComment didAccept editor repairedText|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1419
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1420
    modulePath := checkInDefinition modulePath.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1421
    checkoutName := checkInDefinition checkoutName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1422
    classFileName := checkInDefinition classFileName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1423
    class := checkInDefinition definitionClass.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1424
    packageDir := checkInDefinition packageDir.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1425
    tempdir := checkInDefinition tempDirectory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1426
    moduleName := checkInDefinition moduleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1427
    logMsg := checkInDefinition logMessage.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1428
    force := checkInDefinition force.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1429
    workSpaceName := checkInDefinition workSpaceName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1430
    localRevision := checkInDefinition getLocalRevision.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1431
    fullFileName := tempdir construct:checkoutName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1432
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1433
    fileNameAndRev := checkoutName, '#', localRevision printString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1434
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1435
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1436
    " first we need a sync to get resolve notification "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1437
    cmd := ('sync -f ' , fileNameAndRev).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1438
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1439
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1440
                        inDirectory:tempdir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1441
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1442
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1443
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1444
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1445
        ('PerforceSourceCodeManager [error]: could not sync ', checkoutName) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1446
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1447
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1448
    cmd := ('edit  ' , checkoutName).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1449
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1450
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1451
                        inDirectory:tempdir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1452
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1453
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1454
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1455
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1456
        ('PerforceSourceCodeManager [error]: could not sync ', checkoutName) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1457
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1458
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1459
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1460
    "write my code"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1461
    s := fullFileName writeStream.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1462
    self fileOutSourceCodeOf:class on:s.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1463
    s close.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1464
    "before resolving we need a sync"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1465
    cmd := ('sync ' , checkoutName).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1466
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1467
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1468
                        inDirectory:tempdir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1469
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1470
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1471
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1472
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1473
        ('PerforceSourceCodeManager [error]: could not sync ', checkoutName) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1474
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1475
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1476
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1477
    cmd := ('resolve -af ' , checkoutName).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1478
    inStream := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1479
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1480
                        inDirectory:tempdir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1481
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1482
                        pipe:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1483
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1484
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1485
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1486
    inStream isNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1487
        ('PerforceSourceCodeManager [error]: could not get Stream when resolving ', checkoutName) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1488
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1489
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1490
    "check if we have conflicts"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1491
    changesAsLogged := StringCollection new.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1492
    [inStream atEnd not] whileTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1493
        line:= inStream nextLine.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1494
        line notNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1495
            (line startsWith:'Diff chunks:') ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1496
                changesAsLogged add:line.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1497
                changesDict := Dictionary new.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1498
                chunksPart := line copyFrom:('Diff chunks:' size + 1).
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1499
                (chunksPart asCollectionOfSubstringsSeparatedBy:$+) do:[:eachElement|
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1500
                    words := eachElement asCollectionOfWords.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1501
                    changesDict at:words second asSymbol put:words first asNumber.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1502
                ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1503
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1504
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1505
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1506
    s := WriteStream on:String new.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1507
    self fileOutSourceCodeOf:class on:s.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1508
    mergedSource := fullFileName readStream contents asString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1509
    mySource := s contents asString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1510
    (changesDict notNil and:[(changesDict at:#conflicting) > 0]) ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1511
        "ooops must resolve conflicts"
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1512
        msg := self messageForConflictsInClass:class revision:localRevision.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1513
        answer := self checkinTroubleDialog:'Version conflict'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1514
             message:msg
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1515
             log:changesAsLogged
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1516
             abortable:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1517
             option:'show conflicts'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1518
             option2:'resolve conflicts'.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1519
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1520
        answer == #option ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1521
            "/
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1522
            "/ show conflicts in a 3-way DiffTextView ...
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1523
            "/
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1524
            Diff3TextView
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1525
                openOnMergedText:mergedSource
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1526
                label:'your version (checkin attempt)'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1527
                label:'original (base version)'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1528
                label:'newest repository version'.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1529
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1530
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1531
        checkInRepaired := false.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1532
        answer == #option2 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1533
            "/
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1534
            "/ allow checkin of repair version
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1535
            "/ this is error prone ...
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1536
            "/
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1537
            "/
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1538
            "/ show merged version in an editor ...
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1539
            "/ ... accept will check it in.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1540
            "/
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1541
            emphasizedText := mergedSource asStringCollection.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1542
            emSep := (Array with:(#color->Color black)
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1543
                         with:(#backgroundColor->Color green)).
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1544
            emphasizedText := Diff3TextView
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1545
                        emphasizeMergedDiff3TextPerorce:emphasizedText
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1546
                        origEmphasize:(Array with:(#color->Color black)
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1547
                                          with:(#backgroundColor->Color yellow))
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1548
                        otherEmphasize:(Array with:(#color->Color white)
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1549
                                          with:(#backgroundColor->Color red))
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1550
                        yourEmphasize:(Array with:(#color->Color white)
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1551
                                          with:(#backgroundColor->Color red))
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1552
                        separatorEmphasize:emSep.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1553
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1554
            diffTextComment := self diffTextComment.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1555
            diffTextComment := (Text string:diffTextComment emphasis:emSep) asStringCollection.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1556
            emphasizedText := diffTextComment , emphasizedText.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1557
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1558
            didAccept := false. checkInRepaired := true.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1559
            [didAccept not and:[checkInRepaired]] whileTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1560
                editor := RCSConflictEditTextView
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1561
                            setupWith:emphasizedText
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1562
                            title:'Resolve conflicts in ' , checkoutName , ', then accept & close to checkin'.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1563
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1564
                editor acceptAction:[:dummy |
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1565
                    repairedText := editor list.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1566
                    didAccept := true.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1567
                ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1568
                didAccept := false.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1569
                editor topView openModal.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1570
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1571
                didAccept ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1572
                    (Dialog confirm:'You did not accept the new text. Edit again ?')
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1573
                    ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1574
                        checkInRepaired := false.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1575
                    ]
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1576
                ] ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1577
                    "/ check if all green-stuff (separators) have been removed
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1578
                    (repairedText findFirst:[:line | line notNil and:[line notEmpty and:[(line emphasisAt:1) = emSep]]]) ~~ 0 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1579
                        self warn:'You have to look at ALL conflicts, and remove ALL green lines as a confirmation !!'.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1580
                        didAccept := false.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1581
                    ]
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1582
                ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1583
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1584
            resultSource := repairedText asString string.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1585
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1586
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1587
        checkInRepaired ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1588
            Transcript showCR:'checking in ' , checkoutName , ' (manually repaired version) ...'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1589
        ] ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1590
            'PerforceSourceCodeManager [warning]: cannot (for now) checkin; conflicts found' infoPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1591
            Transcript showCR:'checkin of ' , checkoutName , ' aborted (conflicting changes; repository unchanged)'.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1592
            ^ true.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1593
        ]
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1594
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1595
        mySource = mergedSource ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1596
            msg := self messageForNoChangesInClass:class.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1597
            self checkinTroubleDialog:'Merging versions'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1598
                           message:msg
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1599
                           log:changesAsLogged
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1600
                           abortable:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1601
                           option:nil.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1602
        ] ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1603
            msg := self messageForChangesInClass:class revision:localRevision.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1604
            answer := self checkinTroubleDialog:'Merging versions'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1605
                           message:msg
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1606
                           log:changesAsLogged
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1607
                           abortable:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1608
                           option:'Stop - see first'.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1609
            answer ~~ true ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1610
                answer == #option ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1611
                    DiffCodeView
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1612
                        openOn:mySource
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1613
                        label:'current version'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1614
                        and:mergedSource
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1615
                        label:'merged version'.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1616
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1617
                ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1618
                Transcript showCR:'checkin aborted - (no merge; repository unchanged)'.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1619
                ^ false.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1620
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1621
            resultSource := mergedSource.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1622
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1623
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1624
    "now we have a merge - lets get latest revision and write on it "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1625
    cmd := ('revert ' , checkoutName).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1626
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1627
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1628
                        inDirectory:tempdir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1629
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1630
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1631
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1632
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1633
        ('PerforceSourceCodeManager [error]: could not revert ', checkoutName) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1634
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1635
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1636
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1637
    fullFileName remove.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1638
    cmd := ('sync -f ' , checkoutName).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1639
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1640
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1641
                        inDirectory:tempdir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1642
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1643
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1644
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1645
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1646
        ('PerforceSourceCodeManager [error]: could not sync ', checkoutName) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1647
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1648
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1649
    cmd := ('edit ' , checkoutName).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1650
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1651
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1652
                        inDirectory:tempdir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1653
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1654
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1655
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1656
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1657
        ('PerforceSourceCodeManager [error]: could not edit ', checkoutName) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1658
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1659
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1660
    "write my result"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1661
    s := fullFileName writeStream.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1662
    s nextPutAll:resultSource.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1663
    s close.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1664
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1665
    ^ self submitModule:moduleName inDirectory:tempdir logMessage:logMsg workSpaceDefinition:checkInDefinition workSpaceDefinition.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1666
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1667
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1668
messageForChangesInClass:class revision:revisionNumber
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1669
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1670
    |msgStream|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1671
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1672
    msgStream := WriteStream on:''.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1673
    msgStream nextPutAll:'The source of '; nextPutAll:class className; nextPutAll:'has been changed in the meanwhile as listed below.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1674
    msgStream cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1675
    msgStream nextPutAll:'If you continue, your new changes (based upon rev. '; nextPutAll:revisionNumber printString; nextPutAll:') will be MERGED'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1676
    msgStream nextPutAll:'into the newest revision. This will combine the other version with your changes'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1677
    msgStream nextPutAll:'into a new common revision which may be different from both.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1678
    msgStream nextPutAll:'Although this is a nice feature, it may fail to create the expected result in certain situations.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1679
    msgStream cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1680
    msgStream nextPutAll:'You should carefully check the result - by comparing the current version with the'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1681
    msgStream nextPutAll:'most recent version in the repository. If that does not contain an acceptable version,'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1682
    msgStream nextPutAll:'change methods as required and check in again.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1683
    msgStream nextPutAll:'Be aware, that after that, the actual repository version is different from your current classes,'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1684
    msgStream nextPutAll:'and you should update your class from the repository.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1685
    msgStream cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1686
    msgStream nextPutAll:'Continue ?'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1687
    ^ msgStream contents
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1688
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1689
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1690
messageForConflictsInClass:class revision:revisionNumber
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1691
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1692
    |msgStream|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1693
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1694
    msgStream := WriteStream on:''.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1695
    msgStream nextPutAll:'The source of '; nextPutAll:class className; nextPutAll:'has been changed in the meanwhile as listed below.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1696
    msgStream cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1697
    msgStream nextPutAll:'Your new changes (based upon rev. '; nextPutAll:revisionNumber printString; nextPutAll:') CONFLICT with those changes'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1698
    msgStream cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1699
    msgStream nextPutAll:'You should fix things by comparing your class with the most recent repository version'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1700
    msgStream nextPutAll:'and change your methods avoiding conflicts. The checkin again.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1701
    msgStream cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1702
    ^ msgStream contents
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1703
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1704
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1705
messageForNoChangesInClass:class
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1706
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1707
    |msgStream|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1708
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1709
    msgStream := WriteStream on:''.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1710
    msgStream nextPutAll:'The source of '; nextPutAll:class className; nextPutAll:'has been changed in the meanwhile as listed below.'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1711
    msgStream cr.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1712
    msgStream nextPutAll:'I have merged your version with the newest repository version,'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1713
    msgStream nextPutAll:'and found no differences between the result and your current version'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1714
    msgStream nextPutAll:'(i.e. your version seemed up-to-date).'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1715
    ^ msgStream contents
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1716
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1717
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1718
postCheckInClass:class checkInDefinition:checkInDefinition
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1719
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1720
    |newestRevisionAfterSubmit checkoutName localRevision newRevisionLog|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1721
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1722
    checkoutName := checkInDefinition checkoutName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1723
    localRevision := checkInDefinition getLocalRevision asNumber.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1724
    checkInDefinition newestRevision:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1725
    newestRevisionAfterSubmit := checkInDefinition getNewestRevisionNumber.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1726
    newestRevisionAfterSubmit isNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1727
        ('PerforceSourceCodeManager [error]: failed to get revision log after checkin for ', checkoutName)  errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1728
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1729
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1730
    newestRevisionAfterSubmit > localRevision ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1731
        newRevisionLog := self updatedRevisionStringOf:class forRevision:newestRevisionAfterSubmit with:class revisionInfo getVersionString.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1732
        class updateVersionMethodFor:newRevisionLog.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1733
        class revision ~= newestRevisionAfterSubmit asString ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1734
            'PerforceSourceCodeManager [error]: failed to update revisionString' errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1735
            ^ false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1736
        ]
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1737
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1738
        self error:'ooops no new version ????'.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1739
        self postCheckInClass:class.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1740
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1741
    ^ true
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1742
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1743
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1744
standardCheckinFor:checkInDefinition localRevision:locRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1745
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1746
    |modulePath checkoutName fullFileName classFileName packageDir moduleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1747
     logMsg force s class cmd result fileNameAndRev tempdir workSpaceName fullFileNameAndRev
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1748
    workSpaceDefinition newestRevision|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1749
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1750
    modulePath := checkInDefinition modulePath.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1751
    checkoutName := checkInDefinition checkoutName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1752
    classFileName := checkInDefinition classFileName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1753
    class := checkInDefinition definitionClass.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1754
    packageDir := checkInDefinition packageDir.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1755
    moduleName := checkInDefinition moduleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1756
    newestRevision := checkInDefinition newestRevision.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1757
    logMsg := checkInDefinition logMessage.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1758
    force := checkInDefinition force.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1759
    tempdir := checkInDefinition tempDirectory.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1760
    workSpaceName := checkInDefinition workSpaceName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1761
    workSpaceDefinition := checkInDefinition workSpaceDefinition.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1762
    fullFileName := tempdir construct:checkoutName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1763
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1764
    fileNameAndRev := checkoutName, '#', newestRevision printString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1765
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1766
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1767
    cmd := ('sync  ' , fileNameAndRev).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1768
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1769
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1770
                        inDirectory:tempdir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1771
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1772
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1773
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1774
    fullFileNameAndRev := tempdir construct:fileNameAndRev.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1775
    fullFileName copyTo:fullFileNameAndRev.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1776
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1777
    cmd := ('edit  ' , checkoutName).
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1778
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1779
                        module:moduleName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1780
                        inDirectory:tempdir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1781
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1782
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1783
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1784
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1785
        ('PerforceSourceCodeManager [error]: failed to edit ', checkoutName)  errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1786
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1787
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1788
    s := fullFileName writeStream.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1789
    self fileOutSourceCodeOf:class on:s.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1790
    s close.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1791
    result := self submitModule:moduleName inDirectory:tempdir logMessage:checkInDefinition logMessage workSpaceDefinition:workSpaceDefinition.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1792
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1793
        ('PerforceSourceCodeManager [error]: failed to edit ', checkoutName)  errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1794
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1795
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1796
    ^ true
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1797
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1798
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1799
submitModule:moduleDir inDirectory:inDirectory logMessage:logMessage workSpaceDefinition:workSpaceDefinition
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1800
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1801
    |cmd changeListStream result workSpaceName changeListFile inStream logLines line lastLineWasFiles elements changes currentDefinition currentContent changeFiles readStream|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1802
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1803
    workSpaceName := workSpaceDefinition at:#workSpaceName ifAbsent:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1804
    cmd := 'change -o'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1805
    inStream := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1806
                        module:moduleDir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1807
                        inDirectory:inDirectory
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1808
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1809
                        pipe:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1810
                        clientName:workSpaceName.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1811
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1812
    inStream isNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1813
        ('PerforceSourceCodeManager [error]: could not get Stream from ', cmd) errorPrintCR.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1814
        ^ false
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1815
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1816
    changes := Dictionary new.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1817
    logLines := logMessage asStringCollection.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1818
    changeListFile := inDirectory construct:'change'.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1819
    changeListStream := changeListFile writeStream.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1820
    lastLineWasFiles := false.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1821
    [inStream atEnd not] whileTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1822
        line:= inStream nextLine.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1823
        line notNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1824
            (line notEmpty and:[line first isSeparator or:[line first = $#]]) ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1825
                currentContent := line.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1826
            ] ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1827
                elements := line asCollectionOfSubstringsSeparatedBy:$:.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1828
                elements size > 1 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1829
                    currentDefinition := elements first.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1830
                    currentContent := (line copyFrom:currentDefinition size + 2).
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1831
                ] ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1832
                    currentContent := line.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1833
                ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1834
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1835
            (currentDefinition notNil and:[currentDefinition = 'Files' and:[currentContent notEmptyOrNil]]) ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1836
                elements := currentContent asCollectionOfWords.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1837
                elements size > 2 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1838
                    changeFiles := changes at:elements second ifAbsent:nil.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1839
                    changeFiles isNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1840
                        changeFiles := OrderedCollection new.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1841
                        changes at:elements third put:changeFiles.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1842
                    ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1843
                    changeFiles add:elements first.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1844
                ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1845
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1846
            (line includesString:'<enter description here>') ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1847
                logLines do:[:aLine|
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1848
                    changeListStream nextPut:Character tab.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1849
                    changeListStream nextPutLine:aLine.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1850
                ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1851
            ] ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1852
                changeListStream nextPutLine:line.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1853
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1854
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1855
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1856
    changeListStream close.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1857
    readStream := changeListFile contents asString readStream.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1858
    cmd := ('submit -f submitunchanged -i ').
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1859
    result := self executePerforceCommand:cmd
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1860
                        module:moduleDir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1861
                        inDirectory:inDirectory
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1862
                        log:true
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1863
                        pipe:false
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1864
                        clientName:workSpaceName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1865
                        inputFrom:readStream.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1866
    result ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1867
        ('PerforceSourceCodeManager [error]: could not submit ', cmd) errorPrintCR.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1868
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1869
    ^ result
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1870
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1871
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1872
updatedRevisionStringOf:aClass forRevision:newRevision with:originalVersionString
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1873
    "update a revision string"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1874
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1875
    |versionInfo|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1876
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1877
    originalVersionString isEmptyOrNil ifTrue:[^ nil].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1878
    versionInfo := PerforceVersionInfo fromRCSString:originalVersionString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1879
    versionInfo revision:newRevision printString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1880
    ^ versionInfo getVersionString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1881
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1882
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1883
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1884
"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1885
    self updatedRevisionStringOf:nil
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1886
            forRevision:'6'
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1887
            with:'$','Header','$'
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1888
"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1889
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1890
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1891
!PerforceSourceCodeManager class methodsFor:'queries'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1892
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1893
getPerforceClientForModule:aModuleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1894
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1895
    | settings settingsString|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1896
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1897
    aModuleName isNil ifTrue:[^ nil].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1898
    settingsString := self getPerforceSettingsForModule:aModuleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1899
    settingsString isNil ifTrue:[^ PerforceClient].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1900
    settings := self getPerforceSettingsFromString:settingsString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1901
    ^ settings at:#client ifAbsent:PerforceClient.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1902
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1903
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1904
getPerforceDefaultSettingsString
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1905
2340
bffc953726dc oops wrong local variable name
Claus Gittinger <cg@exept.de>
parents: 2330
diff changeset
  1906
    ^(PerforceSourceCodeManager perforceClient ,':',
bffc953726dc oops wrong local variable name
Claus Gittinger <cg@exept.de>
parents: 2330
diff changeset
  1907
       PerforceSourceCodeManager perforceUser, ':',
2341
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  1908
       (PerforceSourceCodeManager perforcePassword), '@',
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1909
       PerforceSourceCodeManager perforcePort).
2341
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  1910
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  1911
    "Modified: / 19-04-2011 / 10:46:37 / cg"
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1912
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1913
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1914
getPerforcePasswordForModule:aModuleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1915
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1916
    | settings settingsString|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1917
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1918
    aModuleName isNil ifTrue:[^ nil].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1919
    settingsString := self getPerforceSettingsForModule:aModuleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1920
    settingsString isNil ifTrue:[^ PerforcePassword].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1921
    settings := self getPerforceSettingsFromString:settingsString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1922
    ^ settings at:#password ifAbsent:PerforcePassword.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1923
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1924
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1925
getPerforcePortForModule:aModuleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1926
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1927
    | settings settingsString|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1928
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1929
    aModuleName isNil ifTrue:[^ nil].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1930
    settingsString := self getPerforceSettingsForModule:aModuleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1931
    settingsString isNil ifTrue:[^ PerforcePort].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1932
    settings := self getPerforceSettingsFromString:settingsString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1933
    ^ settings at:#port ifAbsent:PerforcePort.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1934
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1935
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1936
getPerforceSettingsForModule:aModuleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1937
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1938
    |settingsString|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1939
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1940
    PerforceModuleRoots isNil ifTrue:[^ nil].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1941
    aModuleName isNil ifTrue:[^ nil].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1942
    settingsString := PerforceModuleRoots at:aModuleName ifAbsent:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1943
    settingsString isNil ifTrue:[^ nil].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1944
    ^ self getPerforceSettingsFromString:settingsString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1945
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1946
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1947
getPerforceSettingsFromString:aString
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1948
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1949
    |clientAndPort noOfClientAndPortElements userAndClientAndPassword noOfUserAndClient settings |
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1950
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1951
    settings := Dictionary new.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1952
    clientAndPort := aString asCollectionOfSubstringsSeparatedBy:$@.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1953
    noOfClientAndPortElements := clientAndPort size.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1954
    noOfClientAndPortElements > 0 ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1955
        userAndClientAndPassword := clientAndPort first asCollectionOfSubstringsSeparatedBy:$:.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1956
        noOfUserAndClient := userAndClientAndPassword size.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1957
        noOfUserAndClient > 0 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1958
            settings at:#client put:userAndClientAndPassword first.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1959
        ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1960
        noOfUserAndClient > 1 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1961
            settings at:#user put:userAndClientAndPassword second.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1962
        ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1963
        noOfUserAndClient > 2 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1964
            settings at:#password put:userAndClientAndPassword third.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1965
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1966
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1967
    noOfClientAndPortElements > 1 ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1968
        settings at:#port put:clientAndPort second.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1969
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1970
    ^ settings
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1971
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1972
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1973
getPerforceUserForModule:aModuleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1974
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1975
    | settings settingsString|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1976
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1977
    aModuleName isNil ifTrue:[^ nil].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1978
    settingsString := self getPerforceSettingsForModule:aModuleName.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1979
    settingsString isNil ifTrue:[^ PerforcePassword].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1980
    settings := self getPerforceSettingsFromString:settingsString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1981
    ^ settings at:#password ifAbsent:PerforcePassword.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1982
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1983
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1984
isPerforce
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1985
    "Superclass AbstractSourceCodeManager class says that I am responsible to implement this method"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1986
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1987
    ^ true
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1988
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1989
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1990
managerTypeName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1991
    "Superclass AbstractSourceCodeManager class says that I am responsible to implement this method"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1992
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1993
    ^ 'Perforce'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1994
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1995
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1996
nameOfVersionMethodForExtensions
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1997
    ^ #'extensionsVersion_P4'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1998
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1999
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2000
nameOfVersionMethodInClasses
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2001
    ^ #'version_P4'
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2002
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2003
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2004
perforceTmpDirectory
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2005
    "return the name of the tmp repository.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2006
     Thats the directory, where temporary files are created for checkin/checkout.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2007
     If nil, the systems default tempDirectory is used."
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2008
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2009
    ^ (PerforceTempDir ? Filename tempDirectory pathName)
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2010
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2011
    "
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2012
     PerforceTempDir := nil
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2013
    "
2345
2dde5bda539c added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  2014
!
2dde5bda539c added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  2015
2dde5bda539c added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  2016
settingsApplicationClass
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2017
    "link to my settings application (needed for the settings dialog"
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2018
2345
2dde5bda539c added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  2019
    ^ P4SourceCodeManagementSettingsAppl
2dde5bda539c added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  2020
2dde5bda539c added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  2021
    "Created: / 19-04-2011 / 12:45:13 / cg"
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2022
    "Modified: / 19-04-2011 / 13:52:40 / cg"
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2023
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2024
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2025
!PerforceSourceCodeManager class methodsFor:'source code administration'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2026
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2027
getExistingContainersInModule:aModule directory:aPackage
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2028
    "{ Pragma: +optSpace }"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2029
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2030
    self shouldImplement
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2031
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2032
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2033
getExistingDirectoriesInModule:aModule
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2034
    "{ Pragma: +optSpace }"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2035
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2036
    self shouldImplement
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2037
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2038
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2039
getExistingModules
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2040
    "{ Pragma: +optSpace }"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2041
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2042
    self shouldImplement
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2043
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2044
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2045
revisionInfoFromString:aString
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2046
    "{ Pragma: +optSpace }"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2047
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2048
    ^ PerforceVersionInfo fromRCSString:aString.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2049
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2050
"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2051
|stream|
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2052
stream := WriteStream on:''.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2053
SourceCodeManagerUtilities repositoryLogOf:ExtIF onto:stream.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2054
^ stream contents.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2055
"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2056
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2057
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2058
revisionLogOf:clsOrNil numberOfRevisions:numRevisions fileName:classFileName directory:packageDir module:moduleDir
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2059
    ^ self
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2060
        revisionLogOf:clsOrNil
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2061
        fromRevision:nil
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2062
        toRevision:nil
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2063
        numberOfRevisions:numRevisions
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2064
        fileName:classFileName
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2065
        directory:packageDir
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2066
        module:moduleDir
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2067
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2068
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2069
!PerforceSourceCodeManager class methodsFor:'subclass responsibility'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2070
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2071
reportHistoryLogSince:timeGoal filterSTSources:filter filterUser:userFilter filterRepository:repositoryFilter filterModules:moduleFilter inTo:aBlock
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2072
    "Superclass AbstractSourceCodeManager class says that I am responsible to implement this method"
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2073
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2074
    self shouldImplement
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2075
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2076
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2077
!PerforceSourceCodeManager::CheckInDefinition methodsFor:'accessing'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2078
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2079
classFileName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2080
    ^ classFileName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2081
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2082
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2083
classFileName:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2084
    classFileName := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2085
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2086
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2087
definitionClass
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2088
    ^ definitionClass
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2089
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2090
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2091
definitionClass:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2092
    definitionClass := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2093
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2094
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2095
force
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2096
    ^ force
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2097
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2098
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2099
force:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2100
    force := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2101
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2102
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2103
logMessage
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2104
    ^ logMessage
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2105
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2106
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2107
logMessage:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2108
    logMessage := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2109
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2110
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2111
manager
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2112
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2113
    ^ manager
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2114
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2115
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2116
manager:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2117
    manager := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2118
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2119
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2120
moduleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2121
    ^ moduleName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2122
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2123
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2124
moduleName:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2125
    moduleName := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2126
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2127
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2128
newestRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2129
    ^ newestRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2130
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2131
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2132
newestRevision:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2133
    newestRevision := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2134
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2135
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2136
packageDir
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2137
    ^ packageDir
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2138
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2139
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2140
packageDir:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2141
    packageDir := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2142
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2143
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2144
setLogMessage:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2145
    something isNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2146
        logMessage := ''.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2147
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2148
        logMessage := something asSingleByteStringIfPossible.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2149
        logMessage bitsPerCharacter ~~ 8 ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2150
            ^ false.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2151
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2152
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2153
    ^ true
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2154
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2155
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2156
sourceFileName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2157
    ^ sourceFileName
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2158
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2159
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2160
sourceFileName:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2161
    sourceFileName := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2162
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2163
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2164
tempDirectory
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2165
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2166
    tempDirectory isNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2167
        tempDirectory := self manager createTempDirectory:nil forModule:nil.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2168
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2169
    ^ tempDirectory
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2170
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2171
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2172
tempDirectory:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2173
    tempDirectory := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2174
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2175
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2176
workSpaceDefinition
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2177
    ^ workSpaceDefinition
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2178
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2179
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2180
workSpaceDefinition:something
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2181
    workSpaceDefinition := something.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2182
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2183
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2184
!PerforceSourceCodeManager::CheckInDefinition methodsFor:'actions'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2185
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2186
getBinaryRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2187
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2188
    |locRevision |
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2189
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2190
    locRevision := definitionClass binaryRevision.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2191
    ^ locRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2192
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2193
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2194
getBinaryRevisionNumber
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2195
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2196
    |locRevision |
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2197
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2198
    locRevision := self getBinaryRevision.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2199
    locRevision notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2200
        locRevision := locRevision asNumber.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2201
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2202
    ^ locRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2203
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2204
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2205
getLocalRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2206
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2207
    |locRevision |
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2208
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2209
    locRevision := definitionClass revision.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2210
    ^ locRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2211
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2212
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2213
getLocalRevisionFromRepository
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2214
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2215
    |locRevision |
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2216
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2217
    locRevision := self manager newestRevisionOf:definitionClass.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2218
    locRevision isNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2219
        force ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2220
            locRevision := self manager newestRevisionInFile:classFileName directory:packageDir module:moduleName.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2221
            locRevision isNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2222
                locRevision := '1'   "/ initial checkin
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2223
            ].
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2224
        ] ifFalse:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2225
            locRevision := '1'   "/ initial checkin
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2226
        ]
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2227
    ] ifFalse:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2228
        locRevision == #deleted ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2229
            locRevision := '0'     "/ to force cvs-adding, which resurrects the file from the Attic
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2230
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2231
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2232
    ^ locRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2233
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2234
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2235
getLocalRevisionNumber
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2236
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2237
    |locRevision |
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2238
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2239
    locRevision := self getLocalRevision.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2240
    locRevision notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2241
        locRevision := locRevision asNumber.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2242
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2243
    ^ locRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2244
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2245
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2246
getLocalRevisionNumberFromRepository
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2247
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2248
    |locRevision |
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2249
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2250
    locRevision := self getLocalRevisionFromRepository.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2251
    locRevision notNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2252
        locRevision := locRevision asNumber.
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2253
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2254
    ^ locRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2255
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2256
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2257
getNewestRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2258
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2259
    newestRevision := self manager newestRevisionOf:definitionClass.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2260
    ^ newestRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2261
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2262
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2263
getNewestRevisionNumber
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2264
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2265
    newestRevision isNil ifTrue:[
2353
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2266
        newestRevision := self getNewestRevision.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2267
        newestRevision notNil ifTrue:[
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2268
            newestRevision := newestRevision asNumber.
8841e465eb49 added: #settingsApplicationClass
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2269
        ].
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2270
    ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2271
    ^ newestRevision
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2272
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2273
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2274
!PerforceSourceCodeManager::CheckInDefinition methodsFor:'queries'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2275
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2276
className
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2277
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2278
    ^ definitionClass name.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2279
!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2280
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2281
workSpaceDefinitionFilename
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2282
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2283
    workSpaceDefinition isNil ifTrue:[ ^ nil ].
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2284
    ^ workSpaceDefinition at:#workSpaceDefinitionFilename ifAbsent:nil.
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2285
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2286
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2287
!PerforceSourceCodeManager::WorkSpaceDefinition methodsFor:'accessing'!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2288
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2289
client
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2290
    ^ client
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2291
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2292
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2293
client:something
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2294
    client := something.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2295
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2296
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2297
host
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2298
    ^ host
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2299
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2300
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2301
host:something
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2302
    host := something.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2303
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2304
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2305
localDir
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2306
    ^ localDir
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2307
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2308
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2309
localDir:something
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2310
    localDir := something.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2311
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2312
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2313
moduleName
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2314
    ^ moduleName
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2315
!
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2316
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2317
moduleName:something
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2318
    moduleName := something.
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2319
!
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2320
2349
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2321
owner
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2322
    ^ owner
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2323
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2324
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2325
owner:something
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2326
    owner := something.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2327
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2328
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2329
repositoryDir
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2330
    ^ repositoryDir
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2331
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2332
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2333
repositoryDir:something
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2334
    repositoryDir := something.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2335
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2336
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2337
root
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2338
    ^ root
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2339
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2340
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2341
root:something
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2342
    root := something.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2343
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2344
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2345
workSpaceDefinitionFilename
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2346
    ^ workSpaceDefinitionFilename
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2347
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2348
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2349
workSpaceDefinitionFilename:something
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2350
    workSpaceDefinitionFilename := something.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2351
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2352
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2353
workSpaceName
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2354
    ^ workSpaceName
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2355
!
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2356
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2357
workSpaceName:something
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2358
    workSpaceName := something.
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2359
! !
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
  2360
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2361
!PerforceSourceCodeManager::WorkSpaceDefinition methodsFor:'queries'!
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2362
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2363
getDepotPackageDirDorModule:modulePath classFileName:classFileName
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2364
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2365
    |foundView localDirComponents localComponentsModulIndex|
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2366
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2367
    foundView := self repositoryDir.
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2368
    (foundView endsWith:'...') ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2369
        foundView := foundView copyTo:(foundView size - 3).
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2370
    ].
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2371
    localDirComponents := localDir components.
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2372
    localComponentsModulIndex := localDirComponents findLast:[:aComponent| aComponent = moduleName].
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2373
    localComponentsModulIndex = 0 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2374
        ^ nil
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2375
    ].
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2376
    localDirComponents from:localComponentsModulIndex to:localDirComponents size do:[:aComponent|
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2377
        aComponent ~= '...' ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2378
            foundView := foundView, '/', aComponent.
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2379
        ].
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2380
    ].
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2381
    modulePath notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2382
        foundView := foundView, '/', modulePath.
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2383
    ].
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2384
    classFileName notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2385
        foundView := foundView, '/', classFileName.
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2386
    ].
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2387
    ^foundView
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2388
! !
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2389
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2390
!PerforceSourceCodeManager class methodsFor:'documentation'!
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2391
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2392
version_CVS
2354
Claus Gittinger <cg@exept.de>
parents: 2353
diff changeset
  2393
    ^ '$Header: /cvs/stx/stx/libbasic3/PerforceSourceCodeManager.st,v 1.8 2011-04-19 12:16:22 cg Exp $'
2330
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2394
! !
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2395
96c6e13dded5 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2396
PerforceSourceCodeManager initialize!