From https://gerrit.wikimedia.org/r/#/c/238839/:
Dan and I talked yesterday about this (and I talked to Filippo about it this morning): it would be fairly easy (and a Good Thing™) to keep backwards compatibility WRT trebuchet directory structure in this patch.
Combination of Dan and Filippo's thoughts: Rather than use /srv/deployment/[repo]/{cache,current,revs} we could use /srv/deployment-cache/[repo]/{cache,current,revs} and symlink /srv/deployment/[repo] -> /srv/deployment-cache/repo/current
Keeps backwards compatibility, plus is future-repo-name agnostic (i.e., repos wouldn't have to be named something/something [e.g., scap/scap ocg/ocg] for this to work.)
...
Would be a nice to have to just put the final finishing symlink in-place with a config var like final_path (ln -s [deploy_dir]/current -> final_path)
The one caveat to this approach is deciding how to deal with existing Trebuchet managed directories before we create the final_path symlink. @mmodell suggested we might move them to a .old directory, which seems like a sane approach.
Bikeshedding: What about calling it legacy_dir? That way we get annoyed every time we see the word "legacy" and feel motivated to migrate the remaining Trebuchet repos to use our new tool. :)
Also, I'm assuming this should happen after the current link is switched but before service restart? (Which means we may have to split the promote stage into promote and restart; that should be trivial.)