Here's the first one - used it tonight to create the 'upgrade' package for 1.3.x to 1.3.8
Note: I use Ubuntu, so it won't work on a Windows machine!
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT [old commit hash] [new commit hash] | xargs tar -cvzf filename.tar.gz
Here's how the command breaks down -
git diff-tree -r [old commit hash] [new commit hash]
Take a diff of the given commit to the older commit (including all subdirectories, not just the top directory).
Do not output the commit SHA1. Output only the names of the affected files instead of a full diff.
Only show files added, copied, modified, renamed or that had their type changed (eg. file → symlink) in this commit. This leaves out deleted files.
| xargs tar -cvzf filename.tar.gz
Send the output to a tar.gz file. You can also run without this to just get a list, or send to a text file.