Unity Version Control - Perforce - files (mostly .metas) are checked out automatically

I’ve seen this on multiple version of Unity from 2017 and 2018, but when using the built in Version Control with Perforce. After syncing to new files and opening a project Unity will often check out files, often times .meta files. Sometimes they are from new assets you synced to, and sometimes it’s consistently some older assets that have been auto checked out before. It’s been .fbx files, TextMesh Pro assets, materials, etc…there seems to be no pattern. Sometime files will also fail to revert, for as soon as you them, they seems to be imported again (The Asset Progress pop-up shows up after a revert).

I tried searching the forums for this, but couldn’t find anything relevant. Has anyone experience this before and have found a way to fix this? I prefer the workflow of being able to check files out and submitting through Unity, but this is quite annoying to deal with on a daily basis.

In at least the following two cases, materials are automatically checked out even though its contents are Unchanged.
(1) Material using Lit shader
(2) Material using shader created using ShaderGraph

For example, if these materials are used in a 3D model, they will be checked out after being drawn in UnityEditor.

The reason is that when the ValidateMaterial() function in the custom editor for “Lit shader” or “shaders made with ShaderGraph” is called, the materials is checked out as a result.

My guess is that when setting up the shader’s hidden property in the ValidateMaterial() function, it is marked as “changed” regardless of whether the value has changed or not.

I succeeded in suppressing the checkout by using the following method:
Modified the custom editor so that it executes the internal processing of ValidateMaterial() only when the “Edit Properties” toggle switch is ON, and usually turns OFF.

I would like Unity to be modified so that it does not perform unnecessary Checkouts.
Please.