fx sync-to

Sync the local Fuchsia source tree to a given state

usage: fx sync-to [-h|--help] <STATE>

To reproduce builds at a given repo state, or bisect bugs among a series of
checkins, this command synchronizes the local Fuchsia source tree to a given
state. The state can be specified in one of the following ways:

 BUILD_ID: a large number like '8938070794014050064' (preceded or not by a
   'b' letter), which is the "Build #" in a builder's "Ended builds" page,
    for example:
      https://luci-milo.appspot.com/p/fuchsia/builders/try/core.x64-asan

 RELEASE_TAG: a string like "releases/0.20190927.1.1", representing a
   git tag in the //integration repository. To find available tags, run
   `git tags -l` in your local integration repository.

 BRANCH_NAME: a string like "refs/heads/releases/f1", representing a
   git branch (head) in the //integration repository.

 JIRI_HISTORY_TIMESTAMP: a timestamp like "2019-03-21T15:30:00-07:00".
   This is local to your tree, and represents a moment where you
   previously ran `jiri update`. To find available timestamps, look at
   files in ${FUCHSIA_DIR}/.jiri_root/update_history/

 INTEGRATION_GIT_COMMIT: a 3-40 character commit hash like "e9d97d1" in the
   integration repo. Can be optionally prefixed with 'git:' (e.g.
   "git:e9d97d1") to disambiguate from BUILD_ID. To find valid commits,
   look at your integration commit history:
      git -C ${FUCHSIA_DIR}/integration log --oneline

 "reset":
   Use "reset" to return to the top of the tree. This is equivalent to:
     git -C ${FUCHSIA_DIR}/integration checkout JIRI_HEAD && jiri update -gc

Known limitations:
- Does not work on CI builds triggered on repos other than integration (very
  rare). It works on all CQ builds and all CI builds triggered by
  integration.git commits.
- Does not respect `attributes`. Local attributes will not be overridden (so
  the checkout may contain some extra repositories), and
  attributes used by an infra build will not be reproduced

Examples:

# Sync to the source used by build https://ci.chromium.org/b/8835832080588336881
fx sync-to 8835832080588336881

# Sync to the source tagged as release 0.20210822.2.5:
fx sync-to releases/0.20210822.2.5

# Sync to the same tree updated in 2021-08-28T14:26:22-07:00 (this is
# local to your local tree - to reproduce, look for timestamps in your
# own .jiri_root/update_history directory):
fx sync-to 2021-08-28T14:26:22-07:00

# Sync to integration commit 901ed5b
# (https://fuchsia.googlesource.com/integration/+/901ed5bf7db253bb6feb4832ac1a752248e2361d):
fx sync-to 901ed5b

# Sync to release branch f1:
fx sync-to refs/heads/releases/f1

# Restore your source to the top of the tree:
fx sync-to reset

sync-to source code