REPO(1)
π REPO(1) π
okay bestie, so this is the manual for repo init β yes, the repo command, the init subcommand, the whole ~vibe~. it lives in the Repo Manual section (section 1, the big leagues) and it's gonna change your entire dev life. grab a boba, we're doing this π§β¨
πΈ SYNOPSIS πΈ
repo init [options] [manifest url]
that's it. that's the whole thing. options optional (mostly), manifest url optional (until it isn't). slay. π
β¨ DESCRIPTION β¨
π Summary
Initialize a repo client checkout in the current directory.
like... literally that. you run it, it sets up your repo client checkout, right here, in the directory you're standing in. no cap. π
π OPTIONS π
-h,--helpβ show this help message and exit. the classic. the icon. hits different every time.
π Logging options:
-v,--verboseβ show all output. every last crumb of it. give me EVERYTHING.-q,--quietβ only show errors. minimalism era. silent but deadly.
π¦ Manifest options:
-uURL,--manifest-url=URL β manifest repository location. where the manifest lives, bestie.-bREVISION,--manifest-branch=REVISION β manifest branch or revision (useHEADfor default).--manifest-upstream-branch=BRANCH β when a commit is provided to--manifest-branch, this is the name of the git ref in which the commit can be found.-mNAME.xml,--manifest-name=NAME.xml β initial manifest file.-gGROUP,--groups=GROUP β restrict manifest projects to ones with specified group(s)[default|all|G1,G2,G3|G4,-G5,-G6]. yes you can do minus signs, we love a subtraction arc β-pPLATFORM,--platform=PLATFORM β restrict manifest projects to ones with a specified platform group[auto|all|none|linux|darwin|...].--submodulesβ sync any submodules associated with the manifest repo. little repos inside your repo, it's giving nesting dolls πͺ--standalone-manifestβ download the manifest as a static file rather then create a git checkout of the manifest repo. (yes, "rather then". that's the original spelling, i don't make the rules, i just respect the lore π)--manifest-depth=DEPTH β create a shallow clone of the manifest repo with given depth (0for full clone); seegit clone(default:0).
πΈ Manifest (only) checkout options:
-c,--current-branchβ fetch only current manifest branch from server (default).--no-current-branchβ fetch all manifest branches from server. chaos mode, respect.--tagsβ fetch tags in the manifest.--no-tagsβ don't fetch tags in the manifest.
π Checkout modes:
--mirrorβ create a replica of the remote repositories rather than a client working directory.--archiveβ checkout an archive instead of a git repository for each project. Seegit archive.--worktreeβ usegit-worktreeto manage projects.--use-local-gitdirsβ bypass.repo/projects/and use standard Git layout in working tree.
π Project checkout optimizations:
--reference=DIR β location of mirror directory.--dissociateβ dissociate from reference mirrors after clone.--depth=DEPTH β create a shallow clone with given depth; seegit clone.--partial-cloneβ perform partial clone (https://git-scm.com/docs/partial-clone).--no-partial-cloneβ disable use of partial clone (https://git-scm.com/docs/partial-clone).--partial-clone-exclude=PARTIAL_CLONE_EXCLUDE β exclude the specified projects (a comma-delimited project names) from partial clone (https://git-scm.com/docs/partial-clone).--clone-filter=CLONE_FILTER β filter for use with--partial-clone[default:blob:none].--use-superprojectβ use the manifest superproject to sync projects; implies-c.--no-use-superprojectβ disable use of manifest superprojects.--clone-bundleβ enable use of/clone.bundleon HTTP/HTTPS (default if not--partial-clone).--no-clone-bundleβ disable use of/clone.bundleon HTTP/HTTPS (default if--partial-clone).--git-lfsβ enable Git LFS support.--no-git-lfsβ disable Git LFS support.
π«Ά repo Version options:
--repo-url=URL β repo repository location ($REPO_URL).--repo-rev=REV β repo branch or revision ($REPO_REV).--no-repo-verifyβ do not verify repo source code.
π Other options:
--config-nameβ Always prompt for name/e-mail.
π§ Multi-manifest:
--outer-manifestβ operate starting at the outermost manifest.--no-outer-manifestβ do not operate on outer manifests.--this-manifest-onlyβ only operate on this (sub)manifest.--no-this-manifest-only,--all-manifestsβ operate on this manifest and its submanifests.
Run repo help init to view the detailed manual. (yes, there's a more detailed one. the lore goes deeper π)
β DETAILS β
The repo init command is run once to install and initialize repo. The latest repo source code and manifest collection is downloaded from the server and is installed in the .repo/ directory in the current working directory. one and done, bestie, that's the whole ritual π
When creating a new checkout, the manifest URL is the only required setting. It may be specified using the --manifest-url option, or as the first optional argument. so like, you gotta tell it where the manifest is. there's no getting around it. that's the one non-negotiable, fr fr.
The optional -b argument can be used to select the manifest branch to checkout and use. If no branch is specified, the remote's default branch is used. This is equivalent to using -b HEAD. letting the remote pick for you is valid, it's giving trust the process π«Ά
The optional --manifest-upstream-branch argument can be used when a commit is provided to --manifest-branch (or -b), to specify the name of the git ref in which the commit can be found. so you hand it a commit, and this tells it where that commit lives. mystery solved π
The optional -m argument can be used to specify an alternate manifest to be used. If no manifest is specified, the manifest default.xml will be used. default.xml is the main character until you say otherwise π
If the --standalone-manifest argument is set, the manifest will be downloaded directly from the specified --manifest-url as a static file (rather than setting up a manifest git checkout). With --standalone-manifest, the manifest will be fully static and will not be re-downloaded during subsesquent repo init and repo sync calls. frozen. locked in. not touching it again. βοΈ (and yes β "subsesquent". that's what the page says. we do not edit the ancestors' typos, we honor them π)
The --reference option can be used to point to a directory that has the content of a --mirror sync. This will make the working directory use as much data as possible from the local reference directory when fetching from the server. This will make the sync go a lot faster by reducing data traffic on the network. local data go brrr, network stay chill π₯
The --dissociate option can be used to borrow the objects from the directory specified with the --reference option only to reduce network transfer, and stop borrowing from them after a first clone is made by making necessary local copies of borrowed objects. borrowed then owned. glow up complete β¨
The --no-clone-bundle option disables any attempt to use $URL/clone.bundle to bootstrap a new Git repository from a resumeable bundle file on a content delivery network. This may be necessary if there are problems with the local Python HTTP client or proxy configuration, but the Git binary works. (again β "resumeable". legacy spelling. we respect it. π)
π Switching Manifest Branches
To switch to another manifest branch, repo init -b otherbranch may be used in an existing client. However, as this only updates the manifest, a subsequent repo sync (or repo sync -d) is necessary to update the working directory files.
β οΈ okay this part MATTERS, bestie:repo init -b otherbranchalone does not change your working directory files. it only updates the manifest. you still gotta runrepo sync(orrepo sync -d) afterwards. do not skip this step. i am begging you. π
that's the whole page, you made it, i'm so proud of you π₯Ήπ this was repo init from the Repo Manual, dated June 2026, and the footer just says repo init / June 2026 / REPO(1) β but between us, it's giving iconic. now go initialize something. periodt. π
β¨π¦
π¦ where this page comes from
- arch rolling: repo 2.67-1 Β· Apache-2.0
- fedora 43: repo 2.68-1.fc43
- fedora 43: repo 2.69-1.fc43 Β· Apache-2.0
- fedora 44: repo 2.68-1.fc44
- fedora 44: repo 2.69-1.fc44 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms