SRombauts / UEGitPlugin

Unreal Engine 5 Git LFS 2 Source Control Plugin (beta)
http://srombauts.github.io/UEGitPlugin
MIT License
808 stars 165 forks source link

[Solved] "Username to lock files on the LFS server" sees his own locks as other person #64

Closed ArtyMcLabin closed 6 years ago

ArtyMcLabin commented 6 years ago

G'day :]

A strange bug(?) i have met. The situation is that - we are two users testing the plugin. "Arty McLabin" and "Brad Weiss" is our LFS usernames ("git lfs locks" outputs these names when we lock stuff.) for me (Arty McLabin) everything works great, but for "Brad Weiss", his own locks appear as blue V indicator as if somebody else have locked these files, while the lock description indicated his own name. in the source control settings, he have put the name as it appears in "git lfs locks" command. even when he locks the files from inside the engine, using UE4's "checkout file", he get an error of "can't checkout the file", and right after that a blue V with his name appears again.

The engine also behaves like he and his LFS username are different persons accordingly, and disallows him to make changes to the files, like the locks belong to someone else rather than him.

If he changes the username to mine in the plugin settings, he instantly sees my locks with red mark.

Any thoughts? :P

SRombauts commented 6 years ago

Hi!

it might be a problem with lower/upper case or missing spaces...

The log should help, could you check in Saved/Logs and report here? Look for the error message end previous few lines

ArtyMcLabin commented 6 years ago

Hey, thanks for the blazing reply :]

It was a problem with spaces! very strange, because we have rechecked it 10 times and used ctrl+c and ctrl+v from bash "git lfs locks" output. i have checked the logs and i see that somewhat the plugin indicated that the name is "Brad Weiss " with two spaces. also different member named "alex breger" had the same issue. plugin had indicated "alex breger " with one space.

Adding the spaces to the end has solved the problem.

It is strange that it have happened to 2/3 of our members however.

Also i see that the plugin tries "git lfs locks" for many times, you might wanna look at the log:

here is the relevant log part: (everything after "check out file" UE4 command)

LogSourceControl: ExecuteSynchronousCommand(UpdateStatus) LogSourceControl: RunCommand: 'git lfs locks' LogSourceControl: RunCommand(lfs locks): Content/Characters/Abstract_Humanoid.uasset Arty McLabin ID:63 Content/Characters/Human/Human.uasset Arty McLabin ID:64 Content/Characters/MainPlayer.uasset Arty McLabin ID:65 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/PSO_render_MatInst.uasset Arty McLabin ID:62 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/crosshair_PSO_mask.uasset Arty McLabin ID:61 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/dual_render.uasset Arty McLabin ID:59 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/sniper_scope.uasset Arty McLabin ID:60 Content/Classes/Vehicle/Bicycle.uasset Arty McLabin ID:81 Content/Props/house/Doors/Door.uasset alex breger ID:80 Source/Degradation_Era/Private/Aimable.cpp Arty McLabin ID:1 remove-binaries Arty McLabin ID:2 sync Arty McLabin ID:20 LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Characters/Abstract_Humanoid.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Characters/Human/Human.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Characters/MainPlayer.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/PSO_render_MatInst.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/crosshair_PSO_mask.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/dual_render.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/sniper_scope.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Vehicle/Bicycle.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Props/house/Doors/Door.uasset, alex breger ) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Source/Degradation_Era/Private/Aimable.cpp, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/remove-binaries, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/sync, Arty McLabin) LogSourceControl: RunCommand: 'git status --porcelain --ignored "D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset"' LogSourceControl: RunCommand(status): LogSourceControl: ParseStatusResults: 2) General case for one or more files (D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset, ...) LogSourceControl: Status(D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset) not found but exists => unchanged LogSourceControl: Status(D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset) Not Locked LogSourceControl: ExecuteSynchronousCommand(UpdateStatus) LogSourceControl: RunCommand: 'git lfs locks' LogSourceControl: RunCommand(lfs locks): Content/Characters/Abstract_Humanoid.uasset Arty McLabin ID:63 Content/Characters/Human/Human.uasset Arty McLabin ID:64 Content/Characters/MainPlayer.uasset Arty McLabin ID:65 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/PSO_render_MatInst.uasset Arty McLabin ID:62 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/crosshair_PSO_mask.uasset Arty McLabin ID:61 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/dual_render.uasset Arty McLabin ID:59 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/sniper_scope.uasset Arty McLabin ID:60 Content/Classes/Vehicle/Bicycle.uasset Arty McLabin ID:81 Content/Props/house/Doors/Door.uasset alex breger ID:80 Source/Degradation_Era/Private/Aimable.cpp Arty McLabin ID:1 remove-binaries Arty McLabin ID:2 sync Arty McLabin ID:20 LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Characters/Abstract_Humanoid.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Characters/Human/Human.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Characters/MainPlayer.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/PSO_render_MatInst.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/crosshair_PSO_mask.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/dual_render.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/sniper_scope.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Vehicle/Bicycle.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Props/house/Doors/Door.uasset, alex breger ) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Source/Degradation_Era/Private/Aimable.cpp, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/remove-binaries, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/sync, Arty McLabin) LogSourceControl: RunCommand: 'git status --porcelain --ignored "D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset"' LogSourceControl: RunCommand(status): LogSourceControl: ParseStatusResults: 2) General case for one or more files (D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset, ...) LogSourceControl: Status(D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset) not found but exists => unchanged LogSourceControl: Status(D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset) Not Locked LogSourceControl: ExecuteSynchronousCommand(CheckOut) LogSourceControl: RunCommand: 'git lfs lock "Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset"' LogSourceControl: RunCommand(lfs lock): Locked Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset LogSourceControl: RunCommand: 'git lfs locks' LogSourceControl: RunCommand(lfs locks): Content/Characters/Abstract_Humanoid.uasset Arty McLabin ID:63 Content/Characters/Human/Human.uasset Arty McLabin ID:64 Content/Characters/MainPlayer.uasset Arty McLabin ID:65 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/PSO_render_MatInst.uasset Arty McLabin ID:62 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/crosshair_PSO_mask.uasset Arty McLabin ID:61 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/dual_render.uasset Arty McLabin ID:59 Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/sniper_scope.uasset Arty McLabin ID:60 Content/Classes/Vehicle/Bicycle.uasset Arty McLabin ID:81 Content/Props/house/Doors/Door.uasset alex breger ID:80 Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset alex breger ID:82 Source/Degradation_Era/Private/Aimable.cpp Arty McLabin ID:1 remove-binaries Arty McLabin ID:2 sync Arty McLabin ID:20 LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Characters/Abstract_Humanoid.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Characters/Human/Human.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Characters/MainPlayer.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/PSO_render_MatInst.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/crosshair_PSO_mask.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/dual_render.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Equipable/Misc/EquAttachments/Scopes/sniper_scope/sniper_scope.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Classes/Vehicle/Bicycle.uasset, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Props/house/Doors/Door.uasset, alex breger ) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset, alex breger ) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/Source/Degradation_Era/Private/Aimable.cpp, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/remove-binaries, Arty McLabin) LogSourceControl: LockedFile(D:/Degera/Degradation_Era/sync, Arty McLabin) LogSourceControl: RunCommand: 'git status --porcelain --ignored "D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset"' LogSourceControl: RunCommand(status): LogSourceControl: ParseStatusResults: 2) General case for one or more files (D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset, ...) LogSourceControl: Status(D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset) not found but exists => unchanged LogSourceControl: Status(D:/Degera/Degradation_Era/Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset) Locked by 'alex breger ' SourceControl: Locked Content/Props/house/Doors/doorPractice/door_mesh_Skeleton.uasset

