(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10) (filecreated " 9-Aug-90 19:39:26" |{PELE:MV:ENVOS}INTERNAL>LIBRARY>CHANGECONTROL.;5| 13413 |changes| |to:| (vars *change-control-dev-dirs* *change-control-freeze-dirs*) |previous| |date:| "27-Jul-90 13:58:46" |{PELE:MV:ENVOS}INTERNAL>LIBRARY>CHANGECONTROL.;4|) ; Copyright (c) 1987, 1988, 1989, 1990 by Venue & Xerox Corporation. All rights reserved. (prettycomprint changecontrolcoms) (rpaqq changecontrolcoms ( (* |;;;| "Automate the process of change-control submission") (* |;;| "Variables which control change control:") (* |;;| "*CHANGE-CONTROL-DEV-DIRS* an AList of item-type -> dir name") (* |;;| "*CHANGE-CONTROL-FREEZE-DIRS* likewise for freeze dirs") (* |;;|  "*CHANGE-CONTROL-CHANGE-TEAMS* names to send change control submissions to") (files comparesources) (vars *change-control-dev-dirs* *change-control-freeze-dirs* *change-control-change-teams* *change-control-development-leaders* *change-control-comparison-functions*) (initvars (*cc-see-details* nil)) (fns changecontrol) (commands "cc"))) (* |;;;| "Automate the process of change-control submission") (* |;;| "Variables which control change control:") (* |;;| "*CHANGE-CONTROL-DEV-DIRS* an AList of item-type -> dir name") (* |;;| "*CHANGE-CONTROL-FREEZE-DIRS* likewise for freeze dirs") (* |;;| "*CHANGE-CONTROL-CHANGE-TEAMS* names to send change control submissions to") (filesload comparesources) (rpaqq *change-control-dev-dirs* ((nil . "{pele:mv:Envos}1.2>new>") (source . "{pele:mv:Envos}1.2>new>") (sources . "{pele:mv:Envos}1.2>new>") (:sources . "{pele:mv:Envos}1.2>new>") (:source . "{pele:mv:Envos}1.2>new>") (lib . "{pele:mv:Envos}1.2>new>") (library . "{pele:mv:Envos}1.2>new>") (:lib . "{pele:mv:Envos}1.2>new>") (:library . "{pele:mv:Envos}1.2>new>") (pce . |{ERIS}internal>Library>|) (:pce . |{ERIS}internal>Library>|) (rooms . |{Pogo:AISNorth}Medley>Sources>|) (:rooms . |{Pogo:AISNorth}Medley>Sources>|))) (rpaqq *change-control-freeze-dirs* ((nil . "{pele:mv:envos}1.2>sources>") (source . "{pele:mv:envos}1.2>sources>") (sources . "{pele:mv:envos}1.2>sources>") (:sources . "{pele:mv:envos}1.2>sources>") (:source . "{pele:mv:envos}1.2>sources>") (lib . "{pele:mv:envos}1.2>library>") (library . "{pele:mv:envos}1.2>library>") (:lib . "{pele:mv:envos}1.2>library>") (:library . "{pele:mv:envos}1.2>library>") (rooms . |{Pallas:AISNorth}Medley>Sources>|) (:rooms . |{Pallas:AISNorth}Medley>Sources>|))) (rpaqq *change-control-change-teams* ((nil gv "James.envos, Sybalsky.envos" ns "MedleyDev:MV:Envos") (source gv "James.envos, Sybalsky.envos" ns "MedleyDev:MV:Envos") (sources gv "James.envos, Sybalsky.envos" ns "MedleyDev:MV:Envos") (:sources gv "James.envos, Sybalsky.envos" ns "MedleyDev:MV:Envos") (:source gv "James.envos, Sybalsky.envos" ns "MedleyDev:MV:Envos") (lib gv "James.envos, Sybalsky.envos" ns "MedleyDev:MV:Envos") (library gv "James.envos, Sybalsky.envos" ns "MedleyDev:MV:Envos") (:lib gv "James.envos, Sybalsky.envos" ns "MedleyDev:MV:Envos") (:library gv "James.envos, Sybalsky.envos" ns "MedleyDev:MV:Envos") (rooms gv "James.envos, Kohlsaat.envos, RClarke.envos, Harada.envos" ns "James:AISNorth, Kohlsaat:AISNorth, RClarke:AISNorth, Harada:AISNorth" ) (:rooms gv "James.envos, Kohlsaat.envos, RClarke.envos, Harada.envos" ns "James:AISNorth, Kohlsaat:AISNorth, RClarke:AISNorth, Harada:AISNorth" ))) (rpaqq *change-control-development-leaders* ((nil gv "Sybalsky.envos" ns "") (source gv "Sybalsky.envos" ns "") (sources gv "Sybalsky.envos" ns "") (:sources gv "Sybalsky.envos" ns "") (:source gv "Sybalsky.envos" ns "") (lib gv "Sybalsky.envos" ns "") (library gv "Sybalsky.envos" ns "") (:lib gv "Sybalsky.envos" ns "") (:library gv "Sybalsky.envos" ns "") (rooms gv "Cutting.pa" ns "Cutting:PARC") (:rooms gv "Cutting.pa" ns "Cutting:PARC"))) (rpaqq *change-control-comparison-functions* nil) (rpaq? *cc-see-details* nil) (defineq (CHANGECONTROL (LAMBDA (FILES TYPE DETAILS?) (* \; "Edited 11-Oct-88 18:44 by jds") (* |;;| "Build a change-control message to the change-control team for the files in FILES, which may be a list or a single file name. The file name may include extensions and version numberts, and the comparison is always against the LATEST version on the freeze directory.") (* |;;| "TYPE (presently one of NIL, SOURCE, SOURCES, LIB, LIBRARY), is looked up in several ALists to control what directories the files will be on, and who gets the change-control message.. This permits future extensions to other products.") (LET* ((COMFILE (OPENSTREAM '{NODIRCORE} 'BOTH 'NEW)) (DEVDIR (CDR (ASSOC TYPE *CHANGE-CONTROL-DEV-DIRS*))) (FREEZEDIR (CDR (ASSOC TYPE *CHANGE-CONTROL-FREEZE-DIRS*))) (CHANGETEAM (LISTGET (CDR (ASSOC TYPE *CHANGE-CONTROL-CHANGE-TEAMS*)) (LAFITEMODE))) (DEV-LEADER (LISTGET (CDR (ASSOC TYPE *CHANGE-CONTROL-DEVELOPMENT-LEADERS*)) (LAFITEMODE))) (COMPAREFN (OR (CDR (ASSOC TYPE *CHANGE-CONTROL-COMPARISON-FUNCTIONS*)) (FUNCTION COMPARESOURCES))) (DATED-FILES (|for| FILE |inside| FILES |join| (LIST (FINDFILE FILE NIL (LIST DEVDIR)) (GETFILEINFO (FINDFILE FILE NIL (LIST DEVDIR)) 'CREATIONDATE)))) MSG) (* |;;| "Do the comparison of latest file with the latest frozen file.") (FRESHLINE PROMPTWINDOW) (PRINTOUT PROMPTWINDOW "Comparing sources...") (|for| FILE |inside| FILES |do| (PRINTOUT PROMPTWINDOW FILE " ") (PRINTOUT COMFILE T T "- - - - - - - - - - - - - - - - - - - - - -" T T) (APPLY* COMPAREFN (PACKFILENAME 'DIRECTORY FREEZEDIR 'VERSION NIL 'BODY FILE) (PACKFILENAME 'DIRECTORY DEVDIR 'BODY FILE) NIL NIL COMFILE)) (PRINTOUT PROMPTWINDOW "Done." T) (* |;;|  "Build the change-control detail message that goes to the development project leader:") (SETQ MSG (OPENTEXTSTREAM (CONCAT "Subject: Change Control Detail for " FILES " To: " DEV-LEADER " cc: " (FULLUSERNAME) (CL:FORMAT NIL "~%~%Candidate files:~% ~A (~A)~%" (CAR DATED-FILES) (CADR DATED-FILES)) (CL:FORMAT NIL "~{~5t~A (~A)~%~}" (CDDR DATED-FILES)) "Comparison of Sources: ") NIL NIL NIL (LIST 'FONT LAFITEEDITORFONT))) (* \; "Msg header") (TEDIT.SETSEL MSG (|fetch| (TEXTOBJ TEXTLEN) |of| (TEXTOBJ MSG)) 0 'RIGHT NIL T) (* \; "Go to the end") (SETFILEPTR COMFILE 0) (TEDIT.INCLUDE MSG COMFILE) (* \;  "And append the comparison results") (TEDIT.LOOKS MSG '(FAMILY GACHA SIZE 10 WEIGHT MEDIUM SLOPE REGULAR)) (COND ((OR *CC-SEE-DETAILS* DETAILS?) (* \; "He wants to see the details") (ADD.PROCESS `(\\SENDMESSAGE ',MSG 'NAME 'MESSAGESENDER))) (T (* \;  "Doesn't want to see it; just fire the details off.") (LAFITE.SENDMESSAGE MSG))) (* |;;| "Now build the message form") (SETQ MSG (OPENTEXTSTREAM (CONCAT "Subject: Change Control for " FILES " To: " CHANGETEAM " cc: " (FULLUSERNAME) (CL:FORMAT NIL "~%~%Candidate files:~% ~A (~A)~%" (CAR DATED-FILES) (CADR DATED-FILES)) (CL:FORMAT NIL "~{~5t~A (~A)~%~}" (CDDR DATED-FILES)) " ARs fixed: >>list of AR numbers<<" " Changes: >>Explanation of change<<" " Patch File: >>location of patch file, or note that it's whole-file<<" " Tests: >>location of regression test/script, test case itself," " or ref to AR test case used<< ") NIL NIL NIL (LIST 'FONT LAFITEEDITORFONT))) (* \; "Msg header") (TEDIT.SETSEL MSG 1 0 'LEFT) (TEDIT.NEXT MSG) (* \;  "Now leave him at the \"explanation\" fill-in, and send it off.") (ADD.PROCESS `(\\SENDMESSAGE ',MSG 'NAME 'MESSAGESENDER))))) ) (defcommand "cc" (file-or-files &optional type) (changecontrol file-or-files (cl:intern (string type) 'interlisp))) (putprops changecontrol copyright ("Venue & Xerox Corporation" 1987 1988 1989 1990)) (declare\: dontcopy (filemap (nil (7352 13020 (changecontrol 7362 . 13018))))) stop