49 lines
1011 B
Go
49 lines
1011 B
Go
package common
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
var UnknownParser error = errors.New("Cannot parse path")
|
|
|
|
type PRConflictResolver interface {
|
|
/*
|
|
stage_content -> { merge_base (stage1), head (stage2), merge_head (stage3) }
|
|
*/
|
|
Resolve(path string, stage_contents [3]string) error
|
|
}
|
|
|
|
var resolvers []PRConflictResolver = []PRConflictResolver{
|
|
&submodule_conflict_resolver{},
|
|
}
|
|
|
|
func ResolveMergeConflict(path string, file_contents [3]string) error {
|
|
for _, r := range resolvers {
|
|
if err := r.Resolve(path, file_contents); err != UnknownParser {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return UnknownParser
|
|
}
|
|
|
|
type submodule_conflict_resolver struct{}
|
|
|
|
func (*submodule_conflict_resolver) Resolve(path string, stage [3]string) error {
|
|
if path != ".gitmodules" {
|
|
return UnknownParser
|
|
}
|
|
return UnknownParser
|
|
}
|
|
|
|
type changes_file_resolver struct{}
|
|
|
|
func (*changes_file_resolver) Resolve(path string, stage [3]string) error {
|
|
if !strings.HasSuffix(path, ".changes") {
|
|
return UnknownParser
|
|
}
|
|
|
|
return UnknownParser
|
|
}
|