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