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