SRombauts commented 6 years ago

Hum, it looks like a bug in my plugin when handling multi words names...

ArtyMcLabin commented 6 years ago

Are you sure? My username there has 2 words just like the others but it does work without spaces

SRombauts commented 6 years ago

Hey @ArtyMcLabin, thanks a lot for reporting this and helping others! I've just pushed a fix.

Problem is I never reproduced the problem, so I would love if you can test it on your side. If you need a binary release I can provide it asap.

Cheers!

(also, I was really busy, sorry)

ArtyMcLabin commented 6 years ago

sure, just tell me what i can help it :] thank you for your time and efforts. i am already using that plugin in my serious project production so i am interested in improving it :P

should i try removing the spaces from my team-mates nicknames with the new version?

SRombauts commented 6 years ago

Yes, remove the added spaces. Can you compile the plugin by yourself?

SRombauts commented 6 years ago

Also, if you have some features you would like implemented, let me know! Some are already whished/planned, but I need to know what is really useful to end-users.

Also, I am very busy so not always able to work on this side project

ArtyMcLabin commented 6 years ago

thanks :] i will try it in the few next days. i didn't deal with plugin codes before, but i will try to compile myself. should be good. ill report back then

ArtyMcLabin commented 6 years ago

regards features, i guess the main problem now is the speed of "git lfs locks" which runs very often. it is git LFS fault rather than your plugin, but there might be some alternative approach to use with UE, that runs the command less.

one possible way to implement this could be caching the LFS state of each file in the current dir of the content browser/s, because "git lfs locks" returns all of them anyway. with this cached situation, the command runs only for the first time some source control check is required in this dir.

i have had a nightmare time when i had to rename and move 60 files between directories, running "locks" each rename of each file, and then again when moving it to other dir, haha.

i will try to look more at the output log and see if i come up with more ideas on improvement, or maybe even a better way.

SRombauts commented 6 years ago

Perhaps can you look at proposed solutions in issue #54 and https://github.com/git-lfs/git-lfs/issues/2616 : you could try to use "wincred" as the credential helper, or use SSH git url to avoid authentification delays

SRombauts commented 6 years ago

Binary release for you: https://github.com/SRombauts/UE4GitPlugin/releases/tag/2.6-beta

:)

ArtyMcLabin commented 6 years ago

interesting, i will try wincred. as far as i understand auth caching is only enabled for SSH? we have a problem with setting SSH on our git server, so i guess we won't test it anytime soon.

ArtyMcLabin commented 6 years ago

My team has tested the new build and it seems like the spaces bug is indeed fixed. everything is working :] Thanks

wincred doesn't seem to make any difference in HTTPS btw

SRombauts commented 6 years ago

Great!