func()

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
}