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