CVSSCMgr.st
author Claus Gittinger <cg@exept.de>
Mon, 20 Nov 1995 14:19:50 +0100
changeset 77 4cc959f6b639
parent 76 df46581e46be
child 78 5c81ea9f4c28
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 1995 by Claus Gittinger
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
	      All Rights Reserved
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
AbstractSourceCodeManager subclass:#CVSSourceCodeManager
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	 instanceVariableNames:''
59
3bb0b97dffa2 reorganized; shared methods into AbstractSCMMgr
Claus Gittinger <cg@exept.de>
parents: 58
diff changeset
    15
	 classVariableNames:'Verbose CVSRoot'
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	 poolDictionaries:''
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	 category:'System-Support'
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
!
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
!CVSSourceCodeManager class methodsFor:'documentation'!
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    22
copyright
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    23
"
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    24
 COPYRIGHT (c) 1995 by Claus Gittinger
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    25
	      All Rights Reserved
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    26
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    27
 This software is furnished under a license and may be used
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    28
 only in accordance with the terms of that license and with the
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    29
 inclusion of the above copyright notice.   This software may not
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    30
 be provided or otherwise made available to, or used by, any
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    31
 other person.  No title to or ownership of the software is
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    32
 hereby transferred.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    33
"
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
documentation
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
"
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    SourceCodeManager which accesses sourcecode through cvs.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    It requires the shell environment variable CVSROOT to be set
57
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    40
    to the top of the repository tree. Under that top, for each module
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    41
    (especially the stx module itself), a subdirectory containing that modules
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    42
    directories must exist.
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
57
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    44
    If not specified otherwise, the module defaults to 'stx'. 
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    45
    If a class has its home in another module, it has to be compiled
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    with a corresponding entry in the package string (see below).
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    Within a module, classes are organized in classlibraries, and the corresponding
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    source code is found in various subdirectories of CVSROOT. The directories
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    name can also be provided by the package string - if not, it defaults to the
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    libraries name.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    The package string controls all this, and is REQUIRED in order for the sourceCodeManager
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    to be able to retrieve a classes source.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    The package strings format is:
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	'...any infotext....(sourceCodeInfo)'
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    the sourceCOdeInfo consists of multiple entries, separated by colons.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    The following formats are allowed:
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
	(libraryName)                   - module defaults to 'stx'; directory to the name of the library
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	(foo/bar/x)                     - module defaults to 'stx'; dir is 'foo/bar/x'; library name defaults to x
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	(module:directory:libname)      - specifies all components
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    The first formats are intermediate, for backward compatibility. We urge everyone
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    to use the last format (by changing the Make.proto files and add a -P flag to
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    the stc compiler flags (see libbasic/Make.proto as an example).
57
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    63
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    64
    Notice, that the sourceCodeManager is (currently) only consulted, if no
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    65
    source subdirectory exists, or no source file is found there. If it does exist,
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    66
    that one is supposed to contain an up-to-date version of the classes source
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    67
    (this is temporary - in the future the probe order will be reversed, trying
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    68
     the source repository first).
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    69
    The source directory is required for systems which do NO source code control.
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    70
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    71
    Setup:
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    72
	- make certain, that the commands 'cvs' and 'co' are available on your system.
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    73
	- add setup for the CVSROOT environment variable to your .bashrc / .login / .profile
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    74
	- Make certain that either no local source directory exists, or it is empty or it contains
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    75
	  only source code for files NOT found in the repository (this will not be required in future versions).
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    76
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    77
    Caveat:
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    78
	currently, the rcs container is accessed directly, since cvs mangles the files ident-string and
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    79
	thus does not correctly recreate the original file (all source is offset by some characters w.r.t. the
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    80
	compiled file).
aed654f612d6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 56
diff changeset
    81
	Therefore, sevrer-mode CVS is not supported.
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
"
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
!
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
    85
version
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
    86
^ '$Header: /cvs/stx/stx/libbasic3/Attic/CVSSCMgr.st,v 1.16 1995-11-20 13:19:50 cg Exp $'! !
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
!CVSSourceCodeManager class methodsFor:'initialization'!
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
initialize
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    "/
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    "/ if CVSROOT is non-empty and both cvs and co are available
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    "/ as commands, assume this system uses a cvs source code management.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    "/
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    (CVSRoot := OperatingSystem getEnvironment:'CVSROOT') notNil ifTrue:[
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
	(OperatingSystem canExecuteCommand:'cvs') ifTrue:[
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
	    (OperatingSystem canExecuteCommand:'co') ifTrue:[
63
abf51a9ae873 cachedir in tempdir
Claus Gittinger <cg@exept.de>
parents: 62
diff changeset
    98
		self initCacheDirPath.
abf51a9ae873 cachedir in tempdir
Claus Gittinger <cg@exept.de>
parents: 62
diff changeset
    99
		Smalltalk at:#SourceCodeManager put:self.
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
		'CVS SourceCodeManager installed.' infoPrintNL.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
	    ]
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
	]
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    ]
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    "
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
     CVSSourceCodeManager initialize
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    "
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    "Created: 4.11.1995 / 19:14:38 / cg"
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
! !
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   112
!CVSSourceCodeManager class methodsFor:'source code access'!
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   113
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   114
checkinClass:cls fileName:classFileName directory:packageDir module:moduleDir source:sourceFileName logMessage:logMessage
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   115
    "enter a classes source code (which has been already filed out into sourceFileName)
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   116
     into the source repository.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   117
     Return true if ok, false if not."
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   118
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   119
    |tempdir dir cmd checkoutName logMsg revision merge cmdOut whatHappened s|
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   120
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   121
merge := false. "/ for now ....
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   122
merge := true. "/ for now ....
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   123
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   124
    merge ifTrue:[
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   125
	revision := cls revision.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   126
	revision isNil ifTrue:[ 
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   127
	    'CVSMGR: class ' , cls name , ' has no revision string' infoPrintNL.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   128
	    ^ nil.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   129
	].
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   130
    ].
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   131
74
0554ca14e971 log message was wrong
Claus Gittinger <cg@exept.de>
parents: 73
diff changeset
   132
    logMsg := logMessage.
0554ca14e971 log message was wrong
Claus Gittinger <cg@exept.de>
parents: 73
diff changeset
   133
    (logMsg isNil or:[logMsg isEmpty]) ifTrue:[
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   134
	logMsg := 'checkin from browser'.
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   135
    ].
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   136
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   137
    cmdOut := Filename newTemporary.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   138
    cmdOut exists ifTrue:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   139
	cmdOut remove.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   140
    ].
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   141
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   142
    "/
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   143
    "/ in CVS, we have to checkout the file first, in order
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   144
    "/ to get up-to-date CVS entries, and also to be able to merge in
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   145
    "/ other users changes.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   146
    "/
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   147
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   148
    "/
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   149
    "/ first, create a temporary work tree
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   150
    "/
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   151
    tempdir := Filename newTemporaryIn:nil.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   152
    tempdir exists ifTrue:[
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   153
	tempdir recursiveRemove.
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   154
    ].
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   155
    tempdir makeDirectory.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   156
    dir := tempdir construct:moduleDir.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   157
    dir makeDirectory.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   158
    dir := dir construct:packageDir.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   159
    dir makeDirectory.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   160
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   161
    "/
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   162
    "/ check it out there
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   163
    "/
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   164
    checkoutName :=  moduleDir , '/' , packageDir , '/' , classFileName , '.st'.
