Perforce TeamHub HTTP

Prerequisites

The target repo must NOT already exist in P4 Server.

The source repo must not be empty.

Use a bot account instead of personal credentials. The two options are:

  • Use a regular bot, and give it access to relevant projects and repositories on the team view
  • Use a company admin bot account, which has access to every repository inside the company

For more information, see Bots & programmatic repository access in the Perforce TeamHub Documentation.

On the Git Connector server

  1. Log in as the git OS user or the user you specified when configuring the Git Connector.
  2. Configure the webhook for mirroring:

    Copy the URL from your project's HTTP drop-down box.

    1. Set the environment variable GCONN_CONFIG to the absolute path to the gconn.conf file:

      export GCONN_CONFIG=/opt/perforce/git-connector/gconn.conf

    2. Add the web hook:

      gconn --mirrorhooks add graphDepotName/repoName git@HelixTeamHubServer/companyName/projects/projectName/repositories/gitrepoName

      where access-token:secret represents your personal access token for GitHub or GitLab.

  3. Save the secret token that the --mirrorhooks command generates.

The secret token is also included in the repo spec on the P4 Server. To write the repo spec to standard output, run:

p4 repo -o {//graphDepotName/repoName}

Mirror a repo over HTTP

  1. Select Hooks, Add Hook, and select a repository from the drop-down.

  2. Select the service WebHook from the drop-down.
  3. Check the triggers that you want to launch a mirroring action.
  4. Under Hook attributes:
    1. Paste the URL of the Git Connector into the URL text box: https://GitConnector.com/mirrorhooks
    2. Select content-type of json (application/json) from the drop-down.
    3. Paste the mirrorhook secret token in the Secret text box.
    4. Check the Insecure ssl checkbox because no certificate is associated with the webhook.
  5. Click Save hook.

  6. Validate that mirroring is in place by running the following command on the Git Connector:

    gconn --mirrorhooks list

    This displays the repositories that are mirrored and the Git Host. For example:

    gconn --mirrorhooks list
    //hth/repoName <<< http://HelixTeamHub.com/hth/projects/projectName/repositories/git/repoName.git ... 
    //hth/repoName2 <<< http://HelixTeamHub.com/hth/projects/projectName/repositories/git/repoName2.git ... Not mirrored by this Gconn instance ( no mirror config )

Troubleshooting

If there are any issues, review the following files, or send them to Perforce Technical Support:

Perforce TeamHub log at /var/log/hth/resque/current

and from the Git Connector:

/opt/perforce/git-connector/repos/graphDepot/repoName.git/push_log
/opt/perforce/git-connector/repos/graphDepot/repoName.git/fetch_log
/opt/perforce/git-connector/repos/graphDepot/repoName.git/.mirror.log
/opt/perforce/git-connector/gconn.conf
/opt/perforce/git-connector/logs/gconn.log
/opt/perforce/git-connector/logs/p4gc.log