project: Skip superproject upstream check for MetaProjects The superproject-gated upstream check in _CheckForImmutableRevision only applies to user projects listed in the manifest. MetaProjects (ManifestProject and RepoProject) never participate in a superproject relationship, so evaluating git_superproject.UseSuperproject(..., self.manifest) for them serves no purpose and, worse, calls the manifest.superproject property which forces a manifest load. During repo init, ManifestProject._ConfigureDependencies calls self.Sync_NetworkHalf before manifest.xml has been linked into .repo/. That reaches _CheckForImmutableRevision, which triggered the manifest load and failed with: ManifestParseError: .../.repo/manifest.xml: [Errno 2] No such file or directory breaking fresh repo init with SHA-based --manifest-branch combined with --manifest-upstream-branch. Factor the "should we consult the superproject for upstream?" decision into a small overridable hook, _UseSuperprojectForUpstream. Project's default delegates to git_superproject.UseSuperproject; MetaProject overrides it to return False, localizing the MetaProject-specific behavior to MetaProject. Test verifies that calling _CheckForImmutableRevision on a ManifestProject whose manifest.xml is not yet on disk returns False without raising and does not create the file. Change-Id: I22059109243d914036c06c6fe0081a5aba05da89 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/574201 Reviewed-by: Gavin Mak <gavinmak@google.com> Commit-Queue: Ajay Gupta <ajagup@qti.qualcomm.com> Tested-by: Ajay Gupta <ajagup@qti.qualcomm.com> Reviewed-by: Mike Frysinger <vapier@google.com> Reviewed-by: Nasser Grainawi <nasser.grainawi@oss.qualcomm.com>
Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier to work with Git. The repo command is an executable Python script that you can put anywhere in your path.
Please use the repo-discuss mailing list or issue tracker for questions.
You can file a new bug report under the “repo” component.
Please do not e-mail individual developers for support. They do not have the bandwidth for it, and often times questions have already been asked on repo-discuss or bugs posted to the issue tracker. So please search those sites first.
Many distros include repo, so you might be able to install from there.
# Debian/Ubuntu. $ sudo apt-get install repo # Gentoo. $ sudo emerge dev-vcs/repo
You can install it manually as well as it's a single script.
$ mkdir -p ~/.bin $ PATH="${HOME}/.bin:${PATH}" $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo $ chmod a+rx ~/.bin/repo
Repo includes completion scripts for Bash and Zsh.
To enable completion in Bash, source completion.bash in your ~/.bashrc:
source /path/to/git-repo/completion.bash
To enable completion in Zsh, you can either:
Copy or symlink completion.zsh to a file named _repo in a directory in your $fpath:
mkdir -p ~/.zsh/completion # You can copy the file: cp /path/to/git-repo/completion.zsh ~/.zsh/completion/_repo # Or symlink it: ln -s /path/to/git-repo/completion.zsh ~/.zsh/completion/_repo
Then add that directory to your fpath in ~/.zshrc before compinit:
fpath=(~/.zsh/completion $fpath) autoload -Uz compinit compinit
Or source the file directly and call compdef in your ~/.zshrc:
source /path/to/git-repo/completion.zsh compdef _repo repo