func newIssuePathFromAbsPath(root, path string) (IssuePath, error) {
	resolvedRoot, err := filepath.EvalSymlinks(root)
	if err != nil {
		return newIssuePath(root, path), err
	}

	resolvedPath, err := filepath.EvalSymlinks(path)
	if err != nil {
		return newIssuePath(root, path), err
	}

	if !filepath.IsAbs(path) {
		return newIssuePath(resolvedRoot, resolvedPath), nil
	}

	relPath, err := filepath.Rel(resolvedRoot, resolvedPath)
	return newIssuePath(resolvedRoot, relPath), err
}
func newIssuePathFromAbsPath(root, path string) (IssuePath, error) {
	resolvedRoot, err := filepath.EvalSymlinks(root)
	if err != nil {
		return newIssuePath(root, path), err
	}

	resolvedPath, err := filepath.EvalSymlinks(path)
	if err != nil {
		return newIssuePath(root, path), err
	}

	if !filepath.IsAbs(path) {
		return newIssuePath(resolvedRoot, resolvedPath), nil
	}

	relPath, err := filepath.Rel(resolvedRoot, resolvedPath)
	return newIssuePath(resolvedRoot, relPath), err
}
func newIssuePathFromAbsPath ( root , path string ) ( IssuePath , error ) { resolvedRoot , err := filepath . EvalSymlinks ( root ) if err != nil { return newIssuePath ( root , path ) , err } resolvedPath , err := filepath . EvalSymlinks ( path ) if err != nil { return newIssuePath ( root , path ) , err } if ! filepath . IsAbs ( path ) { return newIssuePath ( resolvedRoot , resolvedPath ) , nil } relPath , err := filepath . Rel ( resolvedRoot , resolvedPath ) return newIssuePath ( resolvedRoot , relPath ) , err }
// newIssuePathFromAbsPath returns a new issuePath from a path that may be
// an absolute path. root must be an absolute path.
newIssuePathFromAbsPath returns a new issuePath from a path that may be an absolute path . root must be an absolute path .