Unity & P4Connect - version-control

I just set up a Perforce server for my company where I'm going to store some depots for our Unity projects. I'm using the P4Connect plugin to integrate p4 functionalities in Unity.
However I'm experiencing some problems in the submission phase of my files, the exact error shown on a popup is:
"Cannot submit files... Submit failed4, open P4V and make sure your files are in the default change list"
The files are actually already in the default change list, unfortunately P4Connect log files don't show anything regarding this error.
These are the steps I made from the creation of the depot to the submission attempt.
I create a local depot on the server using P4Admin
I make sure I have enough privileges to access/edit the depot
Using P4V I create a new workspace with its root matching the one of the depot
Through window explorer I copy my project inside the root of the workspace
I open with Unity the project in the workspace
In project settings I enable visible metafiles
I install P4Connect from the unity asset store
I configure it and make sure it can connect to the server and that the workspace name matches the one I created using P4V
Until now everything works, the plugin recognizes the new files
Since every file is new I select every file and click on "add to depot"
In the Perforce tab I enter a description and click on submit
The error previously described shows up
The problem arises even if I try to add a single file instead of the whole project.
here is the callstack of an exception that is thrown:
NullReferenceException: Object reference not set to an instance of an object
Perforce.P4.FileMetaData.op_Implicit (Perforce.P4.FileMetaData s) (at c:/tmp/53044412/depot/main/p4-connect/src/P4Bridge/p4api.net/FileMetaData.cs:866)
Perforce.P4.Changelist.ToString () (at c:/tmp/53044412/depot/main/p4-connect/src/P4Bridge/p4api.net/Changelist.cs:584)
Perforce.P4.Repository.SaveChangelist (Perforce.P4.Changelist change, Perforce.P4.Options options) (at c:/tmp/53044412/depot/main/p4-connect/src/P4Bridge/p4api.net/Repository.Changelist.cs:54)
Perforce.P4.Repository.CreateChangelist (Perforce.P4.Changelist change, Perforce.P4.Options options) (at c:/tmp/53044412/depot/main/p4-connect/src/P4Bridge/p4api.net/Repository.Changelist.cs:331)
Perforce.P4.Repository.CreateChangelist (Perforce.P4.Changelist change) (at c:/tmp/53044412/depot/main/p4-connect/src/P4Bridge/p4api.net/Repository.Changelist.cs:435)
P4Connect.Engine.SubmitFiles (P4Connect.PerforceConnection aConnection, System.String aChangeListDescription, System.Collections.Generic.List`1 aFiles) (at c:/tmp/53044412/depot/main/p4-connect/src/P4Connect/P4Connect/P4Connect.Engine.cs:818)
UnityEngine.Debug:LogException(Exception)
P4Connect.Engine:SubmitFiles(PerforceConnection, String, List`1) (at c:/tmp/53044412/depot/main/p4-connect/src/P4Connect/P4Connect/P4Connect.Engine.cs:825)
P4Connect.<>c__DisplayClassa:<SubmitFiles>b__8(PerforceConnection) (at c:/tmp/53044412/depot/main/p4-connect/src/P4Connect/P4Connect/P4Connect.PendingChanges.cs:917)
P4Connect.Engine:PerformConnectionOperation(Action`1) (at c:/tmp/53044412/depot/main/p4-connect/src/P4Connect/P4Connect/P4Connect.Engine.cs:753)
P4Connect.PendingChanges:SubmitFiles() (at c:/tmp/53044412/depot/main/p4-connect/src/P4Connect/P4Connect/P4Connect.PendingChanges.cs:917)
P4Connect.PendingChanges:OnGUI() (at c:/tmp/53044412/depot/main/p4-connect/src/P4Connect/P4Connect/P4Connect.PendingChanges.cs:744)
UnityEditor.DockArea:OnGUI()
If I use P4V to submit those files everything works fine, however I prefer to avoid using P4V since it's not integrated with Unity and makes the whole thing more complex to manage.
Am I doing something wrong or does anyone had similar problems and knows how to fix this?
I'm using Unity 5.1.1f1 and P4Connect 2.7 (actually the latest versions for both).
Thanks

Related

Checked out clearcase file but can't check in

Using RAD 8.5/ClearCase 7.x, I checked out many files. I made my changes and was able to check many of the files back in (using the GUI RAD interface). However I'm unable to check in many other files by right-clicking on them in Eclipse. When I do right-click on them, the check-in & out options are disabled but the 'Add to source control' is enabled - RAD/CC react like these files are not in source control, but they've been controlled for many years. I am able to do a 'Find checkouts' (using RAD) and it lists those files. If I start up CC Explorer and check those files in my view, they show as 'View-private file'.
I've tried deleting one of these files via CC Explorer and then try to "re-add" it via the RAD GUI but I still get a generic error at that point that doesn't tell me anything.
How do I at a minimum get these files back in a state that I can check them out?
After working w/ our inhouse CC support staff, we've gone the route of them going in and undoing the check outs of the remaining files and then creating a new view. Then delete the "bad" view from my RAD workspace (as well as from the VOB) and import the new view. Because of additional CC plugin issues, we're also uninstalling RAD, WAS, and Clearcase to reinstall them. So this current situation is now closed.
I was facing the same issue in clear case view, this may not be the proper answer as I am not doing through eclipse, but it may help others. Solution was
Go to version tree of the file, right click on the checked-out node and there check in option was enabled.

Eclipse auto refresh (after custom builder) does not discover new files

This is not another of many "how do I have Eclipse auto refresh" questions. My problem is that it does but not entirely.
In a workspace with multiple projects the compilation of one causes source code to be generated in other(s) (that exist purely for this purpose - no manually written source code there). Source code is generated during the main compilation itself (i.e. not a custom builder, but a plugin for the Scala compiler, but that should be irrelevant).
What I've done so far is:
Add a dummy custom (ant) builder AFTER the standard one and set it to "refresh selected resources" - the source folder of those generated projects.
Also add a dummy custom (ant) builder BEFORE the standard (Java) builder of generated projects that refresh the same thing. Actually I tried various versions - just the source folder, the entire project, or the entire workspace with the same outcome. Note that those generated projects are set to depend on the project whose compilation generates their source code.
In Window -> Preferences -> General -> Workspace enabled "Refresh using native hooks or polling" in addition to "Refresh on access". I also tried disabling "Refresh on access" (leaving only the other one). Same outcome.
Tried with Eclipse Indigo (3.7 SR2 20120216-1857) and Juno (4.2.2 M20130204-1200), both 64-bit Windows versions. Additional plugins are installed, most notably Scala IDE (multiple different versions both for Scala 2.9 and 2.10 ending with Scala IDE 3.0.0). Same outcome.
... and that outcome is that Eclipse does indeed notice the files that have been modified. In whatever was the best combination of settings of the above (forgot) I was even able to get it to notice that some files that used to be generated no longer are and have them disappear (although I still had to collapse the tree and re-expand it, but no F5 was needed).
However, I never got to have it automatically discover that a brand new file that did not exist before was created. In my case that also yields compilation errors (since the modified files that it does discover have changed refer to the code in new files it does not notice).
Simple F5 solves the problem, but it is killing me, as I am trying to roll this environment to other developers and I'd hate having to tell them "You know, you have to (keep) push(ing) F5 every time you...".
Is it possible that this is still impossible in Eclipse? Does anyone know of a plugin (if not a direct solution) that can help?
As I noted in comments, discovering new folders (Java packages) also does not seem to be a problem. Just new files in existing folders.
Thanks!
UPDATE
With all the refresh things I did in place I noticed something I did not before.
I make the change in the project that causes code generation (was trying to test if it is the re-appearance of previously disappearing file is an issue or otherwise). This time I was just renaming one method which caused a name of the generated source file (Java class) to be changed as well.
As "Build automatically" is enabled, Eclipse begins the build. Very quickly it discovers an error and complains about it - one generated class that was modified now refers to a class Eclipse does not see yet (because refresh is incomplete - saw the modified file, but still believed that the file that no longer exists is there and did not see the new file).
Build actually continues. Progress goes up and down, appears and disappears a number of times, building other dependent projects. All the time the error is listed and marked in the Package Explorer on the modified class.
After the build seemingly completes (with that error in it, some minutes later), the refresh completes (!!!). Package Explorer is updated, the old file disappears, the new file appears, the error disappears, etc. I initially attributed this to me switching windows and triggering the refresh that way but I made sure I touched nothing the last time - just made the change and pushed Ctrl+S to save it.
This may mean that the 'condition' is not so bad (one just has to be very patient and have nerves of steel). Investigating further. Thanks to all who are or may be doing the same! The question is still why are there two refreshes with the first one being incomplete?

Eclipse incoming synchronization view shows incoming new files as folders

I hope it is okay to ask for strange behaviour/bugs in Eclipse here.
When I use the Eclipse synchronize view with Subclipse, I used to see all incoming files from other developers very nicely with blue arrows pointing to the left. Double click was perfect to open the compare editor and review all changes.
For some time now, whenever a colleague adds a new file it shows up as an incoming new folder in my synchronize view! Even if I update it, I sometimes need to restart Eclipse to have this folder disappear from sync view (or sync a different folder and sync the root again). Also double click to open the compare editor is broken then (It's nice to see the new file, even though the left side of the compare editor is empty, but that does not matter to me)
Does anybody know why this happens? I tried all kinds of preference settings and could not find anything on google. I think I use Granny made or whatever they call it, I can't find a sane version number anywhere. Thanks!

Avoiding "resource is out of sync with the filesystem"

I develop Java code with Eclipse and regularly get this message:
resource is out of sync with the filesystem.
Right-click > Refresh will always clear this.
But why can't Eclipse refresh automatically when it finds this condition? Are there cases where you want the resource to be out of sync?.
If there are such conditions and they don't apply to my work, is there a way of getting Eclipse to refresh automatically when it encounters this state?. (I appreciate that it should refresh as little as it needs to in normal development to increase performance for human developers.)
UPDATE (2012-06-25):
My latest update (Version: Indigo Release Build id: 20110615-0604)
no longer shows
Preferences - General - Workspace - Refresh Automatically
There is an option "Refresh on access" - should I use this?
You can enable this in Window - Preferences - General - Workspace - Refresh Automatically (called Refresh using native hooks or polling in newer builds)
The only reason I can think why this isn't enabled by default is performance related.
For example, refreshing source folders automatically might trigger a build of the workspace. Perhaps some people want more control over this.
There is also an article on the Eclipse site regarding auto refresh.
Basically, there is no external trigger that notifies Eclipse of files changed outside the workspace. Rather a background thread is used by Eclipse to monitor file changes that can possibly lead to performance issues with large workspaces.
Just right click on the file or on the project and click Refresh. The error will vanish. I also faced the same issue and it worked for me.
Window -> Preferences -> General -> Workspace
For the new Indigo version, the Preferences change to "Refresh on access", and with a detail explanation : Automatically refresh external workspace changes on access via the workspace.
As “resource is out of sync with the filesystem” this problem happens when I use external workspace, so after I select this option, problem solved.
This happens to me all the time.
Go to the error log, find the exception, and open a few levels until you can see something more like a root cause. Does it says "Resource is out of sync with the file system" ?
When renaming packages, of course, Eclipse has to move files around in the file system. Apparently what happens is that it later discovers that something it thinks it needs to clean up has been renamed, can't find it, throws an exception.
There are a couple of things you might try. First, go to Window: Preferences, Workspace, and enable "Refresh Automatically". In theory this should fix the problem, but for me, it didn't.
Second, if you are doing a large refactoring with subpackages, do the subpackages one at a time, from the bottom up, and explicitly refresh with the file system after each subpackage is renamed.
Third, just ignore the error: when the error dialog comes up, click Abort to preserve the partial change, instead of rolling it back. Try it again, and again, and you may find you can get through the entire operation using multiple retries.
If this occurs trying to delete a folder (on *nix) and Refresh does not help, open a terminal and look for a symlink below the folder you are trying to delete and remove this manually. This solved my issues.
When you open an Eclipse workspace from within a clearcase view and try to rename the project, you will often get the pop-up warning ... “Resource ‘project’ is out of sync with the file system”. If refreshing the project does not fix the problem, then do the following workaround: a. Open workspace WITHOUT being in a view b. Select the project in Project Explorer c. ClearCase -> Associate Project (project should now look like project [] ) d. Right click project -> Refresh (vob sub-folders should now be empty) e. Right click project -> Rename ... f. Enter New name
Now you can close the workspace, reopen it in a view and refresh the project. You may also dissociate the project if you prefer the project not to be associated with the vob.
A little hint. The message often appears during rename operation. The quick workaround for me is pressing Ctrl-Y (redo shortcut) after message confirmation. It works only if the renaming affects a single file.
If you are a regular Eclipse user than you might have got this error many times. The error simply says, “you’ve made changes in files in your workspace from outside eclipse”. The simplest solution would be to select the project and press F5 (Right click -> Refresh).
if you need more explanation you can read from this web site
I was not able to resolve this error by either refresh or by turning on "native polling" workspace feature. Turned out my project was also opened in two instances of eclipse. Once I closed the other instance, the error went away. So make sure your project is only opened at one place if you are seeing this error.

AnkhSVN - keep local copy and get latest version

I m new to use ankhSVN and having issues. I have created some new files which are not commited. It was required that i need to get latest version. I right clicked the folder and selected update. I didnt get the latest version and also my files were not present. It had a question mark icon towards the left.
Ideally i want to know what is the procedure to use ankhSVN.
Thanks and regards,
Ashish Agarwal
Ashish.Agarwal#Renishaw.com
[Unrelated: Please remove your e-mail address from your question if you don't want to receive spam.. you can be notified on updates via RSS and mail via your profile settings].
The 'folders' you see in Visual Studio are not normal folders/directories. They are just filters on your project. For some project types they map to actual folders (E.g. C#, VB and websites), but for other projects they don't (E.g. C, C++, Setup, Database, ...).
So actually you are just updating the selection of the filter/folder and everything below.
For most tasks you should always update on either the solution, the project level or a single file, as updating a subdirectory without the project referencing the files inside is an operation that can leave you with a broken project. (New files won't be included in your project and old files won't be removed).
AnkhSVN allows you to update the whole directory at once by checking the [X] Recursive checkbox at the bottom of the dialog, but this is currently not the default setting.