为什么 reposync 没有签出我在清单文件中指定的分支?

2024-04-28

假设我有以下清单文件repo https://source.android.com/setup/develop/repo tool (MCVE https://stackoverflow.com/help/minimal-reproducible-example%20MCVE脚本包含在本文末尾):

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote name="repo1" fetch="/tmp/standalone_repo_expt/git.repos" />
  <remote name="repo2" fetch="/tmp/standalone_repo_expt/git.repos" />
  <default remote="repo1" revision="master" />
  <project name="repo1" path="repo1" />
  <project name="repo2" path="repo2"  />
</manifest>

我能跑repo init ...其次是repo sync成为一个品牌 新目录(即没有任何先前内容)。但是当我进入 所结果的repo1子目录(例如,/tmp/standalone_repo_expt/work_area/myproject/repo1/),并做一个git status我看到这个:

$ git status
Not currently on any branch.
nothing to commit, working tree clean

然后显示我看到的可用分支:

$ git branch -a
* (no branch)
  remotes/m/master -> repo1/master
  remotes/repo1/master

Why did repo sync不签出到默认分支(master) 我 中已指定default清单文件中的标记?

类似问题

这类似于为什么 git repo 不签出指定的分支? https://stackoverflow.com/q/60921066/257924但是 不完全相同的问题。我的问题是没有分支机构已检查 出来,这似乎是错误的。我不应该做任何其他事情 除了repo sync,我不应该跑git checkout master在该清单文件管理的所有存储库中。

这似乎也类似于https://stackoverflow.com/a/66264612/257924 https://stackoverflow.com/a/66264612/257924但使用repo init -b master也不做我想做的事(没有 未签出存储库对这个问题的影响 指定的分支)。

https://stackoverflow.com/a/16917618/257924 https://stackoverflow.com/a/16917618/257924接近回答 这个问题,但没有解释为什么git branch -a才不是 包含master紧随其后的分支repo sync.

回购工具版本

The repo https://source.android.com/setup/develop/repo该工具于 2021 年 11 月 15 日通过以下方式直接从源中提取:

curl https://storage.googleapis.com/git-repo-downloads/repo https://storage.googleapis.com/git-repo-downloads/repo> /tmp/standalone_repo_expt/bin/repo

并将 PATH 设置为包括/tmp/standalone_repo_expt/bin.

MCVE https://stackoverflow.com/help/minimal-reproducible-example script

#!/bin/bash

