intersystems / git-source-control

Server-side source control hooks for InterSystems' platforms to facilitate use of git, especially in shared and/or remote development environments and for interoperability graphical editors
11 stars 7 forks source link

Discard changes for a file in namespace but not in local repo should not delete file. Production cls deleted. #455

Open SRFTInterface opened 1 month ago

SRFTInterface commented 1 month ago

On Preprod was setting up all classes to Git excluding the production cls file as this causes too much pain of stopping starting components and this change being locked.

Git Azure repo copied and blank

Realised adding frontend it was adding in the production class

Hadn't yet added the class to git ignore

File picked up by git

Discard changes clicked

Production still running but production class gone image Discarding a change that is in production but not in local repo should not delete the file. Or warning places when clicking discard changes in a scenario where it may fully delete the file A level of temporary file for discarded changes would also be nice but is fair enough that is not how git works- unfortunate as was done by the GIT Web front end cannot recover like in VS code

isc-tleavitt commented 1 month ago

@SRFTInterface yikes! I'm very sorry for the inconvenience and we'll try to make sure that your pain isn't repeated.

This is tricky because in general when you discard changes, you do want to delete a thing that was added. I like the idea of having a recycle bin for discarded changes (specifically when "discard" means "delete").

The right menu option is "Remove" in this case rather than "Discard changes to file" but that's not necessarily clear.

So, things that we should do:

isc-tleavitt commented 1 month ago

@isc-hwojnick I ranked this next in your milestone after the context switch option. I think target for 2.5.0

SRFTInterface commented 1 month ago

Thanks we found a May version of the file from a previous a-sync member and didn't lose too much. We will wait for the version with this in before we progress to take to Live. The issue with the file why i removed it (wrongly) is that at the moment we need to add the live production to git ignore as it is unavoidable that a disabled and enabled i believe flags the change up i believe when tracked. It's fine this is a change and under the realms of true source control should be logged and tracked, unfortunately for day to day working it would be too much on an overhead. We may look to track the changes of this on a more scheduled daily basis if there is any changes via another mechanism.