Overall Satisfaction with Perforce
Perforce is the source control management system of choice for our entire organization. We use it to safely version content of all kinds; code, scripts, art, and documentation. It is shared globally across our organization and accessible externally to our product licensees. It has been used for every product we've shipped as well as all our active projects. We make use of all the major features like branching and shelving as well as p4web.
- Perforce handles code exceptionally fast and provides a deep toolset. The ability to quickly see differences via the revision history, revision graph, and time lapse view are invaluable for tracing differences over time and across branches/integrations.
- Perforce does a decent job of maintaining our security policies across different areas of code. We can block access to various branches and directory structures using the various administration tools available. This ensures the right people have the right access at the right time. We can also temporarily disable check in access and lock down a source tree when necessary.
- The P4 client, P4V, is a clean and intuitive tool. There are multiple ways of viewing the depot with powerful search commands and easy access to the more advanced P4 concepts all from within the GUI. Shelving, merging, integrating, and syncing are all easy to do.
- P4V, in the interest of stability, seems to have taken a few steps back in its ability to perform asynchronous operations. Once upon a time I was able to sync and perform resolves on code at the same time and now it seems to wait for all operations and does everything much more serially.
- P4VS, the integration with Microsoft Visual Studio, is still fairly new to the product suite. We have very complicated VS projects and it can take some time for P4VS to sync its status with the P4 server. Additionally, there are still a few rough edges in its features, such as the limited history dialog and some crash/instability issues when an automated checkout of file about to be edited doesn't get a response from the server quickly. It is still good to see that they wrote their own tool rather than stick with the antiquated SCC APIs offered by Microsoft.
- If I was being nit picky, I would say it would be nice for P4 to consider integrating more "content" versioning tools for various binary formats. There is plenty "non text" content to be version controlled, and to be able to diff versions right inside P4 would be invaluable.
- Working across multiple workspaces on the same machine can sometimes be difficult when various P4 products are used at the same time (say P4VS, P4V, P4EXP). It would be nice if workspace switching, the P4 env variables, and the various P4.ini settings were easier to reconcile and visualize from within the various client tools.
- Some really advanced/complicated client specs (using ... and * for example) can slow down integrating and other P4V operations.
- While I haven't experienced this directly, it is my understanding that syncing large data across large distances can be slow and that the various proxy tools could use improvement. I do know that various switches/options have been exposed to make various tasks require less data transfer to the client to improve this.
- Perforce helps our licensees and development teams get access to our code base anywhere in the world.
- Our developers have never had to worry about the reliability of our source depot and know that if its checked in, the data is safe.
While I'm not well versed in some of the new version control paradigms (like Git), I find that Perforce and its entire product suite have stood the test of time and continues to be a sound choice in source control management. It is great at code versioning and I haven't found a scenario where it didn't work well. Check ins, shelving, diffing, revision history, and branching all work exactly as needed when working on a product through all phases of development. Integration with Visual Studio is good and for the most part non intrusive. We have a very large code base that puts Perforce through its paces and it performs admirably.
300 - All business functions use it in one form or another. Artists, Designers, Programmers all use it. Some documentation is stored there as well for various business functions.
We are fully committed to our use of Perforce. It works well within our organization and our desire to share our code base with our customers. Their support staff are responsive, inquisitive, and eager to improve their software. I feel like we have a direct line to their design/feature team as they often solicit our feedback.
In our large environment, Perforce is rarely "down". We have regular maintenance windows and from time to time Perforce can feel a little slow, but its always available. Tech support has always worked with our engineers and IT department to make sure that any real performance or stability issues are addressed quickly.