code: func (c *uploadContext) ensureFile(smudgePath, cleanPath, oid string) error {
  	if _, err := os.Stat(cleanPath); err == nil {
  		return nil
  	}
  
  	localPath := filepath.Join(cfg.LocalWorkingDir(), smudgePath)
  	file, err := os.Open(localPath)
  	if err != nil {
  		if c.allowMissing {
  			return nil
  		}
  		return errors.Wrapf(err, "Unable to find source for object %v (try running git lfs fetch --all)", oid)
  	}
  
  	defer file.Close()
  
  	stat, err := file.Stat()
  	if err != nil {
  		return err
  	}
  
  	cleaned, err := c.gitfilter.Clean(file, file.Name(), stat.Size(), nil)
  	if cleaned != nil {
  		cleaned.Teardown()
  	}
  
  	if err != nil {
  		return err
  	}
  	return nil
  }
docs: // ensureFile makes sure that the cleanPath exists before pushing it.  If it
  // does not exist, it attempts to clean it by reading the file at smudgePath.