// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: BUSL-1.1 package git import ( "context" "fmt" "strings" ) type ( // MergeStrategy are the merge strategy to use MergeStrategy = string // MergeStrategy are merge strategy options MergeStrategyOption = string ) const ( MergeStrategyORT MergeStrategy = "ort" MergeStrategyRecursive MergeStrategy = "recursive" MergeStrategyResolve MergeStrategy = "resolve" MergeStrategyOctopus MergeStrategy = "octopus" MergeStrategyOurs MergeStrategy = "ours" MergeStrategySubtree MergeStrategy = "subtree" // Ort MergeStrategyOptionOurs MergeStrategy = "ours" MergeStrategyOptionTheirs MergeStrategy = "theirs" MergeStrategyOptionIgnoreSpaceChange MergeStrategy = "ignore-space-change" MergeStrategyOptionIgnoreAllSpace MergeStrategy = "ignore-all-space" MergeStrategyOptionIgnoreSpaceAtEOL MergeStrategy = "ignore-space-at-eol" MergeStrategyOptionIgnoreCRAtEOL MergeStrategy = "ignore-cr-at-eol" MergeStrategyOptionRenormalize MergeStrategy = "renormalize" MergeStrategyOptionNoRenormalize MergeStrategy = "no-renormalize" MergeStrategyOptionFindRenames MergeStrategy = "find-renames" // Recursive MergeStrategyOptionDiffAlgorithmPatience MergeStrategy = "diff-algorithm=patience" MergeStrategyOptionDiffAlgorithmMinimal MergeStrategy = "diff-algorithm=minimal" MergeStrategyOptionDiffAlgorithmHistogram MergeStrategy = "diff-algorithm=histogram" MergeStrategyOptionDiffAlgorithmMyers MergeStrategy = "diff-algorithm=myers" ) // MergeOpts are the git merge flags and arguments // See: https://git-scm.com/docs/git-merge type MergeOpts struct { // Options Autostash bool // --autostash DoCommit bool // --commit FF bool // --ff FFOnly bool // --ff-onnly IntoName string // --into-name Log uint // --log= Message string // -m NoAutostash bool // --no-autostash NoDoCommit bool // --no-commit NoFF bool // --no-ff NoLog bool // --no-log NoOverwrite bool // --no-overwrite NoProgress bool // --no-progress NoRebase bool // --no-rebase NoReReReAutoupdate bool // --no-rerere-autoupdate NoSquash bool // --no-squash NoStat bool // --no-stat NoVerify bool // --no-verify Progress bool // --progress Quiet bool // --quiet ReReReAutoupdate bool // --rerere-autoupdate Squash bool // --squash Stat bool // --stat Strategy MergeStrategy // --stategy= StragegyOptions []MergeStrategyOption // --strategy-option=