From 74e8ed4bde37a3ce42579e4601e0a54120853c89 Mon Sep 17 00:00:00 2001 From: Sean McAllister Date: Wed, 15 Apr 2020 12:24:43 -0600 Subject: Expose upstream and dest-branch attributes through environment Recent changes in ChromeOS Infra to ensure we're reading from snapshot manifests properly have exposed several bugs in our assumptions about manifest files. Mainly that the revision field for a project does _not_ have to refer to a ref, it can just be a commit hash. Several places assume that the revision field can be parsed as a ref to get the branch the project is on, which isn't true. To fix this we need to be able to look at the upstream and dest-branch attributes of the repo, so we expose them through the environment variables set in `repo forall`. Test: manual 'repo forall' run Bug: https://crbug.com/1032441 Change-Id: I2c039e0f4b2e0f430602932e91b782edb6f9b1ed Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/263132 Reviewed-by: Mike Frysinger Tested-by: Sean McAllister --- subcmds/forall.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'subcmds/forall.py') diff --git a/subcmds/forall.py b/subcmds/forall.py index a13793d0..55d61ecb 100644 --- a/subcmds/forall.py +++ b/subcmds/forall.py @@ -179,6 +179,8 @@ without iterating through the remaining projects. 'annotations': dict((a.name, a.value) for a in project.annotations), 'gitdir': project.gitdir, 'worktree': project.worktree, + 'upstream': project.upstream, + 'dest_branch': project.dest_branch, } def ValidateOptions(self, opt, args): @@ -317,6 +319,8 @@ def DoWork(project, mirror, opt, cmd, shell, cnt, config): setenv('REPO_REMOTE', project['remote_name']) setenv('REPO_LREV', project['lrev']) setenv('REPO_RREV', project['rrev']) + setenv('REPO_UPSTREAM', project['upstream']) + setenv('REPO_DEST_BRANCH', project['dest_branch']) setenv('REPO_I', str(cnt + 1)) for name in project['annotations']: setenv("REPO__%s" % (name), project['annotations'][name]) -- cgit v1.2.3-54-g00ecf