As a follow up to the question ‘What does the output of TeX/LaTeX depend on (in the sense of version and distribution)’, I wonder if there are any tools (or at least plans to ship such a tool) which would allow noting a specific version of all packages being used and the tool would make sure that all TeX sources are being built with those packages (and their dependencies). Similar to how most of the modern [*] programming languages do it (eg. http://bundler.io).
Running tlmgr to upgrade all packages from CTAN (or installing a new TeXLive) feels like a very stupid thing to do when something changes in a package and messes with one’s documents. (And one might not even notice immediately.)
[*] Not sure if modern is the right word here, as there is even a package management tool for vim now: Vundle.
bundledoc, which bundles together (up to) 'all the classes, packages, and files needed to build a given LaTeX document'; it can be combined witharlatex, which will then create an archive (tar, zip, etc.) of all the files. I use them as a long-term storage solution for finished projects. (Mainly because the macros my personal.styfiles change, but also because packages sometimes introduce incompatible changes that might affect recompilation at a later date.) – jon May 16 '14 at 13:55tabubeing a recent, infamous example). And of coursebundledocsimply makes use of the information make by the packagesnapshot. If all you want is a record of what was used, thensnapshotis pretty useful; combine it with http://ctanhg.scharrer-online.de/ as needed. – jon May 20 '14 at 17:46tlmgr(from TeX Live) provides some of these features (e.g., optionsbackupandrestore). But this is different from using packages in a.texdocument. And of course you can do\usepackage{<package name>}[<min. release date>]to specify that you don't want to use a package older than a given date. But package developers are under no such constraints that you describe: assuming a licence like LPPL, you simply can't modify (say) my packagejon.styand call it the same thing. It is up to me to keep or notjon.stybackwards compatible. – jon May 20 '14 at 19:58snapshotandbundledocdo (althoughbundledocactually writes them into the file itself, which is handy). – jon May 20 '14 at 19:59