Perforce Utilities


Here are some tools I've written, in the hope they will be useful to others. You them at your own risk.

Scripts

Back to Table of Contents

p4abuse.pl p4abuse.pl is a small perl script designed to help a system administrator detect abuses of a Perforce system. Currently, it will highlight two common errors: using a client from multiple hosts, and use of a client by multiple users.
rename_depot.pl rename_depot.pl allows a sysadmin to rename a Perforce depot whilst preserving the entire history of the depot. It does this by editing a checkpoint file, so the user must checkpoint their database first, and then recover from the edited checkpoint at the end. ALWAYS ensure that appropriate backups are taken before using this script.
specsaver.rb specsaver.rb versions all client/label/branch specs along with global data like typemaps, protections and jobspec. It requires P4Ruby but is much more efficient as a result. You can read the docs here. Note that with the advent of spec depots, specsaver.rb is largely redundant.
d2u.cc A small C++ program based on the Perforce API which converts line endings from DOS (\r\n) format to Unix (\n) format. It simply reads from stdin and writes to stdout. The 'standard' utility called 'dos2unix' isn't good enough as it performs additional translations which mess up the result. For example octal literals in the input undergo character set conversion, and bare \r's are also converted to \n. Neither of these are t helpful when migrating Perforce servers. d2u only converts \r\n to \n.
convarchives.rb A Ruby script to help customers migrating their Perforce Servers from Windows to Unix/Linux. Converts the line endings in the *,v files from DOS to Unix format using d2u (above), and converts all file and directory names to lower-case as it goes. It works by copying the archives from a source path, to a destination path, and can do incremental migrations in this way. Also it's multi-processed so it will perform well on large data-sets.

Modules

Back to Table of Contents