public override FileSystemResult UpdatePlaceholderIfNeeded( string relativePath, DateTime creationTime, DateTime lastAccessTime, DateTime lastWriteTime, DateTime changeTime, uint fileAttributes, long endOfFile, string shaContentId, UpdatePlaceholderType updateFlags, out UpdateFailureReason failureReason) { UpdateFailureCause failureCause = UpdateFailureCause.NoFailure; // TODO(Mac): Add functional tests that include: // - Mode + content changes between commits // - Mode only changes (without any change to content, see issue #223) ushort fileMode = this.FileSystemCallbacks.GitIndexProjection.GetFilePathMode(relativePath); Result result = this.virtualizationInstance.UpdatePlaceholderIfNeeded( relativePath, PlaceholderVersionId, ToVersionIdByteArray(ConvertShaToContentId(shaContentId)), (ulong)endOfFile, fileMode, (UpdateType)updateFlags, out failureCause); failureReason = (UpdateFailureReason)failureCause; return(new FileSystemResult(ResultToFSResult(result), unchecked ((int)result))); }
public override FileSystemResult DeleteFile(string relativePath, UpdatePlaceholderType updateFlags, out UpdateFailureReason failureReason) { UpdateFailureCause failureCause; Result result = this.virtualizationInstance.DeleteFile(relativePath, (UpdateType)updateFlags, out failureCause); failureReason = (UpdateFailureReason)failureCause; return(new FileSystemResult(ResultToFSResult(result), unchecked ((int)result))); }
public abstract FileSystemResult UpdatePlaceholderIfNeeded( string relativePath, DateTime creationTime, DateTime lastAccessTime, DateTime lastWriteTime, DateTime changeTime, uint fileAttributes, long endOfFile, string shaContentId, UpdatePlaceholderType updateFlags, out UpdateFailureReason failureReason);
public override FileSystemResult UpdatePlaceholderIfNeeded( string relativePath, DateTime creationTime, DateTime lastAccessTime, DateTime lastWriteTime, DateTime changeTime, uint fileAttributes, long endOfFile, string shaContentId, UpdatePlaceholderType updateFlags, out UpdateFailureReason failureReason) { UpdateFailureCause failureCause = UpdateFailureCause.NoFailure; Result result = this.virtualizationInstance.UpdatePlaceholderIfNeeded( relativePath, GetPlaceholderVersionId(), ConvertShaToContentId(shaContentId), (ulong)endOfFile, (UpdateType)updateFlags, out failureCause); failureReason = (UpdateFailureReason)failureCause; return(new FileSystemResult(ResultToFSResult(result), unchecked ((int)result))); }
public abstract FileSystemResult DeleteFile(string relativePath, UpdatePlaceholderType updateFlags, out UpdateFailureReason failureReason);
/// <param name="endOfFile">Length of the file, not required on the Mac platform</param> public override FileSystemResult UpdatePlaceholderIfNeeded( string relativePath, DateTime creationTime, DateTime lastAccessTime, DateTime lastWriteTime, DateTime changeTime, FileAttributes fileAttributes, long endOfFile, string shaContentId, UpdatePlaceholderType updateFlags, out UpdateFailureReason failureReason) { UpdateFailureCause failureCause = UpdateFailureCause.NoFailure; // TODO(#223): Add functional tests that include: // - Mode + content changes between commits // - Mode only changes (without any change to content, see issue #223) GitIndexProjection.FileType fileType; ushort fileMode; this.FileSystemCallbacks.GitIndexProjection.GetFileTypeAndMode(relativePath, out fileType, out fileMode); if (fileType == GitIndexProjection.FileType.Regular) { Result result = this.virtualizationInstance.UpdatePlaceholderIfNeeded( relativePath, PlaceholderVersionId, ToVersionIdByteArray(ConvertShaToContentId(shaContentId)), fileMode, (UpdateType)updateFlags, out failureCause); failureReason = (UpdateFailureReason)failureCause; return(new FileSystemResult(ResultToFSResult(result), unchecked ((int)result))); } else if (fileType == GitIndexProjection.FileType.SymLink) { string symLinkTarget; if (this.TryGetSymLinkTarget(shaContentId, out symLinkTarget)) { Result result = this.virtualizationInstance.ReplacePlaceholderFileWithSymLink( relativePath, symLinkTarget, (UpdateType)updateFlags, out failureCause); this.FileSystemCallbacks.OnFileSymLinkCreated(relativePath); failureReason = (UpdateFailureReason)failureCause; return(new FileSystemResult(ResultToFSResult(result), unchecked ((int)result))); } EventMetadata metadata = this.CreateEventMetadata(relativePath); metadata.Add(nameof(shaContentId), shaContentId); this.Context.Tracer.RelatedError(metadata, $"{nameof(this.UpdatePlaceholderIfNeeded)}: Failed to read contents of symlink object"); failureReason = UpdateFailureReason.NoFailure; return(new FileSystemResult(FSResult.IOError, 0)); } else { EventMetadata metadata = this.CreateEventMetadata(relativePath); metadata.Add(nameof(fileType), fileType); metadata.Add(nameof(fileMode), fileMode); this.Context.Tracer.RelatedError(metadata, $"{nameof(this.UpdatePlaceholderIfNeeded)}: Unsupported fileType"); failureReason = UpdateFailureReason.NoFailure; return(new FileSystemResult(FSResult.IOError, 0)); } }
public override FileSystemResult UpdatePlaceholderIfNeeded(string relativePath, DateTime creationTime, DateTime lastAccessTime, DateTime lastWriteTime, DateTime changeTime, uint fileAttributes, long endOfFile, string shaContentId, UpdatePlaceholderType updateFlags, out UpdateFailureReason failureReason) { throw new NotImplementedException(); }
public override FileSystemResult DeleteFile(string relativePath, UpdatePlaceholderType updateFlags, out UpdateFailureReason failureReason) { throw new NotImplementedException(); }