70
10c63b6f0615 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   165
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   166
    merge ifTrue:[
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   167
	cmd := 'cd ' , tempdir name , ';cvs checkout -r ' , revision , ' ', checkoutName.
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   168
    ] ifFalse:[
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   169
	cmd := 'cd ' , tempdir name , ';cvs checkout ' , checkoutName.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   170
    ].
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   171
('checkout: ' , cmd) printNL.
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   172
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   173
    (OperatingSystem executeCommand:cmd) ifFalse:[
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   174
'failed: ' errorPrint. cmd errorPrintNL.
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   175
	tempdir recursiveRemove.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   176
	('CVSMGR: cannot checkout ' , checkoutName) errorPrintNL.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   177
	^ false.
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   178
    ].
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   179
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   180
    "/
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   181
    "/ copy-over our current version
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   182
    "/
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   183
    cmd := 'mv ' , sourceFileName , ' ' , tempdir name , '/' , checkoutName.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   184
    (OperatingSystem executeCommand:cmd) ifFalse:[
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   185
'failed: ' errorPrint. cmd errorPrintNL.
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   186
	'CVSMGR: cannot copy-over filedOut class source' errorPrintNL.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   187
	^ false.
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   188
    ].
70
10c63b6f0615 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   189
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   190
merge ifTrue:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   191
    "/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   192
    "/ synchronize i.e. merge in any changes
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   193
    "/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   194
    cmd := 'cd ' , tempdir name , ';cvs update ' , checkoutName , ' > ' , cmdOut name.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   195
