diff options
author | Paulo Gomes <paulo.gomes@suse.com> | 2024-03-09 09:00:21 +0000 |
---|---|---|
committer | Paulo Gomes <paulo.gomes@suse.com> | 2024-03-09 09:00:21 +0000 |
commit | 3ee5bc9dd308a5503d60cc26d17d7f10df28c37a (patch) | |
tree | cdc736274162b804e12d4bd55617b5811d470248 /options.go | |
parent | 4bed23037f0e374d85bce1506e9df98ce0cfcd32 (diff) | |
download | go-git-3ee5bc9dd308a5503d60cc26d17d7f10df28c37a.tar.gz |
git: Implement Merge function with initial FastForwardMerge support
Introduces the Merge function for merging branches in the codebase.
Currently, the function only supports FastForwardMerge strategy, meaning it
can efficiently update the target branch pointer if the source branch history
is a linear descendant.
Support for additional merge strategies (e.g., three-way merge) will be added
in future commits.
Signed-off-by: Paulo Gomes <paulo.gomes@suse.com>
Diffstat (limited to 'options.go')
-rw-r--r-- | options.go | 20 |
1 files changed, 16 insertions, 4 deletions
@@ -89,13 +89,25 @@ type CloneOptions struct { Shared bool } -// MergeOptions describes how a merge should be erformed +// MergeOptions describes how a merge should be performed. type MergeOptions struct { - // Requires a merge to be fast forward only. If this is true, then a merge will - // throw an error if ff is not possible. - FFOnly bool + // Strategy defines the merge strategy to be used. + Strategy MergeStrategy } +// MergeStrategy represents the different types of merge strategies. +type MergeStrategy int8 + +const ( + // FastForwardMerge represents a Git merge strategy where the current + // branch can be simply updated to point to the HEAD of the branch being + // merged. This is only possible if the history of the branch being merged + // is a linear descendant of the current branch, with no conflicting commits. + // + // This is the default option. + FastForwardMerge MergeStrategy = iota +) + // Validate validates the fields and sets the default values. func (o *CloneOptions) Validate() error { if o.URL == "" { |