Friday, August 8, 2014

Perforce Checkout in Electric Commander

Electric Commander:

* ElectricCommander (Commander) is an enterprise-class solution for automating the software build and release process. 
* Commander helps teams make software build, package, test, and deployment tasks more repeatable, more visible, and more efficient. 
* At its core, Commander is a web-based system for automating and managing the build and release process. 
* It provides a scalable solution, solving some of the biggest challenges of managing these “back-end” software development tasks.

Electric Commander provides plugins to integrate/communicate with other tools. 


  


Electric Commander Integration to Perforce

        The plugin calls the Perforce's tool "p4" command line and passes in the user-provided parameters. With that information you will be able to to perform code checkout (sync in perforce), preflight actions and continuous integration.

         It includes a feature called "Smart Sync" not present in the native tool, which allows you to sync a client and workspace to a pristine condition without need to download all the changes every time. This can be very useful if you have a big code base.

          Using the plugin will allow you to have different repository configurations, use Electric Commander's Preflight capability, and schedule automated jobs through the CI Manager and Electric Sentry.

It provides: 
* Checkout 
* Preflight built 
* Continuous Integration 
* Electric Sentry
* Create SCM configuration


Here is the link for more details: Perforce-plugin



Tuesday, August 5, 2014

Perforce Commit and Edge servers


        Perforce has introduced a new Distributed Architecture, Commit and Edge servers to decrease the load on central server. Perforce already provides distributed environment with Proxy, Replicas (Readonly replica, Forward replica, Build farm replica). Edge server will an addition to these servers.

What is a Commit-server
       Perforce definition: A commit server stores the canonical archives and permanent metadata. In working terms, it is similar to a Perforce master server, but may not contain all workspace information. 
  • Present Master server will be converted into commit-server. 
  • Commit-server will store all versioned files and centralized metadata, but will not contain all the workspace's/clients information.  
  • The missing workspaces will be available in the edge servers. 
What is an Edge-server
         Perforce definition: An edge server contains a replicated copy of the commit server data and a unique, local copy of some workspace and work-in-progress information. It can process read-only operations and operations like p4 edit that only write to the local data. In working terms, it is somewhat similar to a forwarding replica, but contains local workspace data and can handle more operations with no reliance on the commit server. 
  • An edge server contains full metadata copy of commit-server and allows users to create workspaces on edge server; these workspaces are local to edge-server. These workspace information will not be available on commit-server. 
  • It can handle read-only commands. 
  • In my words it’s a combination of forward-replica and build-farm-replica, with more capabilities. 
Fig: Commit-server with two Edge-servers
Difference between Master server and Commit-server:

Master Server
Commit Server
A standard perforce server
A Master server converted to a hybrid mode to support new features of commit and edge server
Stores permanent Metadata and Versioned files
Stores permanent Metadata and Versioned files, but will not have information about workspaces created on edge-server.
Supports Proxy, Read-only replica, Forward replica and Build farm replica.
In Addition it supports Edge servers.

  • Perforce 2014.1 version fully supports Commit and Edge servers.
What is an Edge serve
Let’s take an example: 
  • MASTER is a standard perforce server with a FORWARD_REPLICA. 
  • In this scenario Forward replica will send all commands related to metadata, versioned change to MASTER server, but workspace Sync will happen from FORWARD_REPLICA. This is reducing the load on MASTER. 
  • All read-only commands are supported.
  • While creating a workspace on FORWARD_REPLICA, it will send the request to MASTER and once its created FORWARD_REPLICA will allow users to sync from FORWARD_REPLICA. 
  • While submitting a change, FORWARD_REPLICA will send the request to MASTER. MASTER decides on submit and updates FORWARD_REPLICA,FORWARD_REPLICA will update to user. 
  • FORWARD_REPLICA is depended on master for all operations. 
Now let’s replace FORWARD_REPLICA with EDGE_SERVER. 
  •  While creating an workspace, EDGE_SERVER will create a workspace and allow to sync files if and only if it’s a Valid user with Permissions to the depot path. This workspace will local to this EDGE_SERVER and this workspace information is not be available in MASTER_SERVER.
  • While submitting a Change EDGE_SERVER will lock the files on MASTER and allots a chnagelist number, transfers the files changes to MASTER and decides about the submit, EDGE_SERVER will then update the user. 
As a Centralized version control tool perforce Central server takes care of submits and file changes.
  • Edge servers will reduce most of the Central server load.  
  • Edge server will locally create and handles the databases: db.have, db.working, db.resolve,db.locks, db.revsh, db.workingx, db.resolvex . 
  • With the local databases Edge server will allow workspace creation, sync, locks,takes care of work in progress information.
  • Using and Edge server is more effective than a FORWARD_REPLICA.

More information Continues ....