('update: ' , cmd) printNL.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   196
    (OperatingSystem executeCommand:cmd) ifFalse:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   197
'failed: ' errorPrint. cmd errorPrintNL.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   198
	'CVSMGR: cannot copy-over filedOut class source' errorPrintNL.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   199
	^ false.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   200
    ].
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   201
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   202
    "/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   203
    "/ check what happened - the contents of the cmdOut file may be:
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   204
    "/   empty   -> nothing changed
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   205
    "/   M xxx   -> merged-in changes from other users
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   206
    "/   C xxx   -> a conflict occured and the differences have been merged into the source
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   207
    "/              needs special action
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   208
    whatHappened := cmdOut contentsOfEntireFile asString.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   209
    (whatHappened isNil or:[whatHappened isEmpty]) ifTrue:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   210
	"/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   211
	"/ no change
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   212
	"/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   213
	self information:'nothing changed'
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   214
    ] ifFalse:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   215
	(whatHappened startsWith:'M ') ifTrue:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   216
	    "/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   217
	    "/ merged in changes
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   218
	    "/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   219
	    s := WriteStream on:String new.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   220
	    self writeRevisionLogOf:Array fromRevision:(self revisionAfter:revision) toRevision:nil to:s.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   221
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   222
	    self information:'The source has been changed in the meanwhile as follows:
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   223
' , (s contents) , '
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   224
I have merged your new changes (based upon rev. ' , revision , ') into the newest revision.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   225
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   226
You should update your class from the repository.'
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   227
	] ifFalse:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   228
	    (whatHappened startsWith:'C ') ifTrue:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   229
		"/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   230
		"/ conflict
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   231
		"/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   232
		s := WriteStream on:String new.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   233
		self writeRevisionLogOf:Array fromRevision:(self revisionAfter:revision) toRevision:nil to:s.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   234
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   235
		self information:'The source has been changed in the meanwhile as follows:
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   236
' , (s contents) , '
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   237
Your new changes (based upon rev. ' , revision , ') CONFLICT with those changes - please fix.'
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   238
		'CVSMGR: cannot (for now) checkin; conflicts found' errorPrintNL.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   239
		^ false.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   240
	    ] ifFalse:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   241
		"/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   242
		"/ unexpected
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   243
		"/
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   244
		self information:'unexpected message from CVS:
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   245
' , whatHappened
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   246
	    ]
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   247
	]
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   248
    ].
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   249
].
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   250
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   251
    "/
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   252
    "/ now check it in again
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   253
    "/
74
0554ca14e971 log message was wrong
Claus Gittinger <cg@exept.de>
parents: 73
diff changeset
   254
    cmd := 'cd ' , tempdir name , ';cvs commit -m "', logMsg ,'" ' .
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   255
    (OperatingSystem executeCommand:cmd) ifFalse:[
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   256
'failed: ' errorPrint. cmd errorPrintNL.
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   257
	'CVSMGR: cannot checkin modified class source' errorPrintNL.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   258
	^ false.
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   259
    ].
70
10c63b6f0615 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 69
diff changeset
   260
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   261
    tempdir recursiveRemove.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   262
    ^ true
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   263
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   264
    "
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   265
     SourceCodeManager checkinClass:Array logMessage:'testing only'
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   266
    "
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   267
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   268
    "Created: 6.11.1995 / 18:57:05 / cg"
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   269
    "Modified: 20.11.1995 / 12:58:46 / cg"
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   270
!
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
65
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   272
streamForClass:cls fileName:classFileName revision:revision directory:packageDir module:moduleDir cache:cacheIt
58
9b919d0bfec9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 57
diff changeset
   273
    "extract a source file and return an open readStream on it."
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
65
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   275
    |dir cachedSourceFilename temporaryFile file cmd fullName revisionArg stream|
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    CVSRoot isNil ifTrue:[
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
	'CVSMGR: CVSROOT not set' infoPrintNL.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
	^ nil
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    ].
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    "/ if not already existing, create a temp directory
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
    "/ where we deposit sources.
