pristine-tar can regenerate a pristine upstream tarball using only a small binary delta file and a copy of the source which can be a revision control checkout.
The package also includes a pristine-gz command, which can regenerate a pristine .gz file, and a pristine-bz2 for .bz2 files.
The delta file is designed to be checked into revision control along-side the source code, thus allowing the original tarball to be extracted from revision control.
pristine-tar is available in git at
http://anonscm.debian.org/cgit/collab-maint/pristine-tar.git
It's also in Debian.
(I am no longer maintaining pristine-tar, it has a new maintainer now.)