code: func (hs *httpSourceHandler) urlHash() (digest.Digest, error) {
  	dt, err := json.Marshal(struct {
  		Filename       string
  		Perm, UID, GID int
  	}{
  		Filename: getFileName(hs.src.URL, hs.src.Filename, nil),
  		Perm:     hs.src.Perm,
  		UID:      hs.src.UID,
  		GID:      hs.src.GID,
  	})
  	if err != nil {
  		return "", err
  	}
  	return digest.FromBytes(dt), nil
  }
docs: // urlHash is internal hash the etag is stored by that doesn't leak outside
  // this package.