perforce

How can I disable Perforce aliases?


I have some scripts that invoke p4 commands. Since I want well-defined, predictable behavior, I do not want my script to invoke any aliases. That is, if my script invokes p4 FOO, it should not invoke p4 BAR, p4 FOO -x, etc.

What is the proper way to disable aliases?

p4 help aliases indicates that a P4ALIASES environment variable can be used to override the .p4aliases/p4aliases.txt file. However, on my Linux system, P4ALIASES= p4 COMMAND seems to have no effect; p4 (P4/LINUX26X86_64/2022.2/2407422) seems to treat an empty P4ALIASES value to mean that it should continue using the default alias file. Setting P4ALIASES=/dev/null does seem to work to disable aliases, though.

I also noticed that some of the online documentation mentions a p4 --aliases=dry-run option. The --aliases option is not mentioned in p4 help usage nor in p4 help undoc, so I don't know what arguments it accepts. p4 --aliases=none does seem to work to disable aliases (and p4 --aliases=some_garbage_value doesn't), but it'd be nice if there were something more official to confirm that that's the correct approach.


Solution

  • The source code is about as official an answer as you're likely to get:

    https://workshop.perforce.com/files/guest/perforce_software/p4/2018-2/client/clientaliases.cc#148-150

        const StrPtr *aliasHandling = opts[ Options::Aliases ];
        if( aliasHandling && !strncmp( aliasHandling->Text(), "no", 2 ) )
            hasAliasesDisabled = 1;
    

    So --aliases=none will indeed work to disable aliases, as will --aliases=nope or --aliases=nobbled. :)