using LibGit2Sharp.Core; using LibGit2Sharp.Handlers; namespace LibGit2Sharp { /// /// Collection of parameters controlling Checkout behavior. /// public sealed class CheckoutOptions : IConvertableToGitCheckoutOpts { /// /// Options controlling checkout behavior. /// public CheckoutModifiers CheckoutModifiers { get; set; } /// /// The flags specifying what conditions are /// reported through the OnCheckoutNotify delegate. /// public CheckoutNotifyFlags CheckoutNotifyFlags { get; set; } /// /// Delegate to be called during checkout for files that match /// desired filter specified with the NotifyFlags property. /// public CheckoutNotifyHandler OnCheckoutNotify { get; set; } /// Delegate through which checkout will notify callers of /// certain conditions. The conditions that are reported is /// controlled with the CheckoutNotifyFlags property. public CheckoutProgressHandler OnCheckoutProgress { get; set; } CheckoutStrategy IConvertableToGitCheckoutOpts.CheckoutStrategy { get { return CheckoutModifiers.HasFlag(CheckoutModifiers.Force) ? CheckoutStrategy.GIT_CHECKOUT_FORCE : CheckoutStrategy.GIT_CHECKOUT_SAFE; } } /// /// Generate a object with the delegates /// hooked up to the native callbacks. /// /// CheckoutCallbacks IConvertableToGitCheckoutOpts.GenerateCallbacks() { return CheckoutCallbacks.From(OnCheckoutProgress, OnCheckoutNotify); } } }