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

P4 Server Administration Documentation | 2025.2

# Push-commit triggers

Use the `push-commit` trigger type to create triggers that fire after changelist creation, file transfer, and changelist commission to the database. Use push-commit triggers for processes that assume (or require) the successful push of a changelist.

Example:

Following is a push-commit trigger that sends emails to other users who have files open in the pushed changelist.

Copy

    #!/bin/sh
    # mailopens.sh - Notify users when open files are updated
    changelist=$1
    workspace=$2
    user=$3
    p4 fstat @$changelist,@$changelist | while read line
    do
      # Parse out the name/value pair.
      name='echo $line | sed 's/[\. ]\+\([^ ]\+\) .\+/\1/''
      value='echo $line | sed 's/[\. ]\+[^ ]\+ \(.\+\)/\1/''
      if [ "$name" = "depotFile" ]
      then
        # Line is "... depotFile &lt;depotFile&gt;". Parse to get depotFile.
        depotfile=$value
      elif [ "'echo $name | cut -b-9'" = "otherOpen" -a \
        "$name" != "otherOpen" ]
      then
        # Line is "... ... otherOpen[0-9]+ &lt;otherUser@otherWorkspace&gt;".
        # Parse to get otherUser and otherWorkspace.
        otheruser='echo $value | sed 's/\(.\+\)@.\+/\1/''
        otherworkspace='echo $value | sed 's/.\+@\(.\+\)/\1/''
        # Get email address of the other user from p4 user -o.
        othermail='p4 user -o $otheruser | grep Email: \
          | grep -v \# | cut -b8-'

        # Mail other user that a file they have open has been updated
        mail -s "$depotfile was just submitted" $othermail &lt;&lt;EOM
    The Perforce file: $depotfile
    was just pushed in changelist $changelist by Perforce user $user
    from the $workspace workspace.  You have been sent this message
    because you have this file open in the $otherworkspace workspace.
    EOM
      fi
    done
    exit 0Fo

To use the trigger, add the following line to your triggers table:

    sample3  push-commit //... "mailopens.sh %change% %client% %user%"

Whenever a user pushes a changelist, any users with open files affected by that changelist receive an email notification.

The section Triggering before or after commands describes some additional options you have for triggers with push and fetch actions.

Your search for returned results