submit moving files in Perforce - perforce

I want to move files from one directory to another. I opened them and moved. now I want to submit the moving, but I have more files opened in perforce, that I don't want to submit.
How can I submit only two directories, and not all the opened files?
(I'm using the shell and not the gui)
I tried to submit one directory and after the other, but it was unsuccessful because it's moving files and needs the source and the destination in the same change list.

Run p4 change and edit the Files field of the changelist form to list only the files that you want to include in the new changelist. Now your files are split between two changelists and submitting one will not affect the other.

Related

How can I move a folder to another changelist using P4V?

I have accidentally added a few folders to my default changelist that I don't want to submit to the server. How can I move these changes to another changelist, or remove them from the changelist without affecting the files on disk?
I have created a new changelist and moved some individual files / changes to this list but the folder contains many autogenerated files and this will take too long to do file by file.
I also looked at using the "revert" option but I think some of these files may have been previously added to the server in error. Reverting seems like it will change these files on disk to the previous server version.
You can specify the folder path in "Find File".
And use "*" to match all files in the contains filed.
Now you can select all the files in your folder by using "Ctrl+A"
From P4V you can multi-select the files in the pending changes window and then drag them into a new changelist. If they're all in the same directory they'll all be grouped together since it's sorted by depot path.
If you just want to have them not be open but also not modify them on disk, go to the command line and do:
p4 revert -k //depot/path/...
The -k option lets you keep your local files. This isn't available from P4V as far as I know (since it leaves your workspace out of sync with the depot state, it's usually a bad idea).
If you have generated files in your workspace that aren't supposed to go into the depot, you should exclude them from your client's View, e.g.:
View:
//depot/... //myclient/...
-//depot/path_to_generated_files/... //myclient/path_to_generated_files/...
This will essentially "hide" these files from all Perforce operations; you will never be able to add files from this workspace path, and if somebody else adds files to that depot path, you won't sync them down to your workspace. Two notes on this:
If you already have some of these files in the depot and they're currently synced, excluding them from your view and then syncing your client will remove them from your client. You can use sync -k, much like revert -k, to keep your local copies while telling the server that your client is properly up to date.
If you're using streams, you can do this for ALL clients of the stream by adding an Ignored path.

How can you save and restore a list of checked out files in Perforce?

