def github_project_workdir()

in build/fbcode_builder/fbcode_builder.py [0:0]


    def github_project_workdir(self, project, path):
        # Only check out a non-default branch if requested. This especially
        # makes sense when building from a local repo.
        git_hash = self.option(
            "{0}:git_hash".format(project),
            # Any repo that has a hash in deps/github_hashes defaults to
            # that, with the goal of making builds maximally consistent.
            self._github_hashes.get(project, ""),
        )
        maybe_change_branch = (
            [
                self.run(ShellQuoted("git checkout {hash}").format(hash=git_hash)),
            ]
            if git_hash
            else []
        )

        local_repo_dir = self.option("{0}:local_repo_dir".format(project), "")
        return self.step(
            "Check out {0}, workdir {1}".format(project, path),
            [
                self.workdir(self._github_dir),
                self.run(
                    ShellQuoted("git clone {opts} https://github.com/{p}").format(
                        p=project,
                        opts=ShellQuoted(
                            self.option("{}:git_clone_opts".format(project), "")
                        ),
                    )
                )
                if not local_repo_dir
                else self.copy_local_repo(local_repo_dir, os.path.basename(project)),
                self.workdir(
                    path_join(self._github_dir, os.path.basename(project), path),
                ),
            ]
            + maybe_change_branch,
        )