65
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   284
    "/ this is used as a cache for further requests, since
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
    "/ accessing the repository may be slow.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
    "/ (if cvs uses a remote connection via ppp, for example)
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
    "/
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
58
9b919d0bfec9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 57
diff changeset
   289
    (dir := self sourceCacheDirectory) isNil ifTrue:[
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
	^ nil
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
    ].
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
    fullName := moduleDir , '/' , packageDir , '/' , classFileName , '.st'.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
62
f0979df2e58b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 61
diff changeset
   295
    (revision isNil or:[revision == #newest]) ifTrue:[
f0979df2e58b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 61
diff changeset
   296
	cachedSourceFilename := classFileName.
f0979df2e58b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 61
diff changeset
   297
    ] ifFalse:[
f0979df2e58b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 61
diff changeset
   298
	cachedSourceFilename := classFileName , '_' , revision.
f0979df2e58b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 61
diff changeset
   299
    ].
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
    file := (dir construct:cachedSourceFilename) asFilename.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
    file exists ifTrue:[
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
"/        ('CVSMGR: found existing: ', file name) infoPrintNL.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
    ] ifFalse:[
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
	"/
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
	"/ ok, ask cvs to extract the corresponding source code
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
	"/ into the cache directory ...
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
	"/
58
9b919d0bfec9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 57
diff changeset
   309
	"/ claus: cannot use 'cvs' (it mangles the header's filename string
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
	"/        by expanding symbolic links). This may make the extracted files
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
	"/        contents different from the compiled one and thus invalidates the
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
	"/        methods source-offsets.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
	"/        By directly calling 'co', this trouble goes away.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
	"/
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
	temporaryFile := (Filename newTemporaryIn:nil) name.
61
a0cdaff5ceb3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   316
	(revision isNil or:[revision == #newest]) ifTrue:[
a0cdaff5ceb3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   317
	    revisionArg := ''
a0cdaff5ceb3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   318
	] ifFalse:[
a0cdaff5ceb3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   319
	    revisionArg := '-r' , revision
a0cdaff5ceb3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   320
	].
a0cdaff5ceb3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   321
	cmd := '(cd ' , CacheDirectoryName , '; co -q ' , revisionArg , ' -p ' , CVSRoot , '/' , fullName , ' > ' , temporaryFile , ')'.
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
	Verbose == true ifTrue:[
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
	    ('CVSMGR: executing: ' , cmd ) infoPrintNL.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
	].
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
	(OperatingSystem executeCommand:cmd) ifFalse:[
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
	    'CVSMGR: checkout failed' infoPrintNL.
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
	    ^ nil
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
	].
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
65
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   331
	cacheIt ifTrue:[
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   332
	    (OperatingSystem renameFile:(CacheDirectoryName , '/' , temporaryFile)
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   333
			     to:(CacheDirectoryName , '/' , cachedSourceFilename)) ifFalse:[
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   334
		('CVSMGR: failed to rename ', temporaryFile, ' to ', cachedSourceFilename) infoPrintNL.
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   335
		^ nil
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   336
	    ]
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   337
	] ifFalse:[
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   338
	    stream := (CacheDirectoryName , '/' , temporaryFile) asFilename readStream.
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   339
	    OperatingSystem removeFile:(CacheDirectoryName , '/' , temporaryFile).
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   340
	    ^ stream
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   341
	]
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
    ].
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
    ^ file readStream
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
    "Created: 4.11.1995 / 19:46:20 / cg"
65
098be8484211 dont cache classes of which the newest rev. has been checked out
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   346
    "Modified: 9.11.1995 / 14:32:55 / cg"
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   347
! !
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   348
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   349
!CVSSourceCodeManager class methodsFor:'source code administration'!
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   350
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   351
writeRevisionLogOf:cls fromRevision:rev1 toRevision:rev2 fileName:classFileName directory:packageDir module:moduleDir to:aStream
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   352
    "send (part of) the revisionlog to aStream"
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   353
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   354
    |file cmd fullName inStream skip atEnd line revArg revLine1 revLine2 idx|
63
abf51a9ae873 cachedir in tempdir
Claus Gittinger <cg@exept.de>
parents: 62
diff changeset
   355
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   356
    CVSRoot isNil ifTrue:[
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   357
	'CVSMGR: CVSROOT not set' infoPrintNL.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   358
	^ nil
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   359
    ].
69
874833ad880c revision log stub method
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   360
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   361
    fullName := CVSRoot , '/' , moduleDir , '/' , packageDir , '/' , classFileName , '.st,v'.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   362
    file := fullName asFilename.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   363
    file exists ifFalse:[
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   364
	('CVSMGR: non existing repository file: ', file name) infoPrintNL.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   365
	^ false
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   366
    ].
69
874833ad880c revision log stub method
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   367
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   368
    revArg := ''.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   369
    (rev1 notNil or:[rev2 notNil]) ifTrue:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   370
	revArg := '-r'.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   371
	rev1 notNil ifTrue:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   372
	    revArg := revArg , rev1
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   373
	].
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   374
	revArg := revArg , ':'.
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   375
	rev2 notNil ifTrue:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   376
	    revArg := revArg , rev2
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   377
	]
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   378
    ].
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   379
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   380
    inStream := PipeStream readingFrom:('rlog ' , revArg , ' ' , file name).
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   381
    inStream isNil ifTrue:[
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   382
	('CVSMGR: cannot open pipe to rlog ', file name) infoPrintNL.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   383
	^ false
72
e64fba2dcb10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 70
diff changeset
   384
    ].
