SRombauts / UEGitPlugin

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

Automatic checkout prompts not working (Mac OS, gittea, UE 4.22.3) #116

Open Olliebrown opened 4 years ago

Olliebrown commented 4 years ago

When I modify something in a map, just like with other source control plugins, it prompts me to checkout the file. However, if I click 'check out' in the little prompt in the bottom right, it does some work, seems like it is locking the file, but never actually locks it. It also does not report any error.

I have the same result if I go up to 'source control -> check out modified files'. It seems to work for a moment, tries to lock things, but in the end it does not lock the file and no error is reported.

I am able to successfully lock files manually (by right clicking and saying 'check out') but the checking out of modified assets automatically seems to fail. I will see about sending a log of the problem too.

Just looking for some guidance on fixing this!

System Info

Olliebrown commented 4 years ago

Here are the logs. Kind of looks like maybe this isn't implemented yet as all they are doing is refreshing status. I don't see an attempt to lock the files.

Right after modifying the scene
================================
LogSourceControl: IssueAsynchronousCommand(UpdateStatus)
LogSourceControl: RunCommand: 'git lfs locks'
LogSourceControl: RunCommand(lfs locks):
LogSourceControl: RunCommand: 'git symbolic-ref --short --quiet HEAD'
LogSourceControl: RunCommand(symbolic-ref):
master
LogSourceControl: RunCommand: 'git status --porcelain --ignored "/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap"'
LogSourceControl: RunCommand(status):
LogSourceControl: ParseStatusResults: 2) General case for one or more files (/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap, ...)
LogSourceControl: Status(/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap) not found but exists => unchanged
LogSourceControl: Status(/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap) Not Locked
LogSourceControl: RunCommand: 'git ls-remote origin master "/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap"'
LogSourceControl: RunCommand(ls-remote):
60b7a0e43911eab3577bc5366718ce587c83c567    refs/heads/master
LogSourceControl: RunCommand: 'git diff --name-only origin/master  HEAD "/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap"'
LogSourceControl: RunCommand(diff):
LogSourceControl: RunCommand: 'git log -1 --format="%H %s"'
LogSourceControl: RunCommand(log):
60b7a0e43911eab3577bc5366718ce587c83c567 Quick test of locking

After clicking 'check-out' in the prompt
========================================
LogSourceControl: ExecuteSynchronousCommand(UpdateStatus)
LogSourceControl: RunCommand: 'git lfs locks'
LogSourceControl: RunCommand(lfs locks):
LogSourceControl: RunCommand: 'git symbolic-ref --short --quiet HEAD'
LogSourceControl: RunCommand(symbolic-ref):
master
LogSourceControl: RunCommand: 'git status --porcelain --ignored "/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap"'
LogSourceControl: RunCommand(status):
LogSourceControl: ParseStatusResults: 2) General case for one or more files (/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap, ...)
LogSourceControl: Status(/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap) not found but exists => unchanged
LogSourceControl: Status(/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap) Not Locked
LogSourceControl: RunCommand: 'git ls-remote origin master "/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap"'
LogSourceControl: RunCommand(ls-remote):
60b7a0e43911eab3577bc5366718ce587c83c567    refs/heads/master
LogSourceControl: RunCommand: 'git diff --name-only origin/master  HEAD "/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap"'
LogSourceControl: RunCommand(diff):
LogSourceControl: RunCommand: 'git log -1 --format="%H %s"'
LogSourceControl: RunCommand(log):
60b7a0e43911eab3577bc5366718ce587c83c567 Quick test of locking

After clicking 'source-control -> check out modified files'
===========================================================
LogSourceControl: ExecuteSynchronousCommand(UpdateStatus)
LogSourceControl: RunCommand: 'git lfs locks'
LogSourceControl: RunCommand(lfs locks):
LogSourceControl: RunCommand: 'git symbolic-ref --short --quiet HEAD'
LogSourceControl: RunCommand(symbolic-ref):
master
LogSourceControl: RunCommand: 'git status --porcelain --ignored "/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap"'
LogSourceControl: RunCommand(status):
LogSourceControl: ParseStatusResults: 2) General case for one or more files (/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap, ...)
LogSourceControl: Status(/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap) not found but exists => unchanged
LogSourceControl: Status(/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap) Not Locked
LogSourceControl: RunCommand: 'git ls-remote origin master "/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap"'
LogSourceControl: RunCommand(ls-remote):
60b7a0e43911eab3577bc5366718ce587c83c567    refs/heads/master
LogSourceControl: RunCommand: 'git diff --name-only origin/master  HEAD "/Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap"'
LogSourceControl: RunCommand(diff):
LogSourceControl: RunCommand: 'git log -1 --format="%H %s"'
LogSourceControl: RunCommand(log):
60b7a0e43911eab3577bc5366718ce587c83c567 Quick test of locking
LogSlate: Took 0.002183 seconds to synchronously load lazily loaded font '../../../Engine/Content/Slate/Fonts/Roboto-Light.ttf' (167K)
LogUObjectHash: Compacting FUObjectHashTables data took   0.53ms
LogSavePackage: Moving '../../../../../../../Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Saved/ThirdPersonExampleMapB745B31A3F4F21C059BCC0B4A24F8DA4.tmp' to '../../../../../../../Volumes/Samsung_T5/GDD450Repos-1920/funcTestProj/Content/ThirdPersonCPP/Maps/ThirdPersonExampleMap.umap'
LogFileHelpers: Saving map 'ThirdPersonExampleMap' took 0.178
LogFileHelpers: Warning: The following assets are writable on disk but not checked out from source control:
/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap
LogSlate: Window 'Writable Assets Not Checked Out' being destroyed
SRombauts commented 4 years ago

Hi,

I should have a look at this, but I am not using LFS anymore myself, so it might take me some time to dig into it...

I think it might come from a specific set of flags not well understood by the Editor (flags like IsCheckedout CanCheckout IsWritable etc.)

It could be that the file is considered as Unchanged at the time where you click on the pop-up and as such it don't do anything?

not found but exists => unchanged

To be clear, this issue is known to me in pure git (the issue is that all modified files are considered checked out by default) but should be (needs to be) fixed

mastercoms commented 4 years ago

I am pretty sure UE4 only prompts when a file is read-only.