Revert File not in a workspace in perforce - perforce

I am trying to delete an old user from our perforce installation. A previous admin had deleted all their active workspaces / clients so we should be able to now delete the user, however when i run
p4 user -f -d auser
User auser has file(s) open on 1 client(s) and can't be deleted.
However auser no longer has any associated clients, and if I filter the pending changelist view in P4V it shows the user as having one file checked out in the default changelist but no client is specified. Even if I log in as the user I dont seem to be able to revert or do anything with the file. Any hints how I might solve this?

While both of these commands returned nothing:
$ p4 clients -u <USER>
$ p4 changes -s pending -u <USER>
This command showed me which file was open:
$ p4 opened -u <USER>
//depot/path/to/file#1 - edit default change (text) by <USER>#<CLIENT>
This command doesn't work:
$ p4 -u <USER> -H <CLIENT> revert -k //depot/path/to/file
//depot/path/to/file#1 - belongs to user <USER>, not reverted
Deleting the client does:
$ p4 client -o <CLIENT> > <CLIENT>.txt
$ p4 client -d -f <CLIENT>
$ p4 opened -u <USER>
File(s) not opened anywhere.
FTW! \o/
If you need to, you can then recreate the client with:
$ p4 client
Then read in the <CLIENT>.txt file you created with the output of p4 client -o <CLIENT> and save it.
More here:
http://answers.perforce.com/articles/KB_Article/Reverting-Another-User-s-Files

Solved.
A bit weird but this is what I did. I got the details of the default changelist that contained the file. It had the workspace name which was the name of a machine. I logged into the machine and then into perforce as the user. At this point I could see the pending changelist and revert the file. Now I can delete the user.
How did this happen?
I think what must of happened was a confusion of clients. A while back I changed the owner of quite a few clients on that machine (its the build server) and some of these clients must have had open files for the old user. This is the only explanation I can come up with.

Related

Perforce: deleting a p4 client with an empty changelist

Is it okay to delete a P4 workspace containing an empty changelist?
In other words, is the changelist get deleted from the server as well?
Try it out:
C:\Perforce\test>p4 -c subressors-computer change
Change 164 created.
C:\Perforce\test>p4 client -d subressors-computer
Client 'subressors-computer' has pending changes. To delete the client, delete any pending changes first. An administrator may specify -f to force the delete of another user's client.
C:\Perforce\test>p4 client -d -f subressors-computer
Client subressors-computer deleted.
C:\Perforce\test>p4 describe 164
164 - no such changelist.
You need admin permission to be able to use the -f flag. If you aren't an admin, you'll need to delete your changelists yourself before deleting your client. This is easy to script:
p4 -Ztag -F "change -d %change%" changes -s pending --me | p4 -x - run

Get all changes with filenames for a particular user

Is it possible to get the filename for all changelists for a particular user. Right now I can only get the list of changes from a particular user
p4 changes -s submitted -u UserX
I know it is possible to do it using p4 describe, however how do I make it work on all the files by a particular User
p4 -Ztag -F #=%change% changes -s submitted -u UserX | p4 -x - files

Perforce revert operation gives client unknown. Create it with p4 client command

I have already created a perforce client with command:
p4 client -o -e <my_clientname>
and it gave a message created with the required user.
but while using this clientname for revert operation with command
p4 -c <my_clientname> revert <perforce_path...>
it gives me an error "Client <my_clientname> unknown - use 'client' command to create it."
Additional Info: I am working on a jenkins setup with Perforce plugin.
p4 client -o does not create your client; it simply prints out to stdout the form specification that you could have used to create your client.
To create your client, do:
`p4 client -o <my-client-name> | p4 client -i`
By the way, in your question, you wrote that you also passed the -e flag. I don't believe there is a -e flag to p4 client.

How to delete a pending changelist in Perforce from an old workspace and offline machine (by admin access)

Note: I want to delete the changelist only not the client.
The answers in the following link doesn't work when the pending changelist is from an old workspace which is in an offline machine Perforce: How can I delete a changelist that p4v refuses to delete?
Tried the following command p4 -u <user> -c <client> -H <host> revert -k <file(s)>
But I'm not allowed to do as the workspace owner is different.
First get the USER and CLIENT:
p4 describe CHANGE
With a 2015.1+ server at this point you can just do:
p4 revert -c CHANGE -C CLIENT //...
p4 change -df CHANGE
With an older server it's a few more steps.
First get the HOST so you can bypass the hostname check:
p4 client -o CLIENT
Now login, revert the files, and delete the change:
p4 login USER
p4 -u USER -c CLIENT -H HOST revert -k -c CHANGE //...
p4 change -df CHANGE

p4 client returns with credential mismatch error

When I use p4 client I get a "credential mismatch" error:
~$ p4 client
credential mismatch: P4USER specified abadescu, p4filter command line specified idror
Partner exited unexpectedly.
Perforce client error:
Partner exited unexpectedly.
~$ echo $P4USER
~$ P4USER=idror p4 client
credential mismatch: P4USER specified abadescu, p4filter command line specified idror
Partner exited unexpectedly.
Perforce client error:
Partner exited unexpectedly.
using p4 -u idror client does open the editor, but after I save the modifications don't seem to affect p4 sync or p4 -u idror sync
That "credential mismatch" message is not a Perforce message, but rather is coming from some locally-customized configuration at your site.
Perhaps you have a trigger, for example a 'form-out' trigger.
Your trigger might use a locally-developed program named 'p4filter'.
Or perhaps you have a client-side wrapper for the 'p4' command, which might use a locally-developed client-side program named 'p4filter'.
You should ask the Perforce administrator at your site for help with resolving this.
You need to remove temporary the P4CONFIG from environment variables.
And most of all you need to have loaded ssh-agent that has key for user abadescu. If you don't use ssh keys to authenticate remove them from chain
So:
$ export -n P4CONFIG
$ ssh-add -D # if needed
And then set client, user, port in the p4 command like:
$ p4 -c client_name -u abadescu -p port_string_here

Resources