Populate a mainline stream

Now that you’ve created a stream, you can populate it with files. There are two ways to populate a mainline stream:

  • Add files from the local filesystem.
  • Branch files from another depot.

In this tutorial, we demonstrate populating by adding files. For information on populating by branching from another depot, see Branch from other depots.

To add files to the mainline stream, copy the files and folders to the workspace root directory and then mark them for add with the p4 add command.

  1. Copy the files and folders to the workspace root directory.

    In this example, we add all files residing in a directory named /Users/bruno/repository.

    On UNIX and macOS

    $ cp /Users/bruno/repository/* /Users/bruno/tutorial

    On Windows

    $ copy C:\Users\bruno\repository\* C:\Users\bruno\tutorial
  2. Change into the client workspace root directory.

    On UNIX and macOS

    $ cd /Users/bruno/tutorial

    On Windows

    $ cd C:\User\bruno\tutorial
  3. Mark the files for add.

    $ p4 add *

    This creates a default changelist, which you will use when you submit to the depot the file you added to your workspace. For more information on changelists, see Changelist-related tasks.

  4. Submit the added files.

    To populate the stream, submit the default changelist in which the files are open for add.

    $ p4 submit

    Helix Server opens the change specification in an editor:

# A Perforce Change Specification.
#
#  Change:      The change number. 'new' on a new changelist.
#  Date:        The date this specification was last modified.
#  Client:      The client on which the changelist was created.  Read-only.
#  User:        The user who created the changelist.
#  Status:      Either 'pending' or 'submitted'. Read-only.
#  Type:        Either 'public' or 'restricted'. Default is 'public'.
#  Description: Comments about the changelist.  Required.
#  ImportedBy:  The user who fetched or pushed this change to this server.
#  Identity:    Identifier for this change.
#  Jobs:        What opened jobs are to be closed by this changelist.
#               You may delete jobs from this list.  (New changelists only.)
#  Files:       What opened files from the default changelist are to be added
#               to this changelist.  You may delete files from this list.
#               (New changelists only.)

Change: new

Client: bruno_ws

User:   bruno

Status: new

Description:
        <enter description here>

Files:
        //JamCode/main/file1.cc        # add
        //JamCode/main/file1.h # add
        //JamCode/main/file1.txt       # add
        //JamCode/main/file2.cc        # add
        //JamCode/main/file2.h # add
        //JamCode/main/file2.txt       # add
        //JamCode/main/file3.cc        # add
        //JamCode/main/file3.h # add
        //JamCode/main/file3.txt       # add

Enter a description under Description and then save your changes, to store the files you added in the Helix Server depot. Something like the following output is displayed:

Change 1 created with 9 open file(s).
Submitting change 1.
Locking 9 files ...
add //JamCode/main/file1.cc#1
add //JamCode/main/file1.h#1
add //JamCode/main/file1.txt#1
add //JamCode/main/file2.cc#1
add //JamCode/main/file2.h#1
add //JamCode/main/file2.txt#1
add //JamCode/main/file3.cc#1
add //JamCode/main/file3.h#1
add //JamCode/main/file3.txt#1
Change 1 submitted.

The files you added are now stored in the Helix Server depot.