code: func (h *stiGit) Clone(src *URL, target string, c CloneConfig) error {
  	var err error
  
  	source := *src
  
  	if cygpath.UsingCygwinGit {
  		if source.IsLocal() {
  			source.URL.Path, err = cygpath.ToSlashCygwin(source.LocalPath())
  			if err != nil {
  				return err
  			}
  		}
  
  		target, err = cygpath.ToSlashCygwin(target)
  		if err != nil {
  			return err
  		}
  	}
  
  	cloneArgs := append([]string{"clone"}, cloneConfigToArgs(c)...)
  	cloneArgs = append(cloneArgs, []string{source.StringNoFragment(), target}...)
  	stderr := &bytes.Buffer{}
  	opts := cmd.CommandOpts{Stderr: stderr}
  	err = h.RunWithOptions(opts, "git", cloneArgs...)
  	if err != nil {
  		glog.Errorf("Clone failed: source %s, target %s, with output %q", source, target, stderr.String())
  		return err
  	}
  	return nil
  }
docs: // Clone clones a git repository to a specific target directory.