SRombauts / UEPlasticPlugin

Plastic SCM Plugin for Unreal Engine
http://srombauts.github.io/UEPlasticPlugin
148 stars 29 forks source link

Issues with xlinks (diff and history) #55

Closed ftrx closed 5 years ago

ftrx commented 5 years ago

Diff and history is not working with xlinks. It seams the wrong repository is searched.

I'm using an write enabled xlinked plugin which I use in different projects. When I try to diff changes in the xlinked plugin, i get the following error

LogSourceControl: Warning: RunCommand(55): 'log cs:39@rep:ProjectRepo@repserver:port --xml --encoding="utf-8"' (in 0.013987s) output: The specified changeset cs:39@rep:ProjectRepo@repserver:port does not exist.

In this case the plasticscm plugin seems to look in the wrong repo, as the cs39 is the correct changset for the xlinked file but it seams to use wrong repo.

Instead of the ProjectRepo it should use the xlinked PluginRepo.

Exp: cs:39@rep:**ProjectRepo**@repserver:port should be cs:39@rep:**PluginRepo**@repserver:port

Thank you

SRombauts commented 5 years ago

Hi, thank you for detailing your issue with your use case!

I've already been contacted on this by the guys at Codic Software. I've started to work on it, but was unsure on the exact use case. I should have anything to make it work for you now

Would you be able to test it before I release it?'

Cheers!

ftrx commented 5 years ago

Sure! Let me know what you need tested and how I can help, and I'll do my best

Cheers

SRombauts commented 5 years ago

Hi @ftrx, would you be able to test the above commit on the dedicated branch? I will test it more thoroughly hopefully tomorrow and could make a binary release for UE4.21 afterward.

ftrx commented 5 years ago

I'll try to test it today and let you know!

ftrx commented 5 years ago

Seem not to work in my existing project (I try a new clean project in the afternoon)

Seems to not get any RefSpec

Part of the Output Log: LogSourceControl: RunCommand(37): 'log cs:44@ --xml --encoding="utf-8"' (36 chars, 0 files) LogSourceControl: Warning: RunCommand(37): 'log cs:44@ --xml --encoding="utf-8"' (in 0.005977s) output: Can't find repository for object 'ak5'. The command has to either include a full object specification (including repository) like 'cs:13@rep:default@localhost:8084' or be run inside a workspace.

even the non xlinked assets seem now not to work.

I've attached the Output Log: Error.txt

ftrx commented 5 years ago

btw I think it should be RepSpec and not RefSpec for the fileinfo parameter,

ftrx commented 5 years ago

I did some additional testing (changed the RepSpec name)

Seems the Diff does not download the correct file.

I've uploaded my changes to my fork (same branch name).

SRombauts commented 5 years ago

Ok, I can see I shared this too soon, sorry for the hassle! I was unable to test it yesterday, but should have my dev machine up and running in a few hours

SRombauts commented 5 years ago

Okay, if you can try the latest commit, "it works on my machine"

It's not in a releasable state, since I disabled an optimisation that was the cause of the fileinfo command not being issued; I need to rework it properly

What do you think of the History UI? It is built inside Unreal, not in the plugin, but I appended the RepSpec info into the Revision column ; "cs:5@UE4PlasticPluginDev@localhost:8087" I feel it is to much, I should only put the "reponame" part of it, like "cs:5@UE4PlasticPluginDev"

Also we might want to omit this info if it is the same as the main repo. That is, only display anything if it is from an xlink. Any though?

SRombauts commented 5 years ago

I have just released the fix, I hope it suits your needs, as it seems to be working in my local testings.

Let me know if you need anything

ftrx commented 5 years ago

Hi, thanks for your effort, i still have some little issues.. sorry :( The xlink seems to work now. But I still can't use the Blueprint diff (which is one of our the main usages for the plugin) When I use the diff i get a Unable to load assets to diff. Content may no longer be supported? Error message

The log output is as followed:

LogSourceControl: RunDumpToFile: 'cm cat revid:20260@ --raw --file="Path/To/Project/Saved/Diff/temp-20260-BP_BlueprintName.uasset"'
LogSourceControl: RunDumpToFile: ExecProcess ReturnCode=1 Results=''
LogSourceControl: Error: RunDumpToFile: ExecProcess ReturnCode=1 Errors='Incorrect object specification revid:20260@
'
LogLinker: Warning: Can't find file 'Path/To/Project/Saved/Diff/temp-20260-BP_BlueprintName.uasset'
LogSlate: Window 'Message' being destroyed

It seems that it does not download/dump the diff file at the location

thanks for your effort!

SRombauts commented 5 years ago

Interesting, it seems that in your situation the RepSpec is empty (edit see end of "RunDumpToFile: 'cm cat revid:20260@ ") , while it is working on the history window... Strange since the history is normally used to feed the diff

can you provide the few line of logs before that please? Clear the Output Log window, then use the editor to diff, and report here the full log

Edit: it may be due to some optimizations I did on the last few hours before the release, but I didn't have this bug during my last qa pass...

ftrx commented 5 years ago

I've attached the output log output.log

SRombauts commented 5 years ago

Thanks for the report; I did definitely broke the diff feature in the previous release; my tests on diffs where not showing the issue since I already had all the temp files in my Saved/Diff temp folder, which short circuit the actual source control "DumpToFile" (this is the limit of testing a release with always the same set of operations on the same files)

SRombauts commented 5 years ago

Fix released in new version https://github.com/SRombauts/UE4PlasticPlugin/releases/tag/1.4.1