Git 子模块:位于子模块文件夹中的文件是否必须由同一子模块跟踪?

2023-12-13

我有 git repo A 包含子模块 B. 一些文件file.c位于 B 的文件夹内,正如您所期望的,它本身位于 A 的文件夹内。问题:我可以跟踪这个文件吗file.c来自 A 而不是来自 B ?这有什么意义吗?

想法是 B 的任何用户都必须添加自己的file.c在 B 的文件夹层次结构的这个特定位置中。如果有人没有做到这一点,但仍然将 B 添加为子模块,B 将简单地指出编译/运行时没有目标文件。


我有 git repo A 包含子模块 B。

换句话说,您可能有:

$ cd /path/to/A
$ ls
B/    README

例如(有点愚蠢)。 (还有一个.gitmodules在这里,但它被隐藏起来,因为它是一个点文件。)

A file file.c位于 B 的文件夹内,正如您所期望的,它本身位于 A 的文件夹内。问题:我可以从 A 而不是从 B 跟踪该文件吗?这还有意义吗?

The question有道理,但是answer是一个响亮的No (轰隆声,轰隆声)。问题在于子模块 B 的存在在存储库 A 中的表示方式。

存储库 A 的当前 (HEAD) 提交有tree声称存在至少两个的对象blob对象:

  • .gitmodules:该文件包含存储库的 URL 以及path条目说B
  • B:这个 blob 有模式160000(“gitlink”条目)。该 blob 的“内容”是 Git 应该检查的提交哈希 ID,一旦 Git 克隆了 URL,以便B/存在。据推测,检查哈希 ID 会得到一个名为file.c, 以便B/file.c exists.

存储将被提取到的 blob 的存在B/file.c在超级项目内A,Git 需要存储第二个tree对象命名B在顶层树中(第二个tree对象本身有一个名为的 blobfile.c,然后将被提取到B/file.c)。但是已经有gitlink了blob对象命名B,所以不能:不允许使用重复的名称。

想法是 B 的任何用户都必须在 B 文件夹层次结构的这个特定位置添加自己的 file.c。如果有人没有做到这一点,但仍然将 B 添加为子模块,B 将简单地指出编译/运行时没有目标文件。

你可以做的就是在子模块存储库 B 中存储 asymlink named file.c, 指向../user-supplied-file.c or ../user/file.c或一些这样的。现在存储库 A 需要包含user-supplied-file.c or user/file.c或链接指向的任何内容。

请注意,这将子模块与超级项目紧密耦合。此时,根本不关心子模块可能更合理。库和其他此类值得子模块的项目通常不需要额外的源代码;他们可能有一些惯例函数指针,并通过这些指针调用这些函数,但它们不具有完全外部的源依赖项。

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

Git 子模块:位于子模块文件夹中的文件是否必须由同一子模块跟踪? 的相关文章

