P4 Blog

  • December 12, 2014

    inception of dvcs

    Why create a new distributed version control system or DVCS? The development world already enjoys Bazaar, Mercurial (my personal favorite), and of course the 800-lb. gorilla in the DVCS room, Git. So why would Perforce set out to create a new DVCS in light of all those options? That’s probably the first question on some minds after the announcement at our MERGE 2014 conference in September. So this series of blog posts is written in the hope of making clear exactly why we’re building a new DVCS, what it will provide the market above and beyond existing products, and provide insight into the choices and challenges along the way.

    Posted In:
  • December 11, 2014

    git beyond the basics

    This is part 5 of a 6-part series on Git commands.

    A relatively little-known Git feature is its support for both client- and server-side hooks for automation. That may seem strange, for a fully distributed version control system with no proper sense of a privileged “server”, but it’s nevertheless possible to configure processes to run in the “server” sense as the result of a push. Working with hooks is a matter of writing scripts in the .git/hooks folder for a repository, so it’s straightforward for those accustomed to DevOps tasks. Client-side hooks are available for pre-commit, pre-rebase, post-checkout, and post-merge, etc. which provide a fair amount of flexibility. In contrast, server-side hooks are limited to pre- and post-receive as well as an update script that’s run once for each branch being updated. Consider the following example script:

    Posted In:
  • December 10, 2014

    version control migration

    This is part two in a series of blogs about migrating source code from one version control system (VCS) to another. Part one was about migrating code from Subversion to Mercurial, in case you missed it. This time we’re tackling something a little trickier: migrating from Visual SourceSafe (VSS) to Mercurial.

    The Mercurial site has a page that describes two possible approaches, and for whatever it’s worth I found the second more direct and easier than the first. The only real down side is that you need Visual SourceSafe set up and working, which I no longer had. So here’s the high-level view of the procedure:

    Posted In:
  • December 08, 2014

    So what is this NuGet thing anyway? Non-Microsoft developers can be forgiven for asking the question, but NuGet has become increasingly hard for Microsoft developers to ignore in the last few years. There aren’t many projects created in Visual Studio these days that don’t leverage one or more NuGet packages. As somebody soon giving a DevTalk on the subject of Controlling Component Chaos with NuGet and Versioning, trust me when I say that’s a good thing. I remember the pre-NuGet days all too well. I’d learn about some Great New Thing™ (GNT) that all the cool kids were using and positively cringe at the prospect of using it.

    DevTalk NuGet

  • December 04, 2014

    git beyond the basics

    This is part 4 of a 6-part series on Git commands.

    Git’s bundle and archive commands aren’t broadly known but can serve a variety of purposes. Both provide the means to output portions of a repository, the key distinction being what they include:

    Posted In:
  • December 01, 2014

    perforce products chinese japanese korean

    Like their competitors around the globe, most companies in Japan, Korea and China are under considerable pressure to release products faster and at high levels of quality. While the use of English language tools is tolerable for many developers in these countries, a localized user experience (UI, documentation and error messages) means faster, more productive and—let’s face it—happier contributors. Simply put, with localized products, users are unhindered from translating back-and-forth in their heads as they go.