base at first). A run on a branch uses its default build: its Latest build,
or a build you pin. Without --branch, uploads go to your Git branch, created if
needed, and runs try it first when it has a usable build, then the app’s default
branch. Choices you make, for one run or saved, never fall back. See
Build branches for the full model.
Manage branches
listshows the default branch first, marked(default), then the rest by latest activity, 50 per page (--page-sizeup to 100). Its columns are BRANCH, BRANCH ID, DEFAULT BUILD, and BUILD ID.- DEFAULT BUILD reads
Latest build (v4),Latest build (no builds),Pinned build (v1.2), orPinned build (v1.2, unavailable). BUILD ID is the build a run on the branch uses now, or-when there is none. createreturns the existing branch when the name is taken.pintakes the ID of a build on that branch, not a version label. List IDs withrevyl build list --app "My App" --branch staging.- The other commands print the branch as
Branch: <name> (<id>), or JSON with--json.
Upload and list builds
--branchchooses the upload’s branch and creates it if it doesn’t exist. Without it, the upload goes to your Git branch, created if needed, or the app’s default branch when none is detected. When--repoand--commitname a different repository or commit than the checkout, the checkout doesn’t choose the branch. Pass--branchwhen the artifact wasn’t built from this checkout.revyl inituploads a new app’s first build tobase, and a linked app’s to your Git branch;--branchoverrides either.--pinpins the branch to the new build. If the version label already exists, the upload reuses that build and doesn’t pin; the warning prints therevyl app branch pincommand to run.- Version labels are unique within an app among builds that aren’t deleted. A
label used on another branch fails with
This version already belongs to another branch; use a unique version. - The output prints
App:,Build Version:,Build ID:, andBranch:with what a run on the branch uses now:staging (Latest build: runs use this upload),staging (Latest build: runs use v4),staging (pinned to v1.2; runs that don't choose a build keep using v1.2), orstaging (pinned to this build). Keep the build ID to run that exact build later; a remote build job ID isn’t a build ID.
build list shows every branch of the app. --branch <name> narrows it to one
branch. When no Revyl branch has that name, it lists builds built from a Git
branch of that name instead. --branch HEAD means your checked-out Git branch
and fails outside Git or on a detached checkout, as in pull request CI.
The heading says which filter matched: Builds (Revyl branch: main): or
Builds (Git branch: main):. Tables show GIT BRANCH, the branch the build
was built from, and across branches REVYL BRANCH, the dashboard’s
Branch column.
Check which build a run uses
build which uses --branch, otherwise your Git branch when it has a usable
build, otherwise the app’s default branch, then that branch’s default build. It
prints the app, branch, reason, build, and default build without starting a
run, and prints the fallback notice on stderr when your Git branch couldn’t be
used. It reads the app’s selection, not a test’s or workflow’s saved choice.
HEAD here is a literal branch name. A failed selection exits nonzero without a
result.
Run options
These apply to one run and don’t change saved settings:- A workflow’s
--branchand--build-selectionapply to every app it runs. Each app needs that branch and, unless you give it an exact build, a usable build there; otherwise the workflow doesn’t start and the error names the apps. Without them, each app falls back from your Git branch on its own. - With test or workflow
--build, the new build uploads to--branch, or your Git branch, and the run uses that exact build. Don’t combine--buildwith--build-selection. --ios-appand--android-appreplace the workflow’s saved app for one run; platforms you don’t override use each test’s saved choice.- Output names the branch of each build, such as
Build: v1.4 from branch feature-login. revyl device history --app-id <id> --branch staginglists sessions that started with a build from that branch.revyl devkeeps one branch for startup and every rebuild, and doesn’t take--all-branches. See Dev Loop for how it picks the branch and build.
Saved test and workflow choices
test build showprints the saved Branch (Default branch, All branches, orstaging (<branch-id>)) and Build (Automatic, Latest build, orExact build v1.4 (<build-id>));--jsongives the saved IDs.test build setsaves a branch and build.--build-selectionalone keeps the saved branch, so on a test saved on All branches it saves Default branch. To move a test saved on a named branch back to Default branch, choose Default branch in its dashboard settings, or push YAML withbuild_selection: inheritand nobranch_id.test build clearresets a test to All branches · Latest build.test createtakes the same--branch,--build-selection,--build-id, and--all-branches, also with--from-fileor--from-session. Without them or a choice in the YAML, a new test starts on Default branch.- Workflows save iOS and Android separately with the
--ios-*and--android-*flags.--ios-automaticsaves Default branch with Automatic for iOS, and--ios-all-branchessaves All branches · Latest build. workflow app shownames each app and branch with its ID.disableturns the app override off and keeps its choices,enableturns it back on, andclearremoves the choices, like turning the override off in the dashboard.
Terminal UI
- The app build browser opens on All branches, including when you return to it. Its branch filter narrows the list and never chooses an upload’s destination or a run’s build.
- Run, session, and upload pickers start with your Git branch when one is
detected:
Git branch (feature-login) · falls back to basefor runs and sessions, orGit branch (feature-login)for uploads, which create it. Pickers that save a choice, and pickers with no Git branch, start withDefault branch (base)and its default build. The other branches follow, most recently active first, with the app’s default marked(default). - Pickers for runs, sessions, and saved choices list All branches · Latest build after the first row. Upload pickers and the build browser don’t.
- After a branch, run, session, and saved pickers offer Automatic, Latest build, or Exact build. A workflow run takes a branch name and offers Automatic or Latest build; with no name, it offers Keep saved settings or All branches · Latest build.
- Lists load one page at a time:
mloads more,/searches,Rretries a failed page, andnnames a new branch in an upload picker.
JSON fields
- Uploads and builds:
branch_idandbranch_name, with the build ID at.build.build_idforbuild upload --fileand.version_idforbuild upload --url. - Runs (
test run,workflow run,workflow status,workflow report,explore run,device start,device install):branch_namefor each build,branch_sourcefor where that branch came from, andgit_branch_name:branch_sourceisgit_branch(your Git branch),explicit_branch(--branch, or the branch saved on the test or workflow), ordefault_branch(the app’s default branch). It’s left out when an exact build or All branches · Latest build chose the build.git_branch_nameis the Git branch the run sent, present only when the run consulted it: withgit_branch, and withdefault_branchwhen your Git branch couldn’t be used (it doesn’t exist, has no usable build, or isn’t a valid Revyl branch name). It’s left out forexplicit_branch, an exact build, All branches · Latest build, and a run with no Git branch. For example, a fallback reports{"branch_name": "base", "branch_source": "default_branch", "git_branch_name": "feature-login"}.
build which:app_id,app_name,branch_id,branch_name,branch_source(explicit_branch,git_branch, ordefault_branch, which a fallback also reports),git_branch_name(as for runs: present withgit_branch, and withdefault_branchafter a fallback),build_id,build_version, andbranch_build_selection(latestorpinned: the branch’s default build).build list:versions,count,total,page,page_size, andhas_next; with--branch, alsobranch_filterandbranch_filter_kind(revyl_branchorgit_branch).app branch list:branches, each withis_default,pinned_build_id,pinned_build_version,pinned_build_available, andlatest_build(absent when the branch has no builds), plustotal,page,page_size, andtotal_pages.
Deprecated flags
--set-current on revyl build and revyl build upload pins like --pin.
--set-current=false and --no-set-current do nothing. Each prints a warning
on stderr, --json output is unchanged, and none appears in --help.