随机推荐

  • C# directx 精灵起源

    当我的精灵旋转原点固定在窗口的左上角时 与精灵绘制 and 精灵 Draw2D 不管怎样 如果我改变旋转中心 它仍然在左上角 我需要精灵绕其 Z 轴旋转 Edit 我已经尝试过这个 hereMatrix pm Matrix Translat
  • 如何在 iOS 中计算对数? [复制]

    这个问题在这里已经有答案了 我想在 iOS 中计算对数 Objective C 可以做到这一点吗 您可以使用C 函数用于计算对数 import
  • 语音识别 Android 应用程序

    我正在制作一个应用程序 它接受用户的命令并实时写入 我最好的选择是什么 像 sphinx 这样的第三方软件还是应该使用内置的 android 语音识别 其次 我希望它能够实时写入 就像我说话时它就开始写入一样 您应该使用内置的 Androi
  • 函数 simplexml_load_string() 上的 XML_PARSE_HUGE

    常数XML PARSE HUGE可以作为第三个参数传递给simplexml load string 根据php net这个标志 放宽解析器的任何硬编码限制 什么是 解析器的默认硬编码限制 我认为放松也有点含糊 它是否消除或增加了 硬编码限制
  • 按钮中的图像 - j2me

    我正在尝试使用 J2ME 构建一个简单的基于菜单的 GUI 菜单项当前是从 Button 类派生的类的对象 有什么办法我可以 替换按钮中的文本并显示图像 类似图标 使文本和图像并排显示在同一菜单栏上 如果我的问题不清楚 请告诉我 我会编辑它
  • 如何使用 PyEnchant 更正文本并自动返回更正后的文本

    import enchant import wx from enchant checker import SpellChecker from enchant checker wxSpellCheckerDialog import wxSpe
  • 我可以对 byte[] 执行按位运算吗?

    假设我有 byte data new byte 1 212 29 144 我能够弄清楚执行按位 AND 的唯一方法是首先将 byte 转换为 uint if BitConverter ToUInt32 data 0 0x7 1 If the
  • Wpf 数据网格最大行数

    我目前正在使用数据网格 我只想允许用户在将 CanUserAddRows 设置为 false 之前输入最多 20 行数据 我在自己的数据网格上创建了 一个依赖属性 源自原始数据网格 我尝试使用该事件 ItemContainerGenerat
  • Pygame:让物体移动速度慢于 1 [重复]

    这个问题在这里已经有答案了 我制作了一个类似太空入侵者的小游戏 一切都很好 除了我觉得我编程的敌人移动得太快了 如果我将它们的移动速度设置为低于 1 例如 0 5 它们甚至不会移动 有什么办法可以让动作变得更慢吗 这是我的敌方单位的代码 i
  • R CMD 检查和 .RDa 数据文件

    我在 data 子目录下有 RDa 格式的数据文件 但是 R CMD check命令无法识别load test RDa 命令及其在此阶段失败并给出以下错误 Warning in readChar con 5L useBytes TRUE c
  • SDL_DisplayFormat 未在此范围内声明:使用 SDL2

    编译器不会返回丢失的 SDL h 而是返回 SDL DisplayFormat 未在位于不同标头的类成员函数的范围内声明 即使我已在 main 中对其进行了初始化 SDL Surface SpriteLoad Load char File
  • gemice_cube 用于重复事件

    我有简单的事件模型 标题 日期 用户 我按月创建了事件日历 gem watu table builder 我需要创建重复事件的功能 我发现我可以使用 gemice cube 来实现它 但我不清楚 我添加到模型 class Event lt
  • SQL 最后 X 条记录的总和

    我已经找了一段时间 但找不到这个问题的答案 也许我没有搜索正确的术语或其他东西 基本上 我有一个数据库 每个日期有任意数量的条目 我需要计算包含条目的最后 X 天的总和 忽略没有条目的日子 我知道如何找到每天的总和 假设我有一个名为 Yie
  • Mysql 距离内查询

    Options lat 25 7742658 lng 80 1936589 miles 30 Query SELECT 3959 acos cos radians lat cos radians lat cos radians lng ra
  • 在gdb中包含malloc.c的源代码吗?

    我如何包含 查看源代码malloc in gdb 我想一步步执行gdb 并步入malloc c调用任何 malloc 函数时的源代码 目前 gdb 所说的是 malloc c No such file or directory This这里
  • uint8_t 乘以布尔值是什么类型?

    来自standard 我试图了解表达式最终会成为哪种类型 bool myBool uint8 t 255 myBool 我保证吗myBool将被投射到uint8 t 又名unsigned char 或者整个结果可能是int 有用的链接 布尔
  • 为什么 git lfs migrate 不跟踪所有 pdf 文件?

    提前备注 git lfs migrate import include pdf 做的工作是git lfs ls files shows e6521dbea0 large180m pdf 我猜 但我还是不明白发生了什么 我需要使用git lf
  • 谷歌身份验证后,即将到来的网址不允许我在科尔多瓦应用程序中进一步前进

    您好 我正在使用 Visual Studio 2015 社区使用 Cordova 应用程序 只需使用 google 身份验证登录应用程序 通过在新窗口中打开它就可以很好地登录 但登录后它会给我三个弹出消息 而不是执行任何操作 这些消息是 在
  • PHP/Javascript 将消息传递到另一个页面

    那么让我解释一下 我基本上希望当您发表评论时 我使用 js jquery 脚本将字符串发送到 insert php 并插入数据库 您将收到 2 积分 现在我已经完成了 所以你得到了 2分 但我想显示一条像stackoverflow这样的消息
  • Git 子模块:位于子模块文件夹中的文件是否必须由同一子模块跟踪?

    我有 git repo A 包含子模块 B 一些文件file c位于 B 的文件夹内 正如您所期望的 它本身位于 A 的文件夹内 问题 我可以跟踪这个文件吗file c来自 A 而不是来自 B 这有什么意义吗 想法是 B 的任何用户都必须添