Skip to content

Commit 8d7977d

Browse files
authored
Update CopyOnWrite SDK documentation (#446)
1 parent 2e104ea commit 8d7977d

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/CopyOnWrite/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
[![NuGet](https://img.shields.io/nuget/v/Microsoft.Build.CopyOnWrite.svg)](https://www.nuget.org/packages/Microsoft.Build.CopyOnWrite)
33
[![NuGet](https://img.shields.io/nuget/dt/Microsoft.Build.CopyOnWrite.svg)](https://www.nuget.org/packages/Microsoft.Build.CopyOnWrite)
44

5-
The `Microsoft.Build.CopyOnWrite` MSBuild SDK overrides the native MSBuild Copy task to add support for ReFS CloneFile (Copy on Write). It is designed to be as backwards compatible as possible and should directly replace all usages of Copy in MSBuild.
5+
The `Microsoft.Build.CopyOnWrite` MSBuild SDK overrides the native MSBuild Copy task to add support for ReFS and Dev Drive CloneFile (Copy on Write). It is designed to be as backwards compatible as possible and should directly replace all usages of Copy in MSBuild.
66

77
## Usage in `Directory.Packages.Props`
88
This is intended to be used in a large repo already onboarded to Central Package Management. In your `Directory.Packages.props`:
@@ -30,7 +30,7 @@ If your project types don't support NuGet (e.g. `.vcxproj`), you can alternative
3030
## Background
3131
This SDK aims to improve the performance of large repositories by minimizing file copies during the build process. Many large repos have the snowball effect where Resolve Assembly Reference will add more and more dependencies that get copied along in different layers of the build graph. This is an attempt to accelerate those by taking advantage of the Copy on Write feature of the OS using this library: [https://github.com/microsoft/CopyOnWrite](https://github.com/microsoft/CopyOnWrite).
3232

33-
Example build, internal Microsoft repo with 758 nodes, 3989 edges:
33+
Example build, internal Microsoft repo with 758 nodes, 3989 edges, on Win11 22H2 ReFS, with the NuGet cache moved onto the same disk volume:
3434

3535
Command | Value
3636
---|---
@@ -44,5 +44,7 @@ Command | Value
4444
Enlistment size| 66.4 GB (71,305,402,686 bytes)
4545
Size on disk| **3.83 GB (3,055,628,028 bytes)**
4646

47+
See [blog post 1](https://aka.ms/EngMSDevDrive) and [blog post 2](https://aka.ms/VSDevDrive) for more information on Dev Drive, copy-on-write, and moving your package caches.
48+
4749
## Caveats
48-
To use this feature, you need run on a drive formatted [ReFS](https://learn.microsoft.com/en-us/windows-server/storage/refs/refs-overview) on Windows. This is only available on Windows Server, Enterprise, and Pro for Workstation SKUs.
50+
To use this feature, you need run on a drive formatted with [ReFS](https://learn.microsoft.com/en-us/windows-server/storage/refs/refs-overview) or [Dev Drive](https://aka.ms/devdrive) on Windows. ReFS is available on Windows Server, or on Windows 11 22H2 Enterprise and Pro SKUs. Dev Drive is available on all Windows SKUs.

0 commit comments

Comments
 (0)