I we have one perforce depot path where all projects are located. Actually i would like to know which project got added in last 24hrs. For that we have one file Say 'project.xml' which is common for all projects.
Is there any command to find newly added project.xml file in last 24hrs ?
Thanks!
Use a regular p4 files command with a filespec that matches your filename and a date range to specify the window you're interested in:
C:\Perforce\test>p4 files ...project.xml#2020/04/06,#now
//stream/main/dir/project.xml#1 - add change 151 (text)
Related
We have few files checked-in in perforce like **#sample.json. Such file names are not supported on Windows, so I get below exception in p4v perforce application when I take revision.
**sample.json: The filename, directory name, or volume label syntax is incorrect.
I do not want these files on my local box. How can I ignore such files in p4v ?
See the section on ASCII expansion in the doc on file specs:
https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html
You can use this syntax to exclude files with asterisks in their names from your client view:
//depot/... //client/...
-//depot/...%2A... //client/...%2A...
If you want to actually sync these files and substitute the invalid characters you can do that too. For example:
//depot/... //client/...
//depot/...%2A%2A... //client/...WTF-WHO-PUTS-A-DOUBLE-ASTERISK-IN-A-SAMPLE-FILENAME...
will cause a file called **sample.json to be synced to your workspace as WTF-WHO-PUTS-A-DOUBLE-ASTERISK-IN-A-SAMPLE-FILENAMEsample.json.
To ignore/disregard certain files and exclude them from your client workspace, put them into your client view with a '-' in front of them.
Something like:
View:
//depot/project/... //my/client/project/...
-//depot/**/*sample.json //my/client/**/*sample.json
If I issue
p4 sync ...
it only syncs the files in my CWD and below to HEAD.
However, I am trying to sync a single directory to a label name
p4 sync #LABEL_NAME ...
and the result seems to be that the entire workspace (all files tagged with that label) is then sync'ed to that label, as though I had not added the "...".
Is this expected? And if so, how do I achieve what I want?
The #LABEL_NAME is a "revision specification", while the ... is a file pattern; what you want to do is to combine them, and specify both (the files in this directory and any sub-directories, at the revision in which they were tagged in the label).
To do that, you stick the revision specification after the file pattern, with no spaces between them:
p4 sync ...#LABEL_NAME
For more information about the things you can stick after the file pattern to refine your set of files, run:
p4 help revisions
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.
I have a file of name: test.c in perforce, but i want it as Test.c (capital T).
I tried rename, delete and then add but both methods are not useful! The file gets update in my machine, but when some one else accesses it, the file remains, test.c itself, not Test.c!
What can i do in this case?
And i have many files of same name inside the directory in perforce, i want to rename them all.
Ex:
dir1->test.c , dir2
dir2 ->test.c , dir3
dir3->test.c
This should become:
dir1->Test.c , dir2
dir2 ->Test.c , dir3
dir3->Test.c
If the file name appears correct when looking at the tree in P4V, but is the wrong case on the client machine, try removing the file from the workspace and then resyncing. Windows won't rename the file if it's already on disk because it's a case insensitive file system.
This is a longstanding bug with Perforce/Helix that they have consistently refused to fix for over 14 years.
The Helix knowledgebase workaround does NOT work, don't waste your time.
The closest I've found to a solution is the following:
Rename the file to an interim string that you will never use in the future and have never used before - eg add a UUID postfix
Commit this change
Copy up to the highest applicable parent stream
Merge down into ALL streams that will ever need the change and have the original erroneous name. You can filter the merge down to just the rename/move operation.
Get Latest on ALL Windows workspaces for the affected streams
Rename the file to the final case-sensitive string
Commit this change
Copy up as per step 3
Merge down as per step 4
Important: You MUST copy up and merge down while the file has the temporary name.
Perforce does not take interim changes into account when merging down or copying up - this is different to every other source control system that I'm aware of and caused much heartache.
Note: While file history across the rename is apparently preserved in the database, it appears that you can only see that the rename occurred and cannot diff or merge across the change.
I'm trying to use p4 sync to sync a specific directory to a given changelist number using wildcards but I also want to exclude a list of files that are under that directory (in subdirectories), I tried using - (both before and after using a path with wildcards) but the file never gets excluded, this the command I'm trying:
p4 sync //Repo/Foo/... -//Repo/Foo/Bar/Foobar.txt
The file exclusion seems to only work when the files/directories you are syncing don't match the files you're trying to exclude.
In your client, you would have multiple lines:
//Repo/Foo/... //my_client/Repo/Foo/...
-//Repo/Foo/subdirectory/... //my_client/Repo/Foo/subdirectory/...
This would allow you to get everything in the Foo directory and all subdirectories except "subdirectory".
You can do this if you use a label. Create a label in your favorite editor (p4v or command line p4 label and add your two lines:
//Repo/Foo/...
-//Repo/Foo/Bar/Foobar.txt
In the revision field put "#head" (including quotes!) if you want the latest or a change list number. Give the label a name - for instance "sync_butnot_foobar"
On the command line you can now sync:
p4 sync #sync_butnot_foobar,#sync_butnot_foobar
This has a huge benefit over the modify your client spec and sync head model. If you exclude a file in your client spec, the next time you sync that file will be brought to revision 0 which probably isn't what you wanted.
In short, you can't exclude files on a sync. That can only be done within the client spec. (Well, it could be done through the protections table, but that is really a different matter I think).
But if you want to sync a specific folder and only the files in that folder, use *
p4 sync //Repo/Foo/*
will get you only the files in the Foo folder.