V  C /  m 3.2
The Force of Change

Release Notes

1.       New Features

VC/m Version 3.2 contains the following key new features:

2.       Upgrade Steps

Follow the normal installation procedure.  Be sure to run ^%vcins as this performs the following upgrade operation:

Thereafter, entries made into Access Rights fields on Users, Locations, Transfer Routes etc must exist within the Access Rights table.

3.       Integration with Caché Security

When using CSP to provide connectivity for VC/m's browser interface, VC/m users can now be authenticated using the standard Caché security mechanisms (5.1 or later). To configure this, use System Management Portal to edit VC/m's CSP application as follows:

Note that the Caché user under which your CSP Gateway authenticates (typically CSPSystem) must have read access to the database in which this class resides. If it does not, any attempt to access VC/m's CSP application will give an HTTP 404 error.

With the application configured as above, when VC/m is accessed using CSP the initial page will prompt for a Caché username and password. Provided a matching VC/m username or alias exists the user will be able to access VC/m. No passwords need be entered on the VC/m user maintenance dialog unless they are required to restrict access using Beyond Compare (see below).

When using this mode of authentication, the VC/m browser interface will log out automatically a few seconds before the CSP application timeout period expires. This behavior is designed to prevent data remaining accessible after timeout.

When connecting to VC/m using Beyond Compare the FTP or FTPS connection requires a username and password. The credentials can be checked against the Caché security database by setting ^%vcvc("authenticateInCache")=1. A matching VC/m username will still be required, but a password will no longer be definable in the VC/m user maintenance dialog.

Caché user accounts used by VC/m in these ways will need sufficient privileges to access all relevant databases, including write permission on the VC/m repository database itself.

4.       Bug Fixes and Other Enhancements Since 3.1.1

Summary of bug fixes and other enhancements which are included in this release:

