豆豆友情提示:这是一个非官方 GitHub 代理镜像,主要用于网络测试或访问加速。请勿在此进行登录、注册或处理任何敏感信息。进行这些操作请务必访问官方网站 github.com。 Raw 内容也通过此代理提供。
Skip to content

Commit 1ca6cc7

Browse files
committed
Re-enable support for deterministic pack
But don't enable the fixed Minimum Zip format timestamps; that can lead to issues we are not ready to handle yet. See: NuGet/Home#8601
1 parent 0e6ee57 commit 1ca6cc7

File tree

5 files changed

+12
-6
lines changed

5 files changed

+12
-6
lines changed

src/NuGet.Clients/NuGet.CommandLine/Commands/PackCommand.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ public Dictionary<string, string> Properties
103103
[Option(typeof(NuGetCommand), "PackageCommandConfigFile")]
104104
public new string ConfigFile { get; set; }
105105

106+
[Option(typeof(NuGetCommand), "PackageCommandDeterministic")]
107+
public bool Deterministic { get; set; }
108+
106109
public override void ExecuteCommand()
107110
{
108111
var packArgs = new PackArgs();
@@ -111,6 +114,7 @@ public override void ExecuteCommand()
111114
packArgs.OutputDirectory = OutputDirectory;
112115
packArgs.BasePath = BasePath;
113116
packArgs.MsBuildDirectory = new Lazy<string>(() => MsBuildUtility.GetMsBuildDirectoryFromMsBuildPath(MSBuildPath, MSBuildVersion, Console).Value.Path);
117+
packArgs.Deterministic = Deterministic;
114118

115119
if (!string.IsNullOrEmpty(PackagesDirectory))
116120
{

src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTaskLogic.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public PackArgs GetPackArgs(IPackTaskRequest<IMSBuildItem> request)
4242
BasePath = request.NuspecBasePath,
4343
NoPackageAnalysis = request.NoPackageAnalysis,
4444
NoDefaultExcludes = request.NoDefaultExcludes,
45+
Deterministic = request.Deterministic,
4546
WarningProperties = WarningProperties.GetWarningProperties(request.TreatWarningsAsErrors, request.WarningsAsErrors, request.NoWarn, request.WarningsNotAsErrors),
4647
PackTargetArgs = new MSBuildPackTargetArgs()
4748
};

src/NuGet.Core/NuGet.Packaging/PackageCreation/Authoring/PackageBuilder.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class PackageBuilder : IPackageMetadata
3434
internal const string ManifestRelationType = "manifest";
3535
private readonly bool _includeEmptyDirectories;
3636
private readonly bool _deterministic;
37+
private readonly bool _deterministicDateTime = false;
3738
private readonly ILogger _logger;
3839

3940
/// <summary>
@@ -118,7 +119,7 @@ private PackageBuilder(bool includeEmptyDirectories, bool deterministic)
118119
private PackageBuilder(bool includeEmptyDirectories, bool deterministic, ILogger logger)
119120
{
120121
_includeEmptyDirectories = includeEmptyDirectories;
121-
_deterministic = false; // fix in https://github.com/NuGet/Home/issues/8601
122+
_deterministic = deterministic;
122123
_logger = logger;
123124
Files = new Collection<IPackageFile>();
124125
DependencyGroups = new Collection<PackageDependencyGroup>();
@@ -1002,9 +1003,9 @@ public void PopulateFiles(string basePath, IEnumerable<ManifestFile> files)
10021003
private ZipArchiveEntry CreateEntry(ZipArchive package, string entryName, CompressionLevel compressionLevel)
10031004
{
10041005
var entry = package.CreateEntry(entryName, compressionLevel);
1005-
if (_deterministic)
1006+
if (_deterministicDateTime)
10061007
{
1007-
entry.LastWriteTime = ZipFormatMinDate;
1008+
entry.LastWriteTime = ZipFormatMinDate; // Or something better
10081009
}
10091010
return entry;
10101011
}
@@ -1060,7 +1061,7 @@ private SortedSet<string> WriteFiles(ZipArchive package, SortedSet<string> files
10601061
package,
10611062
file.Path,
10621063
stream,
1063-
lastWriteTime: _deterministic ? ZipFormatMinDate : file.LastWriteTime,
1064+
lastWriteTime: _deterministicDateTime ? ZipFormatMinDate : file.LastWriteTime,
10641065
warningMessage);
10651066
var fileExtension = Path.GetExtension(file.Path);
10661067

test/NuGet.Clients.Tests/NuGet.CommandLine.Test/NuGetPackCommandTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6296,7 +6296,7 @@ private static void VerifyNuspecRoundTrips(PackageArchiveReader nupkgReader, str
62966296
}
62976297
}
62986298

6299-
[Fact(Skip = "https://github.com/NuGet/Home/issues/8601")]
6299+
[Fact]
63006300
public void PackCommand_Deterministic_MultiplePackInvocations_CreateIdenticalPackages()
63016301
{
63026302
var nugetexe = Util.GetNuGetExePath();

test/NuGet.Core.FuncTests/Dotnet.Integration.Test/PackCommandTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4951,7 +4951,7 @@ public void PackCommand_WithGeneratePackageOnBuildSet_CanPublish()
49514951
}
49524952
}
49534953

4954-
[PlatformFact(Platform.Windows, Skip = "https://github.com/NuGet/Home/issues/8601")]
4954+
[PlatformFact(Platform.Windows)]
49554955
public void PackCommand_Deterministic_MultiplePackInvocations_CreateIdenticalPackages()
49564956
{
49574957
using (var testDirectory = _dotnetFixture.CreateTestDirectory())

0 commit comments

Comments
 (0)