69
874833ad880c revision log stub method
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   385
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   386
    skip := true.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   387
    [skip and:[inStream atEnd not]] whileTrue:[
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   388
	line:= inStream nextLine.
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   389
	line notNil ifTrue:[
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   390
	    (line startsWith:'description:') ifTrue:[skip := false].
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   391
	]
69
874833ad880c revision log stub method
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   392
    ].
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   393
    inStream nextLine. "/ skip separating line.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   394
    atEnd := false.
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   395
    [atEnd or:[inStream atEnd]] whileFalse:[
69
874833ad880c revision log stub method
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   396
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   397
	revLine1 := inStream nextLine.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   398
	revLine2 := inStream nextLine.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   399
	(idx := revLine2 indexOfSubCollection:'state:') ~~ 0 ifTrue:[
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   400
	    revLine2 := revLine2 copyTo:idx - 1
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   401
	].
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   402
	aStream cr.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   403
	aStream nextPutAll:revLine1; nextPutAll:'    '.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   404
	aStream nextPutAll:revLine2; cr.
69
874833ad880c revision log stub method
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   405
76
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   406
	line := inStream nextLine.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   407
	[atEnd or:[line startsWith:'--------']] whileFalse:[
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   408
	    (line startsWith:'==========') ifTrue:[
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   409
		atEnd := true.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   410
	    ] ifFalse:[
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   411
		(line withoutSpaces = '.') ifTrue:[
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   412
		    line := '*** empty log message ***'
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   413
		].
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   414
		aStream nextPutAll:'    '; nextPutAll:line; cr.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   415
		line := inStream nextLine.
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   416
	    ]
df46581e46be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 74
diff changeset
   417
	]
69
874833ad880c revision log stub method
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   418
    ].
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   419
    inStream close.
69
874833ad880c revision log stub method
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   420
    ^ true
63
abf51a9ae873 cachedir in tempdir
Claus Gittinger <cg@exept.de>
parents: 62
diff changeset
   421
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   422
    "
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   423
     SourceCodeManager writeRevisionLogOf:Array to:Transcript 
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   424
     SourceCodeManager writeRevisionLogOf:Array fromRevision:'1.40' toRevision:'1.43' to:Transcript 
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   425
     SourceCodeManager writeRevisionLogOf:Array fromRevision:'1.40' toRevision:nil to:Transcript 
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   426
     SourceCodeManager writeRevisionLogOf:Array fromRevision:nil toRevision:'1.3' to:Transcript 
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   427
    "
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   428
73
90ab44bd6bff checkin from browser
Claus Gittinger <cg@exept.de>
parents: 72
diff changeset
   429
    "Created: 16.11.1995 / 13:25:30 / cg"
77
4cc959f6b639 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 76
diff changeset
   430
    "Modified: 20.11.1995 / 13:42:41 / cg"
56
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
! !
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
6705671acee8 source code managers (optional) These are involved, if no
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
CVSSourceCodeManager initialize!