GitSharp.Core.Repository.StripWorkDir C# (CSharp) Method

StripWorkDir() public static method

Strip work dir and return normalized repository path
public static StripWorkDir ( FileSystemInfo workDir, FileSystemInfo file ) : string
workDir FileSystemInfo Work directory
file FileSystemInfo File whose path shall be stripp off it's workdir
return string
        public static string StripWorkDir(FileSystemInfo workDir, FileSystemInfo file)
        {
            string filePath = file.DirectoryName();
            string workDirPath = workDir.DirectoryName();

            if (filePath.Length <= workDirPath.Length ||
                filePath[workDirPath.Length] != Path.DirectorySeparatorChar ||
                !filePath.StartsWith(workDirPath))
            {
                FileSystemInfo absWd = new DirectoryInfo(workDir.DirectoryName());
                FileSystemInfo absFile = new FileInfo(file.FullName);

                if (absWd.FullName == workDir.FullName && absFile.FullName == file.FullName)
                {
                    return string.Empty;
                }

                return StripWorkDir(absWd, absFile);
            }

            string relName = filePath.Substring(workDirPath.Length + 1);

            if (Path.DirectorySeparatorChar != '/')
            {
                relName = relName.Replace(Path.DirectorySeparatorChar, '/');
            }

            return relName;
        }

Usage Example

Example #1
0
        private byte[] MakeKey(FileSystemInfo wd, FileSystemInfo f)
        {
            if (!string.IsNullOrEmpty(f.DirectoryName()) &&
                wd.IsDirectory() && wd.Exists &&
                !f.DirectoryName().StartsWith(wd.DirectoryName()))
            {
                throw new Exception("Path is not in working dir");
            }

            string relName = Repository.StripWorkDir(wd, f);

            return(Core.Repository.GitInternalSlash(Constants.encode(relName)));
        }
All Usage Examples Of GitSharp.Core.Repository::StripWorkDir