I have, in perforce, a sort of 'basic working set' of files that I keep checked out (and therefore writable) when working. However, every time I commit my changes, this list gets disrupted - some things committed, others reverted - and then I have to waste time tracking down and checking out all these files again.
So, is there some way to save the list of currently checked out files, and then later check out those same files again?
I primarily use P4V, but I have P4Win and command-line Perforce available. I'd strongly prefer a GUI solution, though.
I only want to save and restore the state of which files are checked out, not the contents of those files, so shelving is not the answer
I am aware of the 'Do not submit unchanged' and 'Check out after submit' options. They are not sufficient. For instance, frequently I will have files which are programmatically generated which register as 'changed' when the only thing that is different is the 'File generated on' timestamp; I need to prevent such spurious revisions from being submitted, and I have not found any practical method of searching for and managing such files that doesn't involve the 'revert if unchanged' command.
You can do:
p4 -ztag opened | grep depotFile | cut -d ' ' -f 3 > files.txt
to save a list of files already open in your client. (If you don't have Unix utilities for Windows, you could construct this list by whatever means you want, such as running p4 opened > files.txt and manually editing files.txt in an editor.)
Once you have a list of files, you can open all of them via:
p4 -x files.txt edit
This doesn't meet your preference for a GUI-based solution, but you could create .cmd scripts to perform these actions and then double-click on them (or on shortcuts to them).
The easiest solution would be to exclude those generated files via your workspace specification, e.g., "-//depot/files/ignorablefile.sh"
They can still reside in your local workspace, but the app will not attempt to update them or add them to source control.
You said that shelving's not the answer, but that's what I would go with as the easiest solution (i.e. the one that involves the least scripting and/or fewest manual steps) for the specific question you're asking:
Shelve your pending change (let's call this change 1000).
Move your open files to a new pending change (let's call this change 1001).
Submit change 1001.
Unshelve change 1000.
Sync and resolve.
Now you have the same exact files open (the unshelve opened them) but at the head revision (the sync and resolve does that).
Now, looking past what you asked for to what might make your life easier: rather than reverting the files you don't want to submit (and having some sort of scheme to get them back later, possibly via shelving as described above), what I'd do is move them to another changelist. So instead of:
Identify "unchanged" files.
Revert unchanged files.
Submit remaining files with "reopen" option.
Reopen previously reverted files (somehow).
I'd do:
Identify "unchanged" files.
Move unchanged files to another changelist N.
Submit remaining files with "reopen" option.
Move all files from changelist N back to the default changelist.
All of those except step 1 are simple one-shot commands that you can do from any client. Personally, I'd automate steps 1+2 with a script (I'm assuming it's programmatically possible to determine whether the only diff in one of these files is the timestamp) and put it into P4Win/P4V as a "custom tool".

Cannot mark for Add files in perforce

I wrote 2 python scripts which I want to add to changelist in perforce. So in my workspace (in perforce gui) I created a folder /pythonP and using my unix file manager I copied paste my 2 python scripts in /pythonP, which is in my workspace (not in depot because I just created and didn't submit anything) So in perforce I can see in my workspace my 2 python scripts, but when I try to put them in a changelist (drag and drop or right-click:add to mark) I get no error messages but the files just don't appear in the changelist. I right-clicked on the changelist and the 'Files' section is empty. Any suggestions?!
The "File(s) not in client view" error indicates that the folder the files you're trying to add are in, is not part of your mapped workspace. Either you don't have anything mapped in your workspace view, or the place your files are, is not the place Perforce is controlling.
One thing you can do is to right-click on the depot directory in the depot view, and select "show in explorer". The folder that opens is where Perforce expects your files to be.
I should explain: A Perforce repository is not like an FTP site, where you copy files from the local place to the remote place. To add a file to Perforce, you put it where you want it to be in your local copy of the depot, and then tell Perforce to start tracking it (with p4 add). The addition does not move or copy the file. (Of course, the file content does get copied to the Perforce server... but logically, you're putting the file in your workspace, not having Perforce do that for you.)
Try updating your workspace. I had this problem when someone else had added a file, my workspace was out of date, and I was trying to add a file with the same name in the same location.
I had same problem right now and I not found solution. It was depot folder where project files shold be. After added to workspace 'depot' folder and move project files inside, add and submiting works.

How to remove files from changelist in perforce without losing modifications?

I accidentally created a new changelist with files from WORKSPACE not from DEPOT and now under the changelist 4500 modified files are displayed (all dlls pdbs etc. alongside with the files i actually edited)
I'm using the p4v GUI. Is there anyway to undo this, without having to backup all the files then revert them using perforce, put them back and create a new changelist using DEPOT.
Thanks a lot, i hope there's a workaround :).
Not sure if this is what you're looking for, but to remove checked out files from your changelist without removing the edits:
p4 revert -k -c changelist# //...
If you haven't submitted the changelist, and all of the files are marked with '+' in the changelist in the Pending tab, you can click 'Revert' on the changelist. As long as the files were marked for add ('+') they'll be left intact in your workspace.
There's multiple ways.
Select View->Pending Changelists from the menu bar to view your pending changelist tab. You should see all of your checked out files grouped by changelist. Go to your desired changelist and expand into files.
You can Ctrl+left-click multiple files, then right-click on one of them and select Move to another changelist....
You can also choose to Submit... the files, and when the dialog box appears, their will be checkboxes next to each file. Uncheck the files you do not want to submit.
As another answerer mentioned, if you accidentally added files to Perforce that you did not intend to, you can indeed revert those files without actually deleting them (the only time a file will actually go away is when you do a p4 delete or p4 move.)
I encountered a similar issue, the solution i used is as follows:
1. Navigate to the workspace using p4v
2. Right click on one of the folders or files and click "Open Command window here"
3. run the following command to review dll or pdb respectively
p4 revert //....dll
p4 revert //....pdb
Thanks,
Lyon
If you right click on a pending changelist in p4v you should have the option to Revert unchanged files, which does exactly what it says on the tin.

In Perforce P4V, how to I search for changelists with files in particular folders?

In Perforce P4V, I'd like to do a search for all changelists that have files from a particular set of folders, that all have "index" in the folder name, and also have another folder at the beginning. For instance, I want to see all changelists against any files in folders like these:
\depot\abc\def\table\index*.*
\depot\abc\ghi\table\index*.*
so basically any folders that match the pattern
\depot\abc\...\table\index*.*
But this doesn't appear to work. Any ideas? Also is there any detailed information on using perforce wildcards online? I was not able to find a whole lot. This must be something that lots of people need to do...
I use both P4V on Windows and I use the 'p4' command line client on Linux. What you're asking for actually uses two Perforce client commands:
p4 changes
p4 describe
On P4V specifically, this is done under the menu option View->Submitted Changelists (Ctrl+2). This should open a tab for searching. In the Folder/file input field, type a path expression, like this:
//depot/main/app/python/SiteControl/.../*.html
When I run this against my depot, I get a list of changelists. When I click on a changelist, it expands to a list of files. The files matching the pattern *.html are in normal font weight/color, and the non-matching files are "greyed out". Does that make sense?
Similarly, and more specific to your question/usage, you can use a wildcard to say "all files with index at the beginning of their name", as so:
//depot/main/app/python/SiteControl/.../index.*
Now just to compare, run it again but remove the "/index.*" from the path expression. Now what you'll see are all of the submitted changelists under the depot path - not just the ones that contain html files. Additionally, all files will appear in normal font weight/color.
HTH,
-aj

Resources