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 |
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).
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:
> 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