File indexing completed on 2025-03-09 05:11:43

0001 /*
0002 SPDX-FileCopyrightText: 2021 Hamed Masafi <hamed.masfi@gmail.com>
0003 
0004 SPDX-License-Identifier: GPL-3.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "libkommit_export.h"
0010 
0011 #include <git2/checkout.h>
0012 
0013 #include <QString>
0014 
0015 namespace Git
0016 {
0017 
0018 class LIBKOMMIT_EXPORT CheckoutOptions
0019 {
0020 public:
0021     //    enum CheckoutStrategy {
0022     //        None = 0,
0023     //        Safe = (1u << 0),
0024     //        Force = (1u << 1),
0025     //        RecreateMissing = (1u << 2),
0026     //        AllowConflicts = (1u << 4),
0027     //        RemoveUntracked = (1u << 5),
0028     //        RemoveIgnored = (1u << 6),
0029     //        UpdateOnly = (1u << 7),
0030     //        DontUpdateIndex = (1u << 8),
0031     //        NoRefresh = (1u << 9),
0032     //        SkipUnmerged = (1u << 10),
0033     //        UseOurs = (1u << 11),
0034     //        UseTheirs = (1u << 12),
0035     //        DisablePathspecMatch = (1u << 13),
0036     //        SkipLockedDirectories = (1u << 18),
0037     //        DontOverwriteIgnored = (1u << 19),
0038     //        ConflictStyleMerge = (1u << 20),
0039     //        ConflictStyleDiFF3 = (1u << 21),
0040     //        DontRemoveExisting = (1u << 22),
0041     //        DontWriteIndex = (1u << 23),
0042     //        UpdateSubmodules = (1u << 16),
0043     //        UpdateSubmodulesIfChanged = (1u << 17),
0044     //    };
0045 
0046     bool mSafe{false};
0047     bool mForce{false};
0048     bool mRecreateMissing{false};
0049     bool mAllowConflicts{false};
0050     bool mRemoveUntracked{false};
0051     bool mRemoveIgnored{false};
0052     bool mUpdateOnly{false};
0053     bool mDontUpdateIndex{false};
0054     bool mNoRefresh{false};
0055     bool mSkipUnmerged{false};
0056     bool mUseOurs{false};
0057     bool mUseTheirs{false};
0058     bool mDisablePathspecMatch{false};
0059     bool mSkipLockedDirectories{false};
0060     bool mDontOverwriteIgnored{false};
0061     bool mConflictStyleMerge{false};
0062     bool mConflictStyleDiFF3{false};
0063     bool mDontRemoveExisting{false};
0064     bool mDontWriteIndex{false};
0065     bool mUpdateSubmodules{false};
0066     bool mUpdateSubmodulesIfChanged{false};
0067 
0068     QString mAncestorLabel;
0069     QString mOurLabel;
0070     QString mTheirLabel;
0071 
0072     CheckoutOptions();
0073 
0074     void applyToCheckoutOptions(git_checkout_options *opts) const;
0075 };
0076 
0077 } // namespace Git