function generate_repo {
  local repo_num="$1"
  mkdir -p /tmp/standalone_repo_expt/git.repos/repo$repo_num.git
  cd /tmp/standalone_repo_expt/git.repos/repo$repo_num.git
  git init --bare

  mkdir -p /tmp/standalone_repo_expt/work_area
  git clone /tmp/standalone_repo_expt/git.repos/repo$repo_num.git || {
    echo ERROR: git clone /tmp/standalone_repo_expt/git.repos/repo$repo_num.git
    exit 1
  }

  (
    cd repo$repo_num
    touch repo$repo_num.README
    git add repo$repo_num.README
    git commit -m "Add repo$repo_num.README"
    git push origin
  )

  (
    mkdir -p /tmp/standalone_repo_expt/work_area/repo$repo_num.test_clone
    cd /tmp/standalone_repo_expt/work_area/repo$repo_num.test_clone
    git clone /tmp/standalone_repo_expt/git.repos/repo$repo_num.git
    ls -ld repo$repo_num/*
    cd repo$repo_num
    git status
  )
}

# Remove the entire set of git repos for reproducable execution:
rm -rf /tmp/standalone_repo_expt

# Generate the git repositories, that we wish to combine into one
# larger directory, using the repo tool:
generate_repo 1
generate_repo 2

# Install the repo tool from source, not using any package managers:
mkdir -p /tmp/standalone_repo_expt/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > /tmp/standalone_repo_expt/bin/repo 
test -s /tmp/standalone_repo_expt/bin/repo || {
  echo "ERROR: Failed to download repo tool into /tmp/standalone_repo_expt/bin/repo"
  exit 1
}
chmod a+rx /tmp/standalone_repo_expt/bin/repo
PATH="/tmp/standalone_repo_expt/bin:${PATH}"
which repo >& /dev/null || {
  echo "ASSERTION FAILED: Failed to install the repo tool."
  exit 1
}

# Create the git repository that houses the manifest that are needed
# by the repo tool that reference the git repositories generated
# above:
mkdir -p /tmp/standalone_repo_expt/git.repos/manifests.git
cd /tmp/standalone_repo_expt/git.repos/manifests.git
git init --bare

# Clone the manifest bare repo so we can add the manifest file, and
# push it back:
cd /tmp/standalone_repo_expt/work_area
git clone /tmp/standalone_repo_expt/git.repos/manifests.git || {
  echo ERROR: git clone /tmp/standalone_repo_expt/git.repos/manifests.git failed
  exit 1
}
cd manifests
cat > default.xml <<EOF.manifest
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote name="repo1" fetch="/tmp/standalone_repo_expt/git.repos" />
  <remote name="repo2" fetch="/tmp/standalone_repo_expt/git.repos" />
  <default remote="repo1" revision="master" />
  <project name="repo1" path="repo1" />
  <project name="repo2" path="repo2"  />
</manifest>
EOF.manifest

cat default.xml

git add default.xml
git commit -m "Manifest file used by the repo tool"
git push origin || {
  echo ERROR: git push origin failed
  exit 1
}

set -x
mkdir -p /tmp/standalone_repo_expt/work_area/myproject
cd /tmp/standalone_repo_expt/work_area/myproject
repo init /tmp/standalone_repo_expt/git.repos/manifests.git
repo sync

cd repo1
pwd
ls -l
git status

repo不会为您创建本地分支。当您签出远程分支时,您最终会得到一个分离的头(因为无论如何您都无法在远程分支上进行提交)。

https://groups.google.com/g/repo-discuss/c/yPoPazTRgMA https://groups.google.com/g/repo-discuss/c/yPoPazTRgMA

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 reposync 没有签出我在清单文件中指定的分支? 的相关文章

  • 如何将更改提交到另一个预先存在的分支

    我刚刚对一个分支进行了更改 如何将更改提交到另一个分支 我正在尝试使用 git checkout the commmit to the changed branch b the other branch 但是 我认为这不是正确的做法 因为在
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • git 的精简包是什么?

    我还没有找到太多关于瘦包的信息 并且手册页的信息对此相当含糊 我知道这与连接速度慢有关 但是什么是 连接速度慢 它的优点和缺点是什么 什么时候应该使用它 什么时候不应该使用它 根据记录 手册页 index pack https www gi
  • Git 与人工制品

    刚刚完成 NPM 和 Bower 的 Artifactory 设置 它非常容易使用 您只需更改存储库 URL 一切就正常了 查看有关如何让 Artifactory 与 github vcs 一起使用的文档 它看起来过于复杂 我想知道是否有人
  • 如何与其他用户共享 bitbucket 存储库?

    我正在使用 Bit 存储桶 并且我想与一位朋友分享我的存储库 我用的是免费的个人账户 似乎有一个选项可以在位桶中创建团队 但它说它将把我的帐户从个人帐户转换为团队帐户 我不要那个 我如何授予其他用户访问此存储库的权限 有一个共享链接选项 如
  • gitattributes 中的`* text=auto eol=lf` 会做什么?

    我们的 gitattributes 文件中有这样的内容 text auto eol lf 我想准确理解这是做什么的 第一部分是text auto 来自文档 http git scm com docs gitattributes 这确保了所有
  • 如何在 git 交互式 rebase 中将提交与下一个提交合并?

    git rebase i允许通过以下方式将提交与前一个提交合并squash or fixup 这两个选项都需要至少一次提交pick ed 当一个人想要使用第一个提交但丢弃其提交消息时 情况怎么样 换句话说 如果我希望第一个提交与后续提交合并
  • 如何使用 LibGit2Sharp 从 Git 获取更改?

    下面的代码将 Git url 克隆到测试目录 var url http abc 555 com team project 555 git var path E temp 555 var credential new Credentials
  • 为什么我的存储库的 github 页面中没有出现问题选项卡?

    我想在 github 存储库中创建问题来纠正存储库中的技术债务 我看不到问题选项卡 对于其他存储库 问题选项卡显示在拉取请求选项卡下方 如何为我的存储库启用问题选项卡 您必须先启用问题 您可以通过点击来做到这一点Settings并启用 问题
  • 如何解决git中文件重命名文件夹冲突?

    我有以下问题 我有两个分支 Branch1 和 Branch2 的一些共同提交 A Branch1 是一个公共分支 位于服务器上 Branch2 是本地分支 在 Branch1 中我更改了文件 BAD folder somefile txt
  • Git-svn:批量删除孤立的远程分支

    我正在处理的 SVN 项目 通过 git svn 有经常创建的分支 然后与主干重新集成 然后删除 现在项目大约有10个分支没有被删除 但是在git中 gitbranch r显示大约有50个 我可以一次删除这些 检查它们是否仍然存在于 svn
  • GitPython - 使用 ssh 密钥克隆 - 主机密钥验证失败

    我在应用程序中克隆 git 存储库时遇到问题 KEY FILE opt app ssh id rsa def read git branch config id branch config RepoConfig objects get id
  • 如何从 git 存储库中删除作者?

    如果我创建一个 Git 存储库并公开发布它 例如在 GitHub 等上 并且我收到存储库贡献者的请求 无论出于何种原因删除或隐藏他们的名字 有没有一种方法可以轻松做到这一点 基本上 我有这样的请求 可能想将他们的姓名和电子邮件地址替换为 匿
  • 以编程方式将工作项关联到拉取请求

    我可以得到 https www visualstudio com en us docs integrate api git pull requests get a pull request https www visualstudio co
  • 将存储库从 Github 移至 Gitlab

    有没有办法将整个存储库从 Github 移动到 GitLab 对于代码本身来说 只需在 GitLab 上创建一个新的存储库并推送到它即可 Wiki 页面位于 Github 上的单独分支中 并通过 Git 机制进行管理 据我所知 GitLab
  • Eclipse git checkout(又名恢复)

    是否可以做相当于git checkout在 Eclipse 中使用 Egit 插件 我有一个已修改的文件 我想放弃更改并将文件恢复到源存储库中的内容 在 Subversion 中 这称为恢复 在 git 中 相当于 checkout 我在团
  • 从“git diff”中排除文件

    我正在尝试排除一个文件 db irrelevant php 来自 Git diff 我尝试将文件放入db子目录名为 gitattributes与线irrelevant php diff我还尝试创建一个名为 git info attribut
  • 防止在 Git 中签出

    我目前正在研究使用 Git 管理 OpenInsight 应用程序的源代码 由于 OI 代码存储在数据库表中 因此需要进行一定量的手动工作才能将源代码导出为文本 反之亦然 到目前为止 我已经成功地使用 Git 挂钩自动化了很多这项工作 但是
  • git 索引到底包含什么?

    Git 索引到底包含哪些内容 可以使用什么命令查看索引内容 感谢您的所有回答 我知道索引充当暂存区 提交的内容是在索引中而不是工作树中 我只是好奇索引对象由什么组成 我猜它可能是文件名 目录名 SHA 1 对的列表 也许是一种虚拟树 在 G
  • Visual Studio 2017 - 无法将提交的更改推送到本地存储库

    我在 Win 10 Enterprise 上运行 VS 2017 Enterprise 15 7 3 我的本地硬盘上有一个 git 存储库 我在其中进行了一些更改 现在希望使用 VS 将这些更改 提交并推送 到我们位于网络文件共享之一的中央

随机推荐

  • 如何将数据框列名称插入方程 R 中? [复制]

    这个问题在这里已经有答案了 我试图通过引用数据框列名称并将其插入方程而不是直接调用名称来使一段代码更加灵活 尽管我必须直接插入字段名称 但以下示例有效 require e1071 class c 0 25 0 34 0 55 field1
  • 如何获取网页上的超链接以在文本编辑器中打开文件(Sublime Text)

    我正在开发一个大型静态网站 Jekyll 并且希望能够单击浏览器 Chrome 中页面上的链接 这将在本地计算机 Sublime 上打开其相应的源文件 我可以获得文件的绝对链接 从控制台 Ubuntu 我可以这样做 subl path to
  • PHP 致命错误:参数解包后无法使用位置参数

    Goal 我想写一个函数可变数量的参数 使用 https secure php net manual en functions arguments php functions variable arg list new使用相同的参数和新的参
  • 获取特定包中的数据集列表

    我想获取控制台中显示的特定 R 包中所有数据集的列表 我知道这个函数data 将列出加载的包中的所有数据集 那不是我的目标 我想获取特定 R 包中所有数据集的列表 以下尝试不起作用 data data arules Warning mess
  • 在“无头模式”下运行虚拟操作系统意味着什么?

    我已经听到很多关于新版本的 VMWare Fusion 如何以 无头模式 运行虚拟操作系统的信息 谷歌搜索清楚地表明其他虚拟化产品也具有类似的功能 但是 我无法找到这实际上意味着什么的很好的描述 当你这样做时会发生什么 无头模式意味着虚拟机
  • PHP:删除任何扩展名的文件?

    当用户上传照片时 它会检查他们是否已经拥有一张照片 如果他们这样做 我希望它删除旧的 可以有任何扩展名 然后放入新的 有没有办法在不从数据库获取旧扩展的情况下做到这一点 目前的代码 del members gt prepare insert
  • 无法访问我的控制器/构造函数的输入

    我有一个简单的 Angular 2 组件 Input 我将其绑定到模板 模板显示输入数据 但我无法从构造函数访问它 import Component View bootstrap Input from angular2 angular2 i
  • 如何配置 IIS 以在 HTML5 模式下 URL 重写 AngularJS 应用程序?

    我有AngularJS 种子项目 https github com angular angular seed我已经添加了 locationProvider html5Mode true hashPrefix 到 app js 文件 我想配置
  • MSBuild 项目部署到本地文件夹并转换配置

    我在尝试找到正确的方法来使用 MSBuild 构建 Web 项目并输出仅包含可部署文件 即没有 cs csproj Debug config 等 但发布到本地文件夹的项目时遇到问题然后我可以通过 FTP RoboCopy 或其他方式 传输到
  • Haskell 错误:“非详尽模式”

    所以我有这个功能 当我尝试像这样使用它时 合并排序列表 1 1 1 1 它给了我一个错误 1 1 例外 SortFunctions hs 86 1 91 89 非详尽 函数 mergeSortedLists 中的模式 85 mergeSor
  • 如何向正在运行的 Linux 进程发送 Ctrl-Break?

    我正在调试在 Sun 的 JDK 1 4 2 18 上运行的应用程序中的内存泄漏 该版本似乎支持命令行参数 XX HeapDumpOnCtrlBreak 这可能会导致 JVM 在遇到控制中断时转储堆 如何将其发送到 Linux 机器上的后台
  • EnumChildWindows 还是 FindWindowEx?

    我可以选择使用 API EnumChildWindows 或 FindWindowEx 中的任何一个 有什么建议哪个 api 更注重性能 FindWindowEx 内部是否使用 EnumChildWindows 来获取特定窗口的句柄 这实际
  • 联合元素对齐

    如果我有一个联合 C 标准保证联合本身将与最大元素的大小对齐 union U long l int i short s char c 2 u 但对于工会内部各个工会成员的协调 它是怎么说的呢 下面的表达式能保证为真吗 u l u i u i
  • C++ STL 下一个排列与组合

    我知道我可以使用std next permutation在包含元素的某些容器上 1 2 3 这将生成该序列的 6 种排列 我想做的是给定一些设置 1 2 3 4 5 6 生成大小为 3 的所有可能的排列 因此对于这个例子 4 3 2 将是由
  • 如何在主活动中注册接收者? [复制]

    这个问题在这里已经有答案了 我有一个SmsReceiver我想在主活动中注册的类 我到底应该做什么 我是安卓新手 你可以做两件事 创建和定义BroadcastReceiver in the Manifest 创建并注册BroadcastRe
  • 获取 $_SERVER['AUTH_USER'] 的空白值

    我有一个在 Windows 2008 Server R2 上运行的 PHP 应用程序 它使用 PHP 的 LDAP 库根据 Active Directory 对用户进行身份验证 As per 这个答案 https stackoverflow
  • OCaml:如何运行包含库的脚本

    我正在按照 Real World OCaml 一书来学习 OCaml 许多程序都需要使用 Jane Street Core 库 当我在顶层使用这个核心库中的函数时 它工作得很好 在那里 我只需使用以下命令来打开 Core 库 use top
  • YouTube iframe 不响应 postMessage 命令

    我正在尝试使用来自父级的 postMessage 命令来控制 YouTube iframe 但它似乎不起作用 由于多种原因 我没有使用 YouTube API 只是使用带有 YouTube 嵌入视频的普通 iframe 我尝试发送命令的方式
  • monodevelop 2.1+ 支持 Visual Studio 2010 项目文件吗?

    monodevelop 2 1 是否支持 Visual Studio 2010 项目文件 但是 如果不支持 有人知道计划何时提供支持吗 我问的原因是我有一个在 VS2008 和 Monodevelop 中都使用的解决方案 当我在 2010
  • 为什么 reposync 没有签出我在清单文件中指定的分支?

    假设我有以下清单文件repo https source android com setup develop repo tool MCVE https stackoverflow com help minimal reproducible e