#20549: Fixed. Installed files from package have same last write time.

This commit is contained in:
Daniel Dabrowski
2014-03-11 13:17:23 +01:00
committed by Sebastien Ros
parent b7de2b702e
commit 69ce0d1de4
4 changed files with 19 additions and 1 deletions

View File

@@ -10,6 +10,7 @@ using Orchard.Environment.Extensions.Models;
using Orchard.FileSystems.VirtualPath; using Orchard.FileSystems.VirtualPath;
using Orchard.FileSystems.WebSite; using Orchard.FileSystems.WebSite;
using Orchard.Packaging.Services; using Orchard.Packaging.Services;
using Orchard.Services;
using Orchard.Tests.Stubs; using Orchard.Tests.Stubs;
using Orchard.UI.Notify; using Orchard.UI.Notify;
using IPackageBuilder = Orchard.Packaging.Services.IPackageBuilder; using IPackageBuilder = Orchard.Packaging.Services.IPackageBuilder;
@@ -39,6 +40,7 @@ namespace Orchard.Tests.Modules.Packaging.Services {
builder.RegisterType<DefaultOrchardFrameworkAssemblies>().As<IOrchardFrameworkAssemblies>(); builder.RegisterType<DefaultOrchardFrameworkAssemblies>().As<IOrchardFrameworkAssemblies>();
builder.RegisterType<InMemoryWebSiteFolder>().As<IWebSiteFolder>() builder.RegisterType<InMemoryWebSiteFolder>().As<IWebSiteFolder>()
.As<InMemoryWebSiteFolder>().InstancePerLifetimeScope(); .As<InMemoryWebSiteFolder>().InstancePerLifetimeScope();
builder.RegisterType<StubClock>().As<IClock>();
} }
[SetUp] [SetUp]

View File

@@ -10,6 +10,7 @@ using Orchard.Environment.Extensions.Models;
using Orchard.FileSystems.VirtualPath; using Orchard.FileSystems.VirtualPath;
using Orchard.FileSystems.WebSite; using Orchard.FileSystems.WebSite;
using Orchard.Packaging.Services; using Orchard.Packaging.Services;
using Orchard.Services;
using Orchard.Tests.Stubs; using Orchard.Tests.Stubs;
using Orchard.UI.Notify; using Orchard.UI.Notify;
using IPackageBuilder = Orchard.Packaging.Services.IPackageBuilder; using IPackageBuilder = Orchard.Packaging.Services.IPackageBuilder;
@@ -39,6 +40,7 @@ namespace Orchard.Tests.Modules.Packaging.Services {
builder.RegisterType<DefaultOrchardFrameworkAssemblies>().As<IOrchardFrameworkAssemblies>(); builder.RegisterType<DefaultOrchardFrameworkAssemblies>().As<IOrchardFrameworkAssemblies>();
builder.RegisterType<InMemoryWebSiteFolder>().As<IWebSiteFolder>() builder.RegisterType<InMemoryWebSiteFolder>().As<IWebSiteFolder>()
.As<InMemoryWebSiteFolder>().InstancePerLifetimeScope(); .As<InMemoryWebSiteFolder>().InstancePerLifetimeScope();
builder.RegisterType<StubClock>().As<IClock>();
} }
[SetUp] [SetUp]

View File

@@ -10,6 +10,7 @@ namespace Orchard.Packaging.Services {
private const string NetFrameworkIdentifier = ".NETFramework"; private const string NetFrameworkIdentifier = ".NETFramework";
private const string BinDir = "bin"; private const string BinDir = "bin";
private readonly string _root; private readonly string _root;
private DateTime? _writeTimeUtcForAddedFiles;
public FileBasedProjectSystem(string root) { public FileBasedProjectSystem(string root) {
if (String.IsNullOrEmpty(root)) { if (String.IsNullOrEmpty(root)) {
@@ -61,6 +62,10 @@ namespace Orchard.Packaging.Services {
using (Stream outputStream = File.Create(fullPath)) { using (Stream outputStream = File.Create(fullPath)) {
stream.CopyTo(outputStream); stream.CopyTo(outputStream);
} }
if (_writeTimeUtcForAddedFiles.HasValue) {
File.SetLastWriteTimeUtc(fullPath, _writeTimeUtcForAddedFiles.Value);
}
} }
public void DeleteFile(string path) { public void DeleteFile(string path) {
@@ -172,6 +177,10 @@ namespace Orchard.Packaging.Services {
return true; return true;
} }
public void OverwriteLastWriteTimeUtcForAddedFiles(DateTime dateTime) {
_writeTimeUtcForAddedFiles = dateTime;
}
protected string MakeRelativePath(string fullPath) { protected string MakeRelativePath(string fullPath) {
return fullPath.Substring(Root.Length).TrimStart(Path.DirectorySeparatorChar); return fullPath.Substring(Root.Length).TrimStart(Path.DirectorySeparatorChar);
} }

View File

@@ -9,6 +9,7 @@ using Orchard.Localization;
using Orchard.Logging; using Orchard.Logging;
using Orchard.Packaging.Extensions; using Orchard.Packaging.Extensions;
using Orchard.Packaging.Models; using Orchard.Packaging.Models;
using Orchard.Services;
using Orchard.UI; using Orchard.UI;
using Orchard.UI.Notify; using Orchard.UI.Notify;
using NuGetPackageManager = NuGet.PackageManager; using NuGetPackageManager = NuGet.PackageManager;
@@ -23,17 +24,20 @@ namespace Orchard.Packaging.Services {
private readonly IVirtualPathProvider _virtualPathProvider; private readonly IVirtualPathProvider _virtualPathProvider;
private readonly IExtensionManager _extensionManager; private readonly IExtensionManager _extensionManager;
private readonly IFolderUpdater _folderUpdater; private readonly IFolderUpdater _folderUpdater;
private readonly IClock _clock;
public PackageInstaller( public PackageInstaller(
INotifier notifier, INotifier notifier,
IVirtualPathProvider virtualPathProvider, IVirtualPathProvider virtualPathProvider,
IExtensionManager extensionManager, IExtensionManager extensionManager,
IFolderUpdater folderUpdater) { IFolderUpdater folderUpdater,
IClock clock) {
_notifier = notifier; _notifier = notifier;
_virtualPathProvider = virtualPathProvider; _virtualPathProvider = virtualPathProvider;
_extensionManager = extensionManager; _extensionManager = extensionManager;
_folderUpdater = folderUpdater; _folderUpdater = folderUpdater;
_clock = clock;
T = NullLocalizer.Instance; T = NullLocalizer.Instance;
Logger = Logging.NullLogger.Instance; Logger = Logging.NullLogger.Instance;
@@ -147,6 +151,7 @@ namespace Orchard.Packaging.Services {
: packageRepository; : packageRepository;
var project = new FileBasedProjectSystem(targetPath) { Logger = logger }; var project = new FileBasedProjectSystem(targetPath) { Logger = logger };
project.OverwriteLastWriteTimeUtcForAddedFiles(_clock.UtcNow);
var projectManager = new ProjectManager( var projectManager = new ProjectManager(
sourceRepository, // source repository for the package to install sourceRepository, // source repository for the package to install
new DefaultPackagePathResolver(targetPath), new DefaultPackagePathResolver(targetPath),