コード例 #1
0
        public static void DeleteProjectItem(Project project, string relativePathAndName, bool deleteFile, out FileStateInfo fileStateInfo)
        {
            fileStateInfo           = new FileStateInfo();
            fileStateInfo.FileState = FileStateConstants.Failed;
            var currentProjectFile = new FileInfo(project.FileName);

            relativePathAndName = relativePathAndName.TrimStart(new char[] { Path.DirectorySeparatorChar });
            var fullName = Path.Combine(currentProjectFile.Directory.FullName, relativePathAndName);

            fullName = fullName.Replace($"{Path.DirectorySeparatorChar}{Path.DirectorySeparatorChar}", $"{Path.DirectorySeparatorChar}");
            fileStateInfo.FileName = fullName;
            var newFile = new FileInfo(fullName);

            fileStateInfo.FileState = FileStateConstants.Failed;
            if (newFile.Exists)
            {
                var p = FindProjectItemByFileName(project.ProjectItems, fullName);
                if (p != null)
                {
                    p.Remove();
                }
                if (deleteFile)
                {
                    try
                    {
                        File.Delete(fullName);
                    }
                    catch { }
                }
            }
        }
コード例 #2
0
 public ProjectItem AddProjectItem(ProjectItem parent, string fileName, out FileStateInfo fileStateInfo)
 {
     fileStateInfo = new FileStateInfo();
     try
     {
         fileStateInfo.FileName = fileName;
         var newItem = parent.ProjectItems.AddFromFileCopy(fileName);
         fileStateInfo.FileState = FileStateConstants.Success;
         return(newItem);
     }
     catch (System.Runtime.InteropServices.COMException ex)
     {
         if (ex.Message.ToLower().Contains("already exists"))
         {
             fileStateInfo.FileState = FileStateConstants.Skipped;
         }
         else
         {
             fileStateInfo.FileState = FileStateConstants.Failed;
         }
         return(null);
     }
     catch (Exception ex)
     {
         fileStateInfo.FileState = FileStateConstants.Failed;
         throw;
     }
 }
コード例 #3
0
        public static bool CheckFile(String path)
        {
            if (CurrentContentFile == null)
            {
                return(true);
            }
            string relPath = path.Replace(RootDirectory, String.Empty);

            FileStateInfo[] array = ((IEnumerable <FileStateInfo>)CurrentContentFile.Files).Select(f => f).Where(f => f.FileName == relPath).ToArray();
            if (array.Length == 0)
            {
                return(true);
            }
            FileStateInfo fileStateInfo = array[0];
            FileInfo      fileInfo      = new FileInfo(path);
            long          length        = fileInfo.Length;

            if (fileStateInfo.FileSize != length)
            {
                return(false);
            }
            DateTime lastWriteTimeUtc = fileInfo.LastWriteTimeUtc;

            if (fileStateInfo.LastWrite != lastWriteTimeUtc)
            {
                return(false);
            }
            using (FileStream fileStream = fileInfo.OpenRead())
            {
                byte[] hash = new MD5CryptoServiceProvider().ComputeHash(fileStream);
                fileStream.Close();
                return(fileStateInfo.MD5Hash == hash);
            }
        }
コード例 #4
0
ファイル: GeneratorHelper.cs プロジェクト: deus-amd/nHydrate
        private void projectItemGenerator_ProjectItemDeleted(object sender, ProjectItemDeletedEventArgs e)
        {
            try
            {
                var project = EnvDTEHelper.Instance.GetProject(e.ProjectName);
                var parent  = EnvDTEHelper.Instance.GetProjectItem(e.ProjectName, e.ParentItemName, e.ParentItemType);

                var fileStateInfo = new FileStateInfo();
                if (e.ParentItemName != string.Empty)
                {
                    EnvDTEHelper.Instance.DeleteProjectItem(parent, e.ProjectItemName, out fileStateInfo);
                }
                else
                {
                    EnvDTEHelper.DeleteProjectItem(project, e.ProjectItemName, out fileStateInfo);
                }
                Application.DoEvents();

                //Write Log
                nHydrateLog.LogInfo("Project Item Deleted: {0}", e.ProjectItemName);
                e.FileState = fileStateInfo.FileState;
                e.FullName  = fileStateInfo.FileName;
                //this.OnProjectItemGenerated(sender, e);
            }
            catch (Exception ex)
            {
                //this.OnProjectItemGeneratedError(this, e);
                nHydrateLog.LogWarning(ex);
            }
        }
