public void Smudge() { var args = Parse( minArgs: 0, maxArgs: 1, switchInfo: new[] { GitCmdSwitchInfo.Blank } ); var pointerStream = Console.OpenStandardInput(); if (args.Length == 1) { pointerStream = File.OpenRead(args[0]); } using (var sr = new StreamReader(pointerStream)) { var pointer = LfxPointer.Parse(sr); var cache = LfxBlobCache.Create(); var blob = cache.Load(pointer); using (var contentStream = blob.OpenRead()) contentStream.CopyTo(Console.OpenStandardOutput()); } }
public void Cache() { var cache = LfxBlobCache.Create(); foreach (var blob in cache) { Console.WriteLine($"{blob.Hash}"); } }
public void Reset() { var args = Parse( minArgs: 0, maxArgs: 1, switchInfo: GitCmdSwitchInfo.Create( LfxCmdSwitches.List, LfxCmdSwitches.L, LfxCmdSwitches.Cached, LfxCmdSwitches.C, LfxCmdSwitches.Others, LfxCmdSwitches.O, LfxCmdSwitches.Quite, LfxCmdSwitches.Q, LfxCmdSwitches.Force, LfxCmdSwitches.F ) ); var lfxFiles = GetFiles(args, content: true); var listOnly = args.IsSet(LfxCmdSwitches.L, LfxCmdSwitches.List); if (listOnly) { foreach (var file in lfxFiles) { Log($"{file}"); } return; } var force = args.IsSet(LfxCmdSwitches.F, LfxCmdSwitches.Force); var cache = LfxBlobCache.Create(); Batch(args, lfxFiles, file => { var path = file.Path; if (force) { var mask = ~(FileAttributes.Hidden | FileAttributes.ReadOnly | FileAttributes.System); File.SetAttributes( path: path, fileAttributes: File.GetAttributes(path) & mask ); } if (!LfxPointer.CanLoad(path)) { var blob = cache.Save(path); var pointer = LfxPointer.Create(path, blob.Hash); pointer.Save(path); } }); }
public void Clear() { ParseNoArgsAndNoSwitches(); var cache = LfxBlobCache.Create(); while (cache != null) { var store = cache.Store; Console.WriteLine($"Removing {store.Directory}"); store.Clear(); cache = cache.Parent; } }
public void Env() { ParseNoArgsAndNoSwitches(); var config = LfxConfig.Load(); var gitConfig = config.GitConfig; Log($"Enlistment={gitConfig.EnlistmentDirectory}"); Log($"GitDirectory={gitConfig.GitDirectory}"); Log(); var cache = LfxBlobCache.Create(); var level = 1; Log("BlobCache:"); while (cache != null) { var store = cache.Store; Log($" L{level++}={store.Directory} (count={store.Count}, size={store.Size.ToString("N0")})"); cache = cache.Parent; } Log(); Log("Config:"); Log($" {LfxConfigFile.CleanFilterId}={gitConfig[LfxConfigFile.CleanFilterId]}"); Log($" {LfxConfigFile.SmudgeFilterId}={gitConfig[LfxConfigFile.SmudgeFilterId]}"); Log($" {LfxConfigFile.TypeId}={gitConfig[LfxConfigFile.TypeId]}"); Log($" {LfxConfigFile.UrlId}={gitConfig[LfxConfigFile.UrlId]}"); Log($" {LfxConfigFile.PatternId}={gitConfig[LfxConfigFile.PatternId]}"); Log($" {LfxConfigFile.HintId}={gitConfig[LfxConfigFile.HintId]}"); Log(); Log("Config Files:"); var configLevel = config; while (configLevel != null) { var configFile = configLevel.ConfigFile; Log($" {configFile}"); foreach (var value in configFile) { Log($" {value}"); } configLevel = configLevel.Parent; } Log(); }
public void Checkout() { var args = Parse( minArgs: 0, maxArgs: 1, switchInfo: GitCmdSwitchInfo.Create( LfxCmdSwitches.List, LfxCmdSwitches.L, LfxCmdSwitches.Cached, LfxCmdSwitches.C, LfxCmdSwitches.Others, LfxCmdSwitches.O, LfxCmdSwitches.Quite, LfxCmdSwitches.Q ) ); var lfxFiles = GetFiles(args, pointer: true); var listOnly = args.IsSet(LfxCmdSwitches.L, LfxCmdSwitches.List); if (listOnly) { foreach (var file in lfxFiles) { Log($"{file}"); } return; } var cache = LfxBlobCache.Create(); Batch(args, lfxFiles, async file => { LfxPointer pointer; if (!LfxPointer.TryLoad(file.Path, out pointer)) { return; } var blob = await cache.LoadAsync(pointer); blob.Save(file.Path); }); }