Copying IPs

IPVs can be copied to new IPs or new IP Lines. When copied the source of the copy is captured in the new object and can be used to trace the copy history of the object.

Overview

Existing IPs can be copied to new IPs or into new Lines on the same IP. The source of the IP copy can be any release on any line of an existing IP. The metadata associated with the source IP (other than Aliases) is copied to the new IP or Line, including permissions. Perforce

Note:  DM level file data is not copied as part of the IPLM IP copy operation. File level data must be copied using DM level commands. In the case of Helix Core-based Perforce (P4) and P4Stream (P4S) dm_type IPs, the Helix Core p4 populate command can be used to copy IP data on the server without requiring a workspace.

The target IP or Line will be created with an @0 release (see IP Versions (Releases) for more information on @0 releases). If the source IPV has a repo_path (is not a container) a new repo_path must be specified for the new target IP or line. Note that when copying to a new IP target, the line must be TRUNK, as the TRUNK line is required for any IP in Helix IPLM.

When IPVs are copied to new lines (IP Lines (Branches)) or entirely New IPs the IPV source of the copy is retained in the newly copied object. This provides traceability of the copy history of any series of IPs. 

Permissions considerations

When an IPV is copied to a new IP:

  • Copying an IPV to create a new IP requires Library (read, write), IP read, and Line read to all IPV's direct resources (including private resources).

  • The existing permissions on the IP of the source IPV will be set on the newly created destination IP.
  • The existing permissions on the Line of the source IPV will be set on the TRUNK Line of the newly created destination IP.
  • The user copying the IPV (except if the built in 'admin' user) will be granted read, write, and owner permission on the newly created IP and its TRUNK Line.

Accessing the IP Copy function

IP Copy in IPLM Web

The copy to a new IP function is on the IPV page. Select Copy IPV:

Setting up the Copy

The button brings up the IP copy form. Select the destination IP Library, the new name of the destination IP, the Repo Path, and the Version Message. The Repo Path can be automatically copied from the Source IP using the '(Copy Repo Path from IPv)' link if desired. Note that it must be modified for the new IP once copied.

Once configured, select Create Copy.

IP Copy using CLI

Lines are created from other Lines on a given IP via the pi ip copy command on the CLI, or by creating a new line on IPLM Web. When a copy results in a new IP being created it is always created with the TRUNK line by default. If for example the IP Line 'LIB.IP@.TRUNK' already exists and we want to create an additional IP Line to use for an external IP Revision called 'REV2' and we decide the @3 version of LIB.IP@.TRUNK (LIB.IP@3.TRUNK) has the metadata we wish to use, we would do the following from the CLI:

pi ip copy Command
> pi ip copy LIB.IP@2.TRUNK LIB.NEWIP --repo-path=//mdx_test/LIB/NEWIP/TRUNK -m "copied to NEWIP"Successfully created new IP Version 'LIB.NEWIP@0.TRUNK'.

Details on the pi ip copy command:

pi ip copy Command Details
> pi ip cp -h
Usage: pi ip copy [-h] [--message MESSAGE] [--repo-path REPO_PATH]
                  source destination

Description: Create a new IP or new Line based on an existing IPV. For new IP
the Line @.TRUNK is created. For new Line the source IPV and destination Line
must belong to the same IP. Copy to new Line of new IP is an error. The
destination, either new IP or new Line, cannot already exist. If no
Version/Line is specified for source IPV will default to the latest Version of
Line @.TRUNK.

Positional arguments:
  source Source IPV
  destination Destination IP or Line

Optional arguments:
  --message MESSAGE, -m MESSAGE, -d MESSAGE
                        Version message for the initial IPV of the new IP.
  --repo-path REPO_PATH
                        The repository location of the destination IP which
                        must be specified for all IP except Container IP.
  -h, --help Show this help message and exit

Examples:
# create the new IP proj.adc2 based on the latest Version of the Line
proj.adc1@.TRUNK and use the repository location //depot/proj/adc2
  pi ip copy --repo-path //depot/proj/adc2 proj.adc1 proj.adc2

# create the new Line proj.adc1@.line2 based on the latest Version of the Line
proj.adc1@.TRUNK and use the repository location //depot/proj/adc1/line2
  pi ip copy --repo-path //depot/proj/adc1/line2 proj.adc1 proj.adc1@.line2


If we do a pi ip list -v on the new IP we see:

pi ip list -v Command
> pi ip list -v LIB.NEWIP@0.TRUNK
IP Version LIB.NEWIP@0.TRUNK:
    Description               - IP 
    DM type                   - Perforce (P4)
    Host                      -
    Repo Path                 - //mdx_test/LIB/NEWIP/TRUNK
    Resources                 - LIB.SUBA@1.TRUNK
                                LIB.SUBB@1.TRUNK
                                LIB.SUBC@1.TRUNK
    Current Aliases           - HEAD LATEST
    Historic Aliases          -
    Version Message           - copied to NEWIP

    IP created on             - 2020-04-11 11:09:20 -0700 PDT by admin
    Line created on           - 2020-04-11 11:09:20 -0700 PDT by admin
    IP Version created on     - 2020-04-11 11:09:20 -0700 PDT by admin

  Project Properties:
    *                         - --mode local --path blocks/$IP
  Branching Information:
    Source                    - LIB.IP@2.TRUNK

  Labels:
    analog

  Property Sets:
    global:
      IP Properties:
        target_power          - 50.0 mW
        target_size           - 35.0 sq-mm
      IP Version Properties:
        coverage              - 22.0 % (*)
        power                 - 1.0 mW (*)
        regr                  - 100 /2000 (*)
        size                  - 1.0 sq-mm (*)

  Permissions on IP:
    Owner                     - g:tutorial
    Write Permissions         - g:tutorial
    Read Permissions          - g:tutorial

  Permissions on Line TRUNK:
    Owner                     - g:tutorial
    Write Permissions         - g:tutorial
    Read Permissions          - g:tutorial

  Hooks:
    No Hooks defined.

Found 1 matching object(s).

The resources, properties, and permissions, of the source IPV  were copied over to our new IP. In addition Helix IPLM tracks the source of our branch (LIB.IP@2.TRUNK). It is possible to easily display the source of Lines either in PiCLI or in IPLM Web. The copy source can also be displayed by default or as part of a model specification via customizing the 'pi ip list' command. See Listing IPs in the Catalog and Client Configuration for details.