[VS2022] 現在のドキュメントの変更履歴をクリア

Visual Studioで編集していると、ファイルの変更履歴として黄色や緑のバーが表示されます。
この変更履歴をリセットする方法が意外にも用意されていません。

一応方法としては、
ファイルを開き直す、変更履歴の設定をON/OFFする

探していたらVisualCommanderでこの機能のコマンドが公開されていました。
How to reset track changes in Visual Studio? - Stack Overflow

Visual Commander - Visual Studio Marketplace
https://vlasovstudio.com/visual-commander/commands.html#ClearChanges

ただ、古いバージョンでしか動かないコードだったので、
VS2022で動作するように修正しました。

using EnvDTE80;
using System;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;

public class C  :VisualCommanderExt.ICommand {
	public void Run( DTE2 DTE, Package package ) {
		serviceProvider = package;
		Reload( DTE.ActiveDocument.FullName );
	}
	private void Reload( string file ) {
		ThreadHelper.ThrowIfNotOnUIThread();

		var rdt = (IVsRunningDocumentTable)serviceProvider.GetService( typeof( SVsRunningDocumentTable ) );
		IVsHierarchy h;
		uint id;
		IntPtr data;
		uint cookie;
		ErrorHandler.ThrowOnFailure( rdt.FindAndLockDocument(
			(uint)_VSRDTFLAGS.RDT_NoLock,
			file,
			out h,
			out id,
			out data,
			out cookie ) );
		try {
			var persistDocData = (IVsPersistDocData)Marshal.GetObjectForIUnknown( data );
			{
				int dirty;
				ErrorHandler.ThrowOnFailure( persistDocData.IsDocDataDirty( out dirty ) );
				if( dirty != 0 )
					return;
			}
			ErrorHandler.ThrowOnFailure( persistDocData.ReloadDocData( (uint)_VSRELOADDOCDATA.RDD_RemoveUndoStack ) );
		} finally {
			Marshal.Release( data );
		}
	}
	private IServiceProvider serviceProvider;
}


追加するコマンドの [References..] に1つ追加します。

Microsoft.VisualStudio.Shell.Framework

こんな感じ


以上です。


最新のVS2022だと変更記録の表示がGitの履歴になってしまうから使うかな?