Special release mechanisms

This page describes methods for making changes to the file contents of an IP outside of a workspace. These methods are typically used as part of an automated flow, or when creating a release from an already existing DM level file list or tag. Another common use case is in data migration from legacy DM systems into Helix IPLM.

Server Side content releases

Releases that capture new file content (stored in the contents IP field see IP Versions (Releases) for more information) are almost always captured from a workspace. There are however situations where it may be necessary to specify release contents directly on the server, bypassing a workspace. One common case where this is true is data migration from one system to another, or when importing legacy release data into Helix IPLM.

There are two methods for capturing release contents on the server directly:

Release Method Command Description
From a File list pi release --from-filelist

A file list is supplied to the release command at the time of release, the contents of the new release are the supplied file list

This release method is only supported for Perforce and P4Stream DMType IPs

From a Revision pi release --revision

A revision number is provided to the release command at the time of release, the contents of the new release is captured at the revision number

Creating a release from a file list

Releasing an IP using a user-supplied filelist avoids having to first create a workspace prior to creating the release. Avoiding building a workspace facilitates migration from a 3rd party environment into Helix IPLM. Dumping the file list for each release from a legacy system is more efficient than building a workspace and running pi release for every IPV in the system.

For Perforce (P4) type IPs, use the --from-filelist option in the release command.

P4 example:

> pi release drinks.vodka@.TRUNK --from-filelist <user_supplied_file>

For P4Stream (P4S) type IPs, you must use –from-filelist to supply the filelist and use the –revision option to supply the changelist for the stream specification. Using both options at once is an error for any other DM Type except P4Stream.

P4Stream example:

>pi release drinks.vodka@.TRUNK –from-filelist <user_supplied_file> --revision 553

Filelist format

The filelist contains one file per line (including deleted files).

Filelist Repo Definition
sw/adds/file1#1
sw/adds/file2#1
sw/adds/file3#1
sw/adds/file4#3*

Note:  The asterisk in the last line of this example means that file has been p4 deleted.

Creating a release from a revision number

The benefits of creating a release from a revision number are similar to those of creating a release from a filelist. Any IP type can support revision releases. 

DM Type Revision mapping
Perforce (P4) The revision value passed into the release command represents a Perforce changelist
P4Stream (P4S) The revision value passed into the release command represents a Perforce changelist describing both the file content and the version of the P4 Stream specification. Supplying only the –revision argument creates a revision (changelist) release for P4Stream IPs.
Subversion (SVN) The revision value passed into the release command represents a Subversion repository version
Other DM types See DM documentation

Revision releases are accomplished via the --revision option to the pi release command:

--revision Command
> pi release --revision 2056 tutorial.padring@.TRUNK -m "new padring release" 
INFO:Running pre_release hook on 'tutorial.padring@.TRUNK' failed to run as the release was made outside of a workspace. 
INFO:Running post_release hook on 'tutorial.padring@.TRUNK' failed to run as the release was made outside of a workspace. 
Successfully created 'tutorial.padring@7.TRUNK'.

Because a release in Perforce created with the --revision argument will only contain a single p4 changelist number, the release necessarily can't capture any file content that is different from that changelist. This is in contrast to a file list based release that might span multiple changelists. Subversion IPs always capture the repository version (this is an inherent feature of Subversion).

Notes

  • A client side hook will run only if a release is made inside a workspace.
    • This means that release --revision from outside a workspace will not execute any hooks 
  • The --revision option must explicitly specify an IP Line identifier: eg: tutorial.padring@.TRUNK
    • Failure to provide this explicit IPL will result in an error
  • The validity of the user supplied revision is not checked against the DM system