Perforce Public Knowledge Base - Exporting a Helix Cloud Project to a standalone Helix Server (head revision content)
× PRODUCTS SOLUTIONS CUSTOMERS LEARN SUPPORT
Downloads Company Partners Careers Contact Free Trials
Menu Search
Perforce
Reset Search
 

 

Article

Exporting a Helix Cloud Project to a standalone Helix Server (head revision content)

« Go Back

Information

 
Problem

How do I migrate my Helix Cloud project to a standalone Helix Server?

Solution

Helix Cloud users install a standalone Helix Server and migrate content from the Helix Cloud project into the standalone Helix Server. For details on installation and configuration of a standalone Helix Server, see the following section of the Helix Versioning Engine Administrator Guide. The standalone Helix Server can be installed into an Amazon Web Services (AWS) hosted server if desired. The end result is a standalone Helix Server containing the Helix Cloud project content that can be used for continued development and collaboration on the project. 

Note, Helix Cloud servers are unicode enabled case-sensitive servers so the provisioned Helix Server should be configured with those same settings. 

The Helix Cloud project name dictates the stream depot and mainline stream names in a Helix Cloud server. In this example, the following names and settings apply:

    Helix Cloud project name: Development
    Helix Cloud stream depot name: Development
    Helix Cloud mainline stream name: //Development/main
    Helix Cloud P4PORT: ssl:Development.bruno.helix.perforce.com:1667
    Standalone Helix Server P4PORT: local.helix.server:1666

and will be used throughout the example commands provided below. 

Once your standalone Helix Server is configured and running, the following steps will export the head revision file content from the Helix Cloud project and import that content into the standalone Helix Server:

Against the standalone Helix Server

Create a stream depot and a mainline stream matching the names used in the Helix Cloud project:

$ p4 -p ssl:Development.bruno.helix.perforce.com:1667 depot -o Development | p4 -p local.helix.server:1666 depot -i

$ p4 -p ssl:Development.bruno.helix.perforce.com:1667 stream -o //Development/main | p4 -p local.helix.server:1666 stream -i

These two commands take the stream depot and mainline stream specifications from the Helix Cloud server and use them to create the same specifications in the standalone Helix server. 

Create a temporary client workspace to use for the import:

$ p4 -p local.helix.server:1666 client import
(set 'Root: /tmp/fromHelixCloud')

This command creates a client workspace in the standalone Helix server used to import the files once the content is retrieved from the Helix Cloud server. 


Against the Helix Cloud Server

Create a temporary client workspace to use for the export

$ p4 -p ssl:Development.bruno.helix.perforce.com:1667 client export
(set 'Root: /tmp/fromHelixCloud')

This command creates a client workspace in the Helix Cloud server used to sync the head revision content from the Helix Cloud server.

Sync the head revision content from the Helix Cloud server to the workspace:

$ mkdir /tmp/fromHelixCloud
$ cd /tmp/fromHelixCloud
    
/tmp/fromHelixCloud$ p4 -p ssl:Development.bruno.helix.perforce.com:1667 -c export client -f -s -S //Development/main
    
/tmp/fromHelixCloud$ p4 -p ssl:Development.bruno.helix.perforce.com:1667 -c export sync //...
//Development/main/A/sm_000000.bin#1 - added as /tmp/fromHelixCloud/A/sm_000000.bin
//Development/main/A/sm_000001.bin#1 - added as /tmp/fromHelixCloud/A/sm_000001.bin
//Development/main/B/sm_000000.bin#1 - added as /tmp/fromHelixCloud/B/sm_000000.bin
//Development/main/B/sm_000001.bin#1 - added as /tmp/fromHelixCloud/B/sm_000001.bin

Connect to the local Helix Server from the same workspace directory and add/submit the files:

/tmp/fromHelixCloud$ p4 -p local.helix.server:1666 -c import client -f -s -S //Development/main

/tmp/fromHelixCloud$ p4 -p local.helix.server:1666 -c import reconcile
//Development/main/A/sm_000000.bin#1 - opened for add
//Development/main/A/sm_000001.bin#1 - opened for add
//Development/main/B/sm_000000.bin#1 - opened for add
//Development/main/B/sm_000001.bin#1 - opened for add

/tmp/fromHelixCloud$ p4 -p local.helix.server:1666 -c import submit -d "Add Helix Cloud project content to Helix Server"
Submitting change 12106.
Locking 4 files ...
add //Development/main/A/sm_000000.bin#1
add //Development/main/A/sm_000001.bin#1
add //Development/main/B/sm_000000.bin#1
add //Development/main/B/sm_000001.bin#1
Change 12106 submitted.

If the Helix Cloud project contains multiple streams, repeat the steps after creating the new stream in the standalone Helix Server. For example, if the Helix Cloud project also contained a development stream:

$ p4 -p ssl:Development.bruno.helix.perforce.com:1667 stream -o //Development/dev | p4 -p local.helix.server:1666 stream -i

/tmp/fromHelixCloud$ p4 -p ssl:Development.bruno.helix.perforce.com:1667 -c export client -f -s -S //Development/dev
    
/tmp/fromHelixCloud$ p4 -p ssl:Development.bruno.helix.perforce.com:1667 -c export sync //...
//Development/dev/A/sm_000000.bin#1 - replacing /tmp/fromHelixCloud/A/sm_000000.bin
//Development/dev/A/sm_000001.bin#1 - replacing /tmp/fromHelixCloud/A/sm_000001.bin
//Development/dev/B/sm_000000.bin#1 - replacing /tmp/fromHelixCloud/B/sm_000000.bin
//Development/dev/B/sm_000001.bin#1 - replacing /tmp/fromHelixCloud/B/sm_000001.bin
    
/tmp/fromHelixCloud $ p4 -p local.helix.server:1666 -c import client -f -s -S //Development/dev 

/tmp/fromHelixCloud $ p4 -p local.helix.server:1666 -c import reconcile
//Development/dev/A/sm_000000.bin#1 - opened for add
//Development/dev/A/sm_000001.bin#1 - opened for add
//Development/dev/B/sm_000000.bin#1 - opened for add
//Development/dev/B/sm_000001.bin#1 - opened for add
 
/tmp/fromHelixCloud $ p4 -p local.helix.server:1666 -c import submit -d "Add Helix Cloud project content to Helix Server"
Submitting change 12107.
Locking 4 files ...
add //Development/dev/A/sm_000000.bin#1
add //Development/dev/A/sm_000001.bin#1
add //Development/dev/B/sm_000000.bin#1
add //Development/dev/B/sm_000001.bin#1
Change 12107 submitted.

Caveats:

  • Only head revision content is migrated from HelixCloud to the local Helix Server instance, not the full change/revision history
  • Only committed revisions are considered; any pending or shelved changes are not migrated. 
  • ​You can un-shelve changes from the Helix Cloud Server and re-shelve those changes into local Helix Server using the same temporary workspace method used above to migrate shelved changes if desired. 
Related Links

Feedback

 

Was this article helpful?


   

Feedback

Please tell us how we can make this article more useful.

Characters Remaining: 255