UEGitPlugin icon indicating copy to clipboard operation
UEGitPlugin copied to clipboard

Better support for reverting new and deleted files

Open Darcy3000s opened this issue 11 months ago • 1 comments

Currently if you run a revert on a deleted file through the source control submit window, you don't actually get the file back because of this piece of code: // If already queued for deletion, don't try to delete again if (State->IsSourceControlled() && !State->IsDeleted()) { OutMissingFiles.Add(State->GetFilename()); }

But the only place this function is used, is to revert files, so the revert action does nothing - with this change, the revert action will bring the file back to its state at HEAD - I had a bit of a look at the history of this, and it's quite unclear why it was needed, it was added quite a while back, I'd guess the engine used to handle deleting or reverting differently

In addition to this, the behavior of reverting an added file was just to unmark it for add - which is understandable that some folks would want that, but that's not the behavior we want at our studio, so I've made Revert on an added file also remove the file on disk IF you have USourceControlPreferences::ShouldDeleteNewFilesOnRevert() enabled This is a property that already exists in the engine, and is used by the perforce integration to allow you to switch between the 2 behaviors listed here

There's also a general clean up, the code was a bit difficult to reason about, so I've refactored GetMissingVsExistingFiles into GroupFileCommandsForRevert which gives you lists of files sorted into buckets that we run different commands on so it's hopefully a bit simpler to follow

Darcy3000s avatar Jan 03 '25 03:01 Darcy3000s

Hi, thank you for the change. I will look into this soon.

mastercoms avatar Jan 17 '25 12:01 mastercoms