コード例 #5
0
        public ProjectItem AddProjectItem(Project project, ProjectItem parent, string fileName, string content, bool overwrite, out FileStateInfo fileStateInfo)
        {
            try
            {
                BuildCache(project);

                fileStateInfo = new FileStateInfo();
                var fi       = new FileInfo(this.GetFileName(parent));
                var fullName = Path.Combine(fi.DirectoryName, fileName);
                fileStateInfo.FileName = fullName;
                try
                {
                    var fi2 = new FileInfo(fullName);
                    if (File.Exists(fullName) && !overwrite)
                    {
                        fileStateInfo.FileState = FileStateConstants.Skipped;
                        return(null);
                    }
                    else if (fi2.Exists && (fi2.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
                    {
                        fileStateInfo.FileState = FileStateConstants.Failed;
                        return(null);
                    }
                    else
                    {
                        File.WriteAllText(fullName, content);
                        fileStateInfo.FileState = FileStateConstants.Success;
                    }
                }
                catch (Exception ex)
                {
                    fileStateInfo.FileState = FileStateConstants.Failed;
                    //GlobalHelper.ShowError(ex);
                }

                ProjectItem newItem = null;
                if (_projectCache[project].Select(x => x.Name).Contains(fullName.ToLower()))
                {
                    //Do Nothing
                }
                else
                {
                    if (_projectItemCache.ContainsKey(fullName))
                    {
                        newItem = _projectItemCache[fullName];
                    }
                    else
                    {
                        newItem = parent.ProjectItems.AddFromFile(fullName);
                    }
                }

                return(newItem);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
コード例 #6
0
        public ProjectItem AddFileAsProjectItem(Project project, string fileName, string relativePathAndName, bool overwrite, out FileStateInfo fileStateInfo)
        {
            try
            {
                fileStateInfo           = new FileStateInfo();
                fileStateInfo.FileState = FileStateConstants.Failed;
                FileInfo newFile = null;
                if (project.Kind == Constants.vsProjectKindUnmodeled)
                {
                    var applicationObject = (DTE)EnvDTEHelper.Instance._applicationObject;
                    //Handle on Solution Explorer window
                    var slnExplorer  = applicationObject.Windows.Item(Constants.vsWindowKindSolutionExplorer);
                    var slnHierarchy = (UIHierarchy)slnExplorer.Object;
                    slnExplorer.Activate();
                    var dbProject = EnvDTEHelper.Instance.Find(project);
                    dbProject.Select(vsUISelectionType.vsUISelectionTypeSelect);
                }
                else
                {
                    var currentProjectFile = new FileInfo(project.FileName);
                    var fullName           = StringHelper.EnsureDirectorySeparatorAtEnd(currentProjectFile.Directory.FullName) + relativePathAndName;
                    fullName = fullName.Replace($"{Path.DirectorySeparatorChar}{Path.DirectorySeparatorChar}", $"{Path.DirectorySeparatorChar}");
                    fileStateInfo.FileName = fullName;
                    newFile = new FileInfo(fullName);
                    if (newFile.Exists && !overwrite)
                    {
                        fileStateInfo.FileState = FileStateConstants.Skipped;
                        return(null);
                    }
                    else if (newFile.Exists && (newFile.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
                    {
                        fileStateInfo.FileState = FileStateConstants.Failed;
                        return(null);
                    }
                    if (!newFile.Directory.Exists)
                    {
                        newFile.Directory.Create();
                    }

                    File.Copy(fileName, newFile.FullName);
                }

                try
                {
                    fileStateInfo.FileState = FileStateConstants.Success;
                    return(project.ProjectItems.AddFromFile(newFile.FullName));
                }
                catch (Exception ex)
                {
                    fileStateInfo.FileState = FileStateConstants.Failed;
                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
コード例 #7
0
        DateTime SelectFileTime(FileStateInfo info, FileTime fileTimeState)
        {
            switch (fileTimeState)
            {
            case FileTime.CheckIn:
                return(info.VersionDate);

            case FileTime.Modification:
                return(info.ModifiedOn);
            }
            return(DateTime.UtcNow);
        }
コード例 #8
0
        public void DeleteProjectItem(ProjectItem parent, string fileName, out FileStateInfo fileStateInfo)
        {
            fileStateInfo = new FileStateInfo();
            var fi       = new FileInfo(this.GetFileName(parent));
            var fullName = Path.Combine(fi.DirectoryName, fileName);

            fullName = fullName.Replace($"{Path.DirectorySeparatorChar}{Path.DirectorySeparatorChar}", $"{Path.DirectorySeparatorChar}");
            fileStateInfo.FileName = fullName;
            var p = parent.ProjectItems.Item(0);

            //var newItem = parent.ProjectItems.AddFromFile(fullName);
            fileStateInfo.FileState = FileStateConstants.Success;
        }
コード例 #9
0
 public bool GetLocalFileModified(FileStateInfo info, string localPath, string vcsPath, DateTime projectDate, out FileBaseInfoState fileState, DateTime lastWrite)
 {
     try {
         using (Stream fileStream = fileSystem.OpenRead(localPath)) {
             byte[] localHash  = DXVCSHelpers.GetHashMD5(fileStream);
             bool   hashEquals = DXVCSHelpers.BytesAreEquals(localHash, info.Hash);
             fileState = FileBaseInfoState.Modified;
             return(!hashEquals);
         }
     }
     catch (IOException) {
         fileState = FileBaseInfoState.Locked;
         return(false);
     }
 }
コード例 #10
0
            public static FileStateInfo FromFile(FileInfo info)
            {
                var result = new FileStateInfo();

                result.FileName  = info.FullName.Replace(HashGenerator.RootDirectory, "");
                result.FileSize  = info.Length;
                result.LastWrite = info.LastWriteTimeUtc;
                using (FileStream fileStream = info.OpenRead())
                {
                    byte[] hash = new MD5CryptoServiceProvider().ComputeHash(fileStream);
                    fileStream.Close();
                    result.MD5Hash = hash;
                }

                return(result);
            }
コード例 #11
0
        /// <summary>
        /// Just gen file with no project
        /// </summary>
        public void AddProjectItem(string fileContent, byte[] fileContentBinary, ProjectItemContentType contentType, string relativePathAndName, bool overwrite, out FileStateInfo fileStateInfo)
        {
            try
            {
                fileStateInfo           = new FileStateInfo();
                fileStateInfo.FileState = FileStateConstants.Failed;
                FileInfo newFile = null;

                var fullName = relativePathAndName;
                fullName = fullName.Replace($"{Path.DirectorySeparatorChar}{Path.DirectorySeparatorChar}", $"{Path.DirectorySeparatorChar}");
                fileStateInfo.FileName = fullName;
                newFile = new FileInfo(fullName);
                if (newFile.Exists && !overwrite)
                {
                    fileStateInfo.FileState = FileStateConstants.Skipped;
                }
                else
                {
                    if (!newFile.Directory.Exists)
                    {
                        newFile.Directory.Create();
                    }

                    if (contentType == ProjectItemContentType.String)
                    {
                        using (var sw = newFile.CreateText())
                        {
                            sw.Write(fileContent);
                        }
                    }
                    else
                    {
                        File.WriteAllBytes(newFile.FullName, fileContentBinary);
                    }

                    fileStateInfo.FileState = FileStateConstants.Success;
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
コード例 #12
0
        private static void SetFileStateInfoAttributes(XElement settingsGroup, FileStateInfo fileStateInfo)
        {
            foreach (var setting in settingsGroup.Elements())
            {
                if (string.Compare(setting.Name.LocalName, "Setting", StringComparison.InvariantCultureIgnoreCase) == 0)
                {
                    if (!setting.HasAttributes)
                    {
                        continue;
                    }

                    foreach (var attribute in setting.Attributes())
                    {
                        if (string.Compare(attribute.Name.LocalName, "Id", StringComparison.InvariantCultureIgnoreCase) == 0 &&
                            string.Compare(attribute.Value, "LatestServerVersionTimestamp",
                                           StringComparison.InvariantCultureIgnoreCase) == 0)
                        {
                            fileStateInfo.LatestServerVersionTimestamp = setting.Value;
                        }

                        if (string.Compare(attribute.Name.LocalName, "Id", StringComparison.InvariantCultureIgnoreCase) == 0 &&
                            string.Compare(attribute.Value, "LatestServerVersionNumber", StringComparison.InvariantCultureIgnoreCase) == 0)
                        {
                            fileStateInfo.LatestServerVersionNumber = Convert.ToInt32(setting.Value);
                        }

                        if (string.Compare(attribute.Name.LocalName, "Id", StringComparison.InvariantCultureIgnoreCase) == 0 &&
                            string.Compare(attribute.Value, "CheckedOutTo", StringComparison.InvariantCultureIgnoreCase) == 0)
                        {
                            fileStateInfo.CheckedOutTo = setting.Value;
                        }

                        if (string.Compare(attribute.Name.LocalName, "Id", StringComparison.InvariantCultureIgnoreCase) == 0 &&
                            string.Compare(attribute.Value, "IsCheckedOutOnline", StringComparison.InvariantCultureIgnoreCase) == 0)
                        {
                            bool.TryParse(setting.Value, out var isCheckedOutOnline);
                            fileStateInfo.IsCheckedOutOnline = isCheckedOutOnline;
                        }
                    }
                }
            }
        }
コード例 #13
0
        private static FileStateInfo GetFileStateInfo(XElement settingBundle)
        {
            FileStateInfo fileStateInfo = null;

            foreach (var settingsGroup in settingBundle.Elements())
            {
                if (string.Compare(settingsGroup.Name.LocalName, "SettingsGroup", StringComparison.InvariantCultureIgnoreCase) == 0)
                {
                    if (!settingsGroup.HasAttributes)
                    {
                        return(fileStateInfo);
                    }

                    var settingsBundleId = GetSettingsBundleAttributeValue(settingsGroup, "Id");
                    if (settingsBundleId == "LanguageFileServerStateSettings")
                    {
                        fileStateInfo = new FileStateInfo();
                        SetFileStateInfoAttributes(settingsGroup, fileStateInfo);
                    }
                }
            }

            return(fileStateInfo);
        }
コード例 #14
0
ファイル: DXVcsRepository.cs プロジェクト: Xarlot/DXVcs2Git
 bool EqualsCheckOutParams(FileStateInfo fsi, FileLocation fl, out bool differentHost)
 {
     return EqualsCheckOutParams(fsi, fl.LocalPath, out differentHost);
 }
コード例 #15
0
 public FileDataLocation(string path, string localPath, FileStateInfo info, byte[] data)
     : base(path, localPath, info)
 {
     this.Data = data;
 }
コード例 #16
0
ファイル: GeneratorHelper.cs プロジェクト: deus-amd/nHydrate
        private void projectItemGenerator_ProjectItemGenerated(object sender, ProjectItemGeneratedEventArgs e)
        {
            //.NET is a single-threaded application so we much release to let the UI refresh sometimes.
            if (_doEventCount % 10 == 0)
            {
                Application.DoEvents();
            }
            _doEventCount++;

            try
            {
                const string solutionDirReplaceText = "$(solutiondir)";
                if (e.FullName != null && e.FullName.ToLower().Contains(solutionDirReplaceText))
                {
                    var ti = e.FullName.ToLower().IndexOf(solutionDirReplaceText);
                    e.FullName = e.FullName.Remove(ti, solutionDirReplaceText.Length).Insert(ti, EnvDTEHelper.Instance.SolutionDirectory.FullName);
                }
                if (e.ProjectItemName != null && e.ProjectItemName.ToLower().Contains(solutionDirReplaceText))
                {
                    var ti = e.ProjectItemName.ToLower().IndexOf(solutionDirReplaceText);
                    e.ProjectItemName = e.ProjectItemName.Remove(ti, solutionDirReplaceText.Length).Insert(ti, EnvDTEHelper.Instance.SolutionDirectory.FullName);
                }

                //Get the parent project if one exists
                Project     project = null;
                ProjectItem parent  = null;
                if (!string.IsNullOrEmpty(e.ProjectName))
                {
                    if (projectCache.ContainsKey(e.ProjectName))
                    {
                        var p = projectCache[e.ProjectName];
                        //Test this COM object to ensure it has not expired.
                        //If error, do nothing and the project will be requeried
                        try
                        {
                            var s = p.Name;
                            project = p;
                        }
                        catch (Exception)
                        {
                            //Do Nothing
                            projectCache.Remove(e.ProjectName);
                        }
                    }

                    var fromCache = true;
                    if (project == null)
                    {
                        fromCache = false;
                        project   = EnvDTEHelper.Instance.GetProject(e.ProjectName);
                        projectCache.Add(e.ProjectName, project);
                    }

                    parent = EnvDTEHelper.Instance.GetProjectItem(e.ProjectName, e.ParentItemName, e.ParentItemType);

                    //This should not happen. If do dump the cache project and requery
                    if (parent == null && fromCache)
                    {
                        if (projectCache.ContainsKey(e.ProjectName))
                        {
                            projectCache.Remove(e.ProjectName);
                        }
                        project = EnvDTEHelper.Instance.GetProject(e.ProjectName);
                        projectCache.Add(e.ProjectName, project);
                        parent = EnvDTEHelper.Instance.GetProjectItem(e.ProjectName, e.ParentItemName, e.ParentItemType);
                    }
                }

                var         fileStateInfo = new FileStateInfo();
                ProjectItem projectItem   = null;
                if (e.ParentItemName != string.Empty)
                {
                    if (e.ContentType == ProjectItemContentType.String)
                    {
                        projectItem = EnvDTEHelper.Instance.AddProjectItem(project, parent, e.ProjectItemName, e.ProjectItemContent, e.Overwrite, out fileStateInfo);
                    }
                    else
                    {
                        projectItem = EnvDTEHelper.Instance.AddProjectItem(parent, e.ProjectItemContent, out fileStateInfo);
                    }

                    if (fileStateInfo.FileState == EnvDTEHelper.FileStateConstants.Success)
                    {
                        EnvDTEHelper.SetProperties(projectItem, e.Properties);
                    }
                }
                else
                {
                    if (e.ContentType == ProjectItemContentType.String || e.ContentType == ProjectItemContentType.Binary)
                    {
                        if (project == null)
                        {
                            EnvDTEHelper.Instance.AddProjectItem(e.ProjectItemContent, e.ProjectItemBinaryContent, e.ContentType, e.ProjectItemName, e.Overwrite, out fileStateInfo);
                        }
                        else
                        {
                            projectItem = EnvDTEHelper.Instance.AddProjectItem(project, e.ProjectItemContent, e.ProjectItemBinaryContent, e.ContentType, e.ProjectItemName, e.Overwrite, out fileStateInfo);
                        }
                    }
                    else
                    {
                        projectItem = EnvDTEHelper.Instance.AddFileAsProjectItem(project, e.ProjectItemContent, e.ProjectItemName, e.Overwrite, out fileStateInfo);
                    }

                    if (fileStateInfo.FileState == EnvDTEHelper.FileStateConstants.Success)
                    {
                        EnvDTEHelper.SetProperties(projectItem, e.Properties);
                    }
                }

                //TEMP
                processedFiles.Add(fileStateInfo.FileName);
                //TEMP

                //Custom Tool Functionality
                if (e.RunCustomTool && projectItem != null)
                {
                    if (!string.IsNullOrEmpty(e.CustomToolName))
                    {
                        EnvDTEHelper.SetProperty(projectItem, "Generator", e.CustomToolName);
                        EnvDTEHelper.SetProperty(projectItem, "CustomTool", e.CustomToolName);
                    }

                    //Try to run the custom tool
                    try
                    {
                        var vsProjectItem = projectItem.Object as VSLangProj.VSProjectItem;
                        if (vsProjectItem != null)
                        {
                            vsProjectItem.RunCustomTool();
                        }
                    }
                    catch
                    {
                        //Do Nothing
                    }
                }

                #region Compute CRC
                //System.IO.StreamReader sr = System.IO.File.OpenText("");
                //nHydrate.Generator.Common.Util.CRC32HashAlgorithm hash = new CRC32HashAlgorithm();
                //byte[] arr = hash.ComputeHash(sr.BaseStream);
                //sr.Close();
                //XmlHelper.AddAttribute(newfileNode, "crc", "0");
                #endregion

                if (fileStateInfo.FileName == string.Empty)
                {
                    System.Diagnostics.Debug.Write(string.Empty);
                }
                if (fileStateInfo.FileState == EnvDTEHelper.FileStateConstants.Failed)
                {
                    System.Diagnostics.Debug.Write(string.Empty);
                }

                //Write Log
                nHydrateLog.LogInfo("Project Item Generated: {0}", e.ProjectItemName);
                e.FileState = fileStateInfo.FileState;
                e.FullName  = fileStateInfo.FileName;
                this.OnProjectItemGenerated(sender, e);
            }
            catch (Exception ex)
            {
                this.OnProjectItemGeneratedError(this, e);
                nHydrateLog.LogWarning(ex);
            }
        }
コード例 #17
0
        public ProjectItem AddProjectItem(Project project, string fileContent, byte[] fileContentBinary, ProjectItemContentType contentType, string relativePathAndName, bool overwrite, out FileStateInfo fileStateInfo)
        {
            try
            {
                BuildCache(project);

                fileStateInfo           = new FileStateInfo();
                fileStateInfo.FileState = FileStateConstants.Failed;
                FileInfo newFile = null;
                if (project.Kind == Constants.vsProjectKindUnmodeled)
                {
                    var applicationObject = (DTE)EnvDTEHelper.Instance._applicationObject;
                    //Handle on Solution Explorer window
                    var slnExplorer  = applicationObject.Windows.Item(Constants.vsWindowKindSolutionExplorer);
                    var slnHierarchy = (UIHierarchy)slnExplorer.Object;
                    slnExplorer.Activate();
                    var dbProject = EnvDTEHelper.Instance.Find(project);
                    dbProject.Select(vsUISelectionType.vsUISelectionTypeSelect);
                }
                else
                {
                    var currentProjectFile = new FileInfo(project.FileName);
                    var fullName           = StringHelper.EnsureDirectorySeparatorAtEnd(currentProjectFile.Directory.FullName) + relativePathAndName;
                    fullName = fullName.Replace($"{Path.DirectorySeparatorChar}{Path.DirectorySeparatorChar}", $"{Path.DirectorySeparatorChar}");
                    fileStateInfo.FileName = fullName;
                    newFile = new FileInfo(fullName);

                    if (newFile.Exists && !overwrite)
                    {
                        fileStateInfo.FileState = FileStateConstants.Skipped;

                        if (_projectCache[project].Select(x => x.Name).Contains(fullName.ToLower()))
                        {
                            //Do Nothing
                            return(null);
                        }
                        else
                        {
                            return(project.ProjectItems.AddFromFile(newFile.FullName));
                        }
                    }
                    else if (newFile.Exists && (newFile.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
                    {
                        fileStateInfo.FileState = FileStateConstants.Failed;
                        return(null);
                    }
                    if (!newFile.Directory.Exists)
                    {
                        newFile.Directory.Create();
                    }

                    if (contentType == ProjectItemContentType.String)
                    {
                        using (var sw = newFile.CreateText())
                        {
                            sw.Write(fileContent);
                        }
                    }
                    else
                    {
                        File.WriteAllBytes(newFile.FullName, fileContentBinary);
                    }
                }

                try
                {
                    fileStateInfo.FileState = FileStateConstants.Success;
                    if (_projectCache[project].Select(x => x.Name).Contains(newFile.FullName.ToLower()))
                    {
                        //Do Nothing
                        return(null);
                    }
                    else
                    {
                        return(project.ProjectItems.AddFromFile(newFile.FullName));
                    }
                }
                catch (Exception ex)
                {
                    fileStateInfo.FileState = FileStateConstants.Failed;
                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
コード例 #18
0
ファイル: DXVcsRepository.cs プロジェクト: Xarlot/DXVcs2Git
 public FileLocation(string path, string localPath, FileStateInfo info)
     : this(path, localPath)
 {
     this.Info = info;
 }
コード例 #19
0
ファイル: DXVcsRepository.cs プロジェクト: Xarlot/DXVcs2Git
 public FileDataLocation(string path, string localPath, FileStateInfo info, byte[] data)
     : base(path, localPath, info)
 {
     this.Data = data;
 }
コード例 #20
0
 bool EqualsCheckOutParams(FileStateInfo fsi, string localPath, out bool differentHost)
 {
     differentHost = !string.Equals(fsi.CheckOutHost, Environment.MachineName, StringComparison.CurrentCultureIgnoreCase);
     return(string.Equals(fsi.CheckOutFolder, HelperPaths.GetDirectory(localPath), StringComparison.CurrentCultureIgnoreCase) &&
            !differentHost);
 }
コード例 #21
0
 public FileLocation(string path, string localPath, FileStateInfo info) : this(path, localPath)
 {
     this.Info = info;
 }
コード例 #22
0
ファイル: DXVcsRepository.cs プロジェクト: Xarlot/DXVcs2Git
 public bool GetLocalFileModified(FileStateInfo info, string localPath, string vcsPath, DateTime projectDate, out FileBaseInfoState fileState, DateTime lastWrite)
 {
     try {
         using (Stream fileStream = fileSystem.OpenRead(localPath)) {
             byte[] localHash = DXVCSHelpers.GetHashMD5(fileStream);
             bool hashEquals = DXVCSHelpers.BytesAreEquals(localHash, info.Hash);
             fileState = FileBaseInfoState.Modified;
             return !hashEquals;
         }
     }
     catch (IOException) {
         fileState = FileBaseInfoState.Locked;
         return false;
     }
 }
コード例 #23
0
 bool EqualsCheckOutParams(FileStateInfo fsi, FileLocation fl, out bool differentHost)
 {
     return(EqualsCheckOutParams(fsi, fl.LocalPath, out differentHost));
 }
コード例 #24
0
ファイル: DXVcsRepository.cs プロジェクト: Xarlot/DXVcs2Git
 bool EqualsCheckOutParams(FileStateInfo fsi, string localPath, out bool differentHost)
 {
     differentHost = !string.Equals(fsi.CheckOutHost, Environment.MachineName, StringComparison.CurrentCultureIgnoreCase);
     return string.Equals(fsi.CheckOutFolder, HelperPaths.GetDirectory(localPath), StringComparison.CurrentCultureIgnoreCase)
         && !differentHost;
 }
コード例 #25
0
ファイル: DXVcsRepository.cs プロジェクト: Xarlot/DXVcs2Git
 DateTime SelectFileTime(FileStateInfo info, FileTime fileTimeState)
 {
     switch (fileTimeState) {
         case FileTime.CheckIn:
             return info.VersionDate;
         case FileTime.Modification:
             return info.ModifiedOn;
     }
     return DateTime.UtcNow;
 }
コード例 #26
0
        private static FileAssignmentInfo GetFileAssignmentInfo(XElement settingsGroup, FileStateInfo fileStateInfo)
        {
            var settingsBundleId = GetSettingsBundleAttributeValue(settingsGroup, "Id");

            if (settingsBundleId == "LanguageFileServerStateSettings")
            {
                return(null);
            }

            var fileAssignmentInfo = new FileAssignmentInfo
            {
                FileStateInfo = fileStateInfo,
                Phase         = GetFileAssignmentPhase(settingsBundleId)
            };

            if (string.IsNullOrEmpty(fileAssignmentInfo.Phase))
            {
                return(fileAssignmentInfo);
            }

            SetFileAssignmentAttributes(settingsGroup, fileAssignmentInfo);
            return(fileAssignmentInfo);
        }