in iterator/git.go [155:191]
func (obj *Git) Validate() error {
if obj.Logf == nil {
return fmt.Errorf("the Logf function must be specified")
}
if err := obj.Prefix.Validate(); err != nil {
return err
}
if obj.URL == "" {
return fmt.Errorf("must specify a URL")
}
if _, err := url.Parse(obj.URL); err != nil {
return err // not that url.Parse ever really errors :/
}
if obj.Hash != "" && !plumbing.IsHash(obj.Hash) { // IsHash checks if len is 40
return fmt.Errorf("provided hash is invalid")
}
// TODO: can we validate ref somehow?
if obj.Rev != "" {
if err := obj.validateRef(); err != nil {
return err
}
}
// At most one must be true.
a := obj.Hash != ""
b := obj.Ref != ""
c := obj.Rev != ""
if (a || b || c) && !xor(a, b, c) {
return fmt.Errorf("you may specify Hash, Ref or Rev, but not more than one")
}
return nil
}