Helix Core is now P4. Product user interfaces will be updated soon. Learn more >>

P4 Server Administration Documentation | 2025.1

# Form-out triggers

Use the `form-out` trigger type to create triggers that fire whenever the P4 Server generates a form for display to the user.

Never use a P4 Server command in a `form-out` trigger that fires the same `form-out` trigger, or infinite recursion will result. For example, never run `p4 job -o` from within a `form-out` trigger script that fires on `job` forms.

Example:

The default Perforce client workspace view maps the entire depot `//depot/...` to the user’s client workspace. To prevent novice users from attempting to sync the entire depot, this Perl script changes a default workspace view of `//depot/...` in the p4 client form to map only the current release codeline of `//depot/releases/main/...`

Copy

    #!/usr/bin/perl
    # default_ws.pl - Customize the default client workspace view.
    $p4 = "p4 -p localhost:1666";
    $formname = $ARGV[0];  # from %formname% in trigger table
    $formfile = $ARGV[1];  # from %formfile% in trigger table
    # Default server-generated workspace view and modified view
    # (Note: this script assumes that //depot is the only depot defined)
    $defaultin = "\t//depot/... //$formname/...\n";
    $defaultout = "\t//depot/releases/main/... //$formname/...\n";
    # Check "p4 clients": if workspace exists, exit w/o changing view.
    # (This example is inefficient if there are millions of workspaces)
    open CLIENTS, "$p4 clients |" or die "Couldn't get workspace list";
    while ( <CLIENTS> )
    {
            if ( /^Client $formname .*/ ) { exit 0; }
    }
    # Build a modified workspace spec based on contents of %formfile%
    $modifiedform = "";
    open FORM, $formfile or die "Trigger couldn't read form tempfile";
    while ( <FORM> )
    {       ## Do the substitution as appropriate.
            if ( m:$defaultin: ) { $_ = "$defaultout"; }
            $modifiedform .= $_;
    }
    # Write the modified spec back to the %formfile%,
    open MODFORM, ">$formfile" or die "Couldn't write form tempfile";
    print MODFORM $modifiedform;
    exit 0;

This `form-out` trigger fires on `client` workspace forms only. To use the trigger, add the following line to the trigger table:

    sample7   form-out  client  "default_ws.pl %formname% %formfile%"

New users creating client workspaces are presented with your customized default view.

Your search for returned results