Change request Title
GJL111 Raise an error when T-type component contains overlength lines
GJL136 Fix UNDEFINED error at zdelMx+8^%vc1xPRJ
GJL35 On Caché, ending a multi-line comment with */ in the first column caused VC/m to omit the line when transferring to a namespace
GJL700056, L5473 Merge dialog was sometimes too small
GJL700082, GJL700418 Merge-product object sometimes failed to install with VC/live
GJL700099 INTs with null lines saved in Studio on Caché 2008.2+ were truncated when read by VC/m
GJL700141 Serenji and Studio 5+ interfaces did not update VC/m object timestamp.
When Serenji or Studio 5+ were used to edit a routine the VC/m timestamp was not updated on save. If a physical address Dependency Check setting was Internal the change was not detected. This correction makes the Studio 5+ interfaces update the timestamp when not running in offline mode. You are using the Serenji online-mode interface if ^%SerenjC("C","NSL")="NSL^%vc670". To make the Serenji online-mode interface perform the timestamp update, DO setup^%vc670 and default the answers. If this step is not performed then the correction will not be activated for Serenji.
GJL700142 Add way for text files to be written with CRLF separators even on Unix Caché.
By default, Caché on Unix will put LFs (the native line separator) into files written to text-format storage. When the file is intended for use on a Windows environment (e.g. through Samba) it may be preferable to write CRLFs instead. See comments in putx^%vcltext for instructions about enabling this.
GJL700154 Switch Studio interface to offline mode if connection lost during operation
GJL700181 Change Request find dialog mishandled CR patterns with * not at end
GJL700319 When a single empty object was transferred to a location mapped to F-format storage no .$ file was written, so the delete didn't propagate.
GJL700321 Should not be permitted to cancel an empty object with master in a library
GJL700371 Work around Caché failure to unlock project after delete
GJL700374 CSR component file not set readonly when checked in
GJL700380 On VMS, drop version suffix from enumerated T- and BIN-type components
GJL700411 Beyond Compare could not explore objects with doublequote in name
GJL84 Caché ECP propagation behaviour change after 5.0 affected task server
L2578 crput^%vcapi truncated description/comment at first blank line
L4480 Check existence of component file at F-type location.
When F-type location driver validates existence of component on object, also verify that the component file is present. Otherwise a transfer from a fileset does the pre-delete of the object's components at the destination using info from the $ file before discovering that the component file is missing.
L4487 XML file written at FX-format storage address could contain bad structure
L4515 G and GZ type component trees failed to expand on Caché systems where $ZUTIL(69,7,1) is the default mode
L4539 Terminal mode was not respecting Object.Right.EditSystems
L4546 Handle large directories of BIN and T type components on Unix
L4554 Check existence of file before deleting CSP or CSR, to prevent forced error on Unix
L4572 List CSPs and CSRs correctly on Unix
L4587 Implement optional $$gettidy component driver method.
Prune Caché XML to avoid unimportant differences.
L4637 Column widths were lost if the first row of a table with a "Max Number" footer was updated
L4644 Change Request selector XYZ* failed to include CR XYZ itself
L4646 Unregistered unsubscripted G or GZ component could report "Ancestor Registered" and thus be unavailable for registration
L4675 Log audit messages properly even if client browser has closed and is unavailable to display them
L4700 Registered sibling numeric global subscripts could yield incorrect states.
For example, if ^G(1 was registered, ^G(10 would report "Ancestor Registered".
L4740 Cancel should not cause auto-transfer of cancelled version
L4742 Object and Change Request list Description column not wide enough nor resizable
L4778 Increase object base and variant title field length from 60 to 200
L4798 Browser interface permitted deletion of in-use Change Request Types
L4800 Files in F-format storage cannot handle routines with dot in name
The routine header line in .BAS, .INC, .INT, .MAC and .R files needs to be able to use the ^ delimiter in place of the . one, in the same way as InterSystems changed the %RO format with Caché 4.0. For back compatibility, this change has to be manually enabled on existing installations by setting ^%vcct(ctype,"param","ROformat")="Cache4". On new VC/m installations it will be set by default; to get the old behaviour, kill the node. If using VC/live, use the same setting on sending and receiving systems.
L4847 <UNDEFINED>masterx+14^%vclM when registering CSPs in task server location
L4857, L4865 Handle BPLs in Ensemble Studio, managing them in VC/m as CLS-type components.
L4862 Allow in-error component to be selected
L4867 Add ^vcvp node to handle case of multiple CSP apps in one namespace
When more than one CSP application is defined for a single namespace, VC/m cannot deduce which one its CSP and CSR components belong to and WRITE $$appUrl^%vc1xCSP in the namespace returns null. In such a case, define which by setting URL (with trailing "/") in ^vcvp("cspAppURL") in the namespace, e.g. ^vcvp("cspAppURL")="/csp/vcmdemo/samples/dev1/". Note, no %-prefix on global name.
L4888 Global registered unsubscripted does not show descendant as "Ancestor Registered"
L4946 Permit Studio class to report messages for %-classes in certain cases
L4993 Use %Dictionary.ClassDefinition to avoid Caché 5.2 bug in %ClassDefinition that led to ProcedureBlock setting of a class reverting to 0
L4999 Transfer message on CR should not be logged if no objects transferred
L5055 Timing issue could produce looping task server and/or loss of %transaction information
L5116 Checkout of a routine set the same timestamp on the component of the new objectversion as the one on the old objectversion had. As a result Studio didn't reload with the new VC/m comment headers. This change makes component drivers' copy() method put a new physical timestamp onto the scratch global prior to put() if the from- and to-obvs do not match.
L5127 xferbulk^%vcapi did not forward selector by reference
L5236 Transfer dialog would sometimes fail to close
L5277 <SYNTX>zputM+13^%vc1xCLS when saving CLS component from Beyond Compare
L5356 After CSP timeout, VC/m actions used UnknownUser license slots
L5381 Avoid unnecessary $ZUTIL calls on Caché so as to fit better within Caché Advanced Security model
L5436 Prevent location maintenance creating new physloc if reformatting address
L5494 Avoid <MAXSTRING> if transfer gives large number of compile errors
L5525 Enable editCheckOutValidation callout from Caché 5 Studio to see component variables
L5728 Prevent VC/live background daemon installer from holding a license
L5741 Avoid Studio error when working offline
VCM-B-0915 Work on Caché config where <ENDOFFILE> not raised
VCM-B-0916 Studio 4.x interfaces were not checking status of CSP components
VCM-B-0922 Fix syntax error at +63^%vc413 on non-Caché platforms
VCM-B-0926 Fix misalignment of connectors on some component views
VCMB165 Two Integrity Check options were in the wrong sections of the dialog
VCMB181 Creation of Studio 5+ projects did not support task-server addresses
VCMB182 CSP application named "/" did not enumerate components
VCMB19 When copying filter from library location to non-library one, retain target's setting for missing buttons
VCMB190 XML class files in the VC/m install kit unzipped on OpenVMS in a format that Caché could not load
VCMB193 Audit messages did not add filename when converting %FROM or %TO for FX-format storage
VCMB199 Excel reports could fail to download to browser when CSP is connection mechanism
VCMB202 Make component transfer from multi-version location operate on the chosen object.
A multi-version location (e.g. library) can contain many identically-named components. The component view suffixes them with the /vari.vers of their owning object but a transfer initiated from the component was operating on the highest version number of the first variant.
VCMB205 chref_validate callout was passed an invalid obv when Add button clicked
VCMB215 Do not trigger AUTOTs etc when bulk loading
VCMB216 Deletion of location class left member locations referring to it
VCMB219 serverLink on GT.M 5.x consumed 100% cpu
VCMB228 integ^%vcapi entrypoint was not truly silent
VCMB230 A bug in Caché 2007.1 Studio left VC/m's source control submenu blank
VCMB233 Some text input fields were not being correctly set readonly
VCMB242 VCmStudio.SourceControl failed to compile on Caché 2008.2
VCMB244 Positive transfer dependency was satisfied by version on different branch.
Transfer along a route with a positive dependency on a location was being allowed in the case where the dependent location contained a version from a different branch. For example, suppose A/1.1 was branched to v2 in LocX and v3 in LocY. A transfer from LocY that specifies a LocX dependency was being permitted. This was incorrect, since the meaning of a positive dependency is that the specified location has the current version or a successor version. Versions on different branches are neither.
VCM-D-0104 Support use of obv^%vc1xapi within transfer callouts
VCM-D-0106 Record extra info in ^%vcError to help diagnose task server issues
VCM-D-0108 Support relative paths for text and bin addresses on Caché on Windows
VCM-D-0116 Supply dummy filesize (1 byte) so BC3 performs background comparisons
VCM-D-0118 Use nameObject callout during CHUI bulk component load
VCM-D-0119 Make CHUI bulk component load use new $$gettidy method for diffs to prevent false positives on classes
VCM-D-0120 Better handling of executable files on Unix.
Prior to this change, VC/m used the chmod value 444 when setting a file read-only, and 666 when setting it readwrite. As a result, executable files (e.g. shell scripts) lost their execute bit. We now use a+r,a-w for readonly and a+rw for readwrite. This technique leaves the execute bit unchanged.
VCM-D-0126 Permit lowercase characters in Access Right codes
VCM-D-0134 Add import, export and delete error event details to AuditTrail Details window
VCM-D-0138 When task raises forced error, propagate better message into audit
VCM-D-0139 Report more useful information to user on <ZFORC> error
VCM-D-0140 Encrypt VC/m passwords by default on new Caché installations.
New VC/m installations on Caché 5+ now set the ^%vcvc("passwordEncryption") hook to use Caché's MD5 hashing function and Base64 encoder. This avoids filing VC/m passwords in plaintext. Existing installations can SET ^%vcvc("passwordEncryption")="hashpw^%vc" but must then encrypt all existing entries thus:
S u="" F  S u=$O(^%vcmf("user",u)) Q:u=""  S $P(^%vcmf("user",u),"\",4)=$$hashpw^%vc($P(^%vcmf("user",u),"\",4))
		
VCM-D-0141 Add mechanism for F-type storage to put files into subdirectories.
In some situations when transferring to F-format storage it is preferable if components capable of being stored in bin- or text-type storage are put into a dedicated per-component-type subdirectory in that format rather than in the usual composite file. For instance, when transferring their respective objects to location Export mapping to F-format storage, T.index.htm and T.scripts/common.js would be written into a subdirectory named Export001.T rather than embedded into a single file named Export001.T. See comments in put^%vclF for details of how to enable this option.
VCM-D-0142 In selector combo, move a re-used entry to the top of the MRU list
VCM-D-0143 Improve Location definition dialog layout
VCM-R-0010 Fix fault with chmaint_status_validate callout when crput^%vcapi used
VCM-R-0011 Prevent <SUBSCRIPT>status2+4^%vc1edt if Studio opens unmapped component type
VCM-R-0013 Component-by-location index integrity check was not detecting certain errors
VCM-R-0016 Remove redundant reference to GjsTableSorter.css.
In some IIS configurations this reference to a non-existent CSS file caused an extra login dialog to appear during Change Request Find.
VCM-R-0017 Change Request dialog truncated right-hand edge of textarea
VCM-R-0018 Object dates were misreported in Beyond Compare
VCM-R-0019 CHUI load of MAC and CLS components to M-format storage gave syntax error.
When CHUI Load was performed on certain component types (e.g. CLS, MAC) to a location mapped to M-format storage, a syntax error occurred when the component driver tried to note that a compilation was required. The correction make Load perform post-transfer compilations in this case.
VCM-R-0020 %vc413 bulk load template routine mis-named some components on Unix.
When %vc413 was used on Unix to drive bulk loading of CSP, CSR, T and BIN components these were given absolute names rather than relative ones.
VCM-R-0022 Location definition dialog Physical Address fields were clipped
VCM-R-0023 When remote:// addresses are used, CSP files showed as unregistered T components
VCM-R-0025 Change request dialog gave wrong error message if CR code changed
VCM-R-0027 CR and Component selectors did not support multiple * wildcards, though Object does
VCM-R-0028 Write FX file header with correct version for the exporting Caché.
When Caché components are written into an FX file the header tag of the file needs to give the correct generator version. Prior to this change the version was hard-coded as 9, causing Caché import to produce incorrect results when classes were in fact being exported from a later Caché version. For example, a class exported from 2008.2 into an FX file with a version="9" indicator imports into a 2008.2 system with inappropriate ClassType="" and Not ProcedureBlock qualifiers.
VCM-R-0029 Location comparison report sometimes mis-reported the common ancestor
VCM-R-0032 Include component type in transfer validation failure messages
VCM-R-0035 When cancelling an in-error object the reinstated object was incorrectly left in the error state
VCM-R-0036 Some Transfer Route definition fields were right-clipped
VCM-R-0038 Location Compare reports were not filtering by system code
VCM-R-0039 Limit number of for-action audit items listed
VCM-R-0040 Tidy userAction index correctly when object is deleted

For further information about any of these changes contact support@georgejames.com


Copyright 1999,2009 George James Software
http://www.georgejames.com