Merge pull request #483 from github/proposals

Proposals
This commit is contained in:
risk danger olson 2015-07-21 13:43:31 -06:00
commit a1efa582eb
2 changed files with 63 additions and 55 deletions

8
docs/proposals/README.md Normal file

@ -0,0 +1,8 @@
# Git LFS Proposals
This directory contains high level proposals for future Git LFS features.
Inclusion here does not guarantee when or if a feature will make it in to Git
LFS. It doesn't even guarantee that the specifics won't change.
Everyone is welcome to submit their own proposal as a markdown file in a
pull request for discussion.

@ -69,12 +69,12 @@ the previous section.
* Git passes the original contents of the file to LFS clean over STDIN * Git passes the original contents of the file to LFS clean over STDIN
* LFS reads those bytes and calculates the original SHA-256 signature as it does so * LFS reads those bytes and calculates the original SHA-256 signature as it does so
* LFS streams the bytes to STDIN of lfs-extension.foo.clean, which is expected to write * LFS streams the bytes to STDIN of lfs-ext.foo.clean, which is expected to write
those bytes, modified or not, to its STDOUT those bytes, modified or not, to its STDOUT
* LFS reads the bytes from STDOUT of lfs-extension.foo.clean, calculates the SHA-256 * LFS reads the bytes from STDOUT of lfs-ext.foo.clean, calculates the SHA-256
signature, and writes them to STDIN of lfs-extension.bar.clean, which then writes those signature, and writes them to STDIN of lfs-ext.bar.clean, which then writes those
bytes, modified or not, to its STDOUT bytes, modified or not, to its STDOUT
* LFS reads the bytes from STDOUT of lfs-extension.bar.clean, calculates the SHA-256 * LFS reads the bytes from STDOUT of lfs-ext.bar.clean, calculates the SHA-256
signature, and writes the bytes to a temp flie signature, and writes the bytes to a temp flie
* When finished, LFS atomically moves the temp file into .git/lfs/objects, as before * When finished, LFS atomically moves the temp file into .git/lfs/objects, as before
* LFS generates the pointer file, with some changes: * LFS generates the pointer file, with some changes:
@ -135,12 +135,12 @@ not, the bytes would just be passed through to STDOUT.
determines that extensions foo and bar both processed the file, in that order. determines that extensions foo and bar both processed the file, in that order.
* LFS uses the value of the oid key to find the blob in the .git/lfs/objects folder, or * LFS uses the value of the oid key to find the blob in the .git/lfs/objects folder, or
download from the server as needed download from the server as needed
* LFS writes the contents of the blob to STDIN of lfs-extension.bar.smudge, which * LFS writes the contents of the blob to STDIN of lfs-ext.bar.smudge, which
modifies them as needed and writes them to its STDOUT modifies them as needed and writes them to its STDOUT
* LFS reads the bytes from STDOUT of lfs-extension.bar.smudge, calculates the SHA-256 * LFS reads the bytes from STDOUT of lfs-ext.bar.smudge, calculates the SHA-256
signature, and writes the bytes to STDIN of lfs-extension.foo.smudge, which modifies them signature, and writes the bytes to STDIN of lfs-ext.foo.smudge, which modifies them
as needed and writes to them its STDOUT as needed and writes to them its STDOUT
* LFS reads the bytes from STDOUT of lfs-extension.foo.smudge, calculates the SHA-256 * LFS reads the bytes from STDOUT of lfs-ext.foo.smudge, calculates the SHA-256
signature, and writes the bytes to its own STDOUT signature, and writes the bytes to its own STDOUT
* At the end, ensure that the hashes calculated on the outputs of foo and bar match their * At the end, ensure that the hashes calculated on the outputs of foo and bar match their
corresponding input hashes from the pointer file. If not, write a descriptive error corresponding input hashes from the pointer file. If not, write a descriptive error