1

We are in the process of converting from svn to perforce but have some issues to resolve, relating to our current workflow.

At the moment a project release consists of a Source/ directory which comprises both local source files and a list of svn:externals to unit tested sub modules, which are signed off and tagged independently of the main project code.

The advantage of this is strict version control of the sub modules, whereby we only import new tagged externals when they are considered ready. Also, as soon as a new module version is imported, the change to the svn:external means it is pushed out to the project team as soon as they 'svn up'.

It is my understanding that Perforce does not have anything equivalent. I am aware of the labels feature and of streams but can't see any way to maintain a central client spec which is pushed out in the same way as svn:externals.

Has anyone else come across this? It seems right now that we are going to have to change a well proven work flow rather significantly in order to swap from svn to Perforce, which is disappointing.

Sourmix
  • 21
  • 1

1 Answers1

0

Streams essentially function as the central client specs you're talking about -- when a user creates a client spec that is based on a stream, the mapping is generated automatically based on the stream template, and everyone's client spec is dynamically updated when the stream template is updated. Your modules could be "import" paths in a stream with an @change specifier that is updated as tests pass, for example, and users would automatically see the newer changes as the stream specification was updated.

The "pushes" could also be accomplished via branching, with or without streams -- the branch mapped by the users is defined to only include the "ready" version of the module, with development happening in a different mainline branch. When a new version of the code is ready, it's copied into the "ready" branch. Users don't need to update their client specs because the paths haven't changed; they just sync and they get whatever was copied in.

Samwise
  • 68,105
  • 3
  • 30
  • 44