Sep.Git.Tfs.Core.GitTfsRemote.GetPathInGitRepo C# (CSharp) Method

GetPathInGitRepo() public method

public GetPathInGitRepo ( string tfsPath ) : string
tfsPath string
return string
        public string GetPathInGitRepo(string tfsPath)
        {
            if (tfsPath == null) return null;

            if (!IsSubtreeOwner)
            {
                if (!tfsPath.StartsWith(TfsRepositoryPath, StringComparison.InvariantCultureIgnoreCase)) return null;
                if (TfsRepositoryPath == GitTfsConstants.TfsRoot)
                {
                    tfsPath = tfsPath.Substring(TfsRepositoryPath.Length);
                }
                else
                {
                    if (tfsPath.Length > TfsRepositoryPath.Length && tfsPath[TfsRepositoryPath.Length] != '/')
                        return null;
                    tfsPath = tfsPath.Substring(TfsRepositoryPath.Length);
                }
            }
            else
            {
                //look through the subtrees
                var p = _globals.Repository.GetSubtrees(this)
                            .Where(x => x.IsSubtree)
                            .FirstOrDefault(x => tfsPath.StartsWith(x.TfsRepositoryPath, StringComparison.InvariantCultureIgnoreCase)
                                && (tfsPath.Length == x.TfsRepositoryPath.Length || tfsPath[x.TfsRepositoryPath.Length] == '/'));
                if (p == null) return null;

                tfsPath = p.GetPathInGitRepo(tfsPath);

                //we must prepend the prefix in order to get the correct directory
                if (tfsPath.StartsWith("/"))
                    tfsPath = p.Prefix + tfsPath;
                else
                    tfsPath = p.Prefix + "/" + tfsPath;
            }

            while (tfsPath.StartsWith("/"))
                tfsPath = tfsPath.Substring(1);
            return tfsPath;
        }