标签: git-submodules

将 git 子模块转换为常规目录并保留主树中的历史记录?

我有一个由许多子模块组成的项目。然而,事后看来,其中一些子模块不应该是子模块,因为它们并不意味着或永远不会在另一个项目中使用,而且我偶尔会在它们之间传输代码。这个项目同时也是子模块中的实验,所以我对它有点疯狂。

我想知道是否有一种方法可以将子模块转换为常规目录,维护更改历史记录,但重写主项目的历史记录,以便将它们视为常规目录。

我看过有关子树合并的内容,但我希望有一种方法来重写提交,以便文件路径以子模块的路径为前缀。

git git-submodules

10
推荐指数
2
解决办法
5074
查看次数

我可以“取消初始化”一个 git 子模块吗?

我正在开发一个嵌入式项目,该项目将 Linux 源代码树作为子模块。我目前在非开发机器上工作,所以我永远不会使用这个存储库进行构建;仅供参考。

有一次我初始化了 linux 子模块(带来了大约 2.5GB 的数据),但现在我想反转这个过程,在这个存储库中保留未初始化的 linux 子模块。明确地说,就 Git 而言,我不想检查对子模块的任何更改;我只想要我的磁盘空间。

我怎样才能做到这一点?我可以删除./linux和.git/modules/linux目录以摆脱所有不需要的数据,但我怀疑这会让 git 理所当然地感到困惑和烦恼。

git git-submodules

10
推荐指数
1
解决办法
3873
查看次数

如何列出所有 Git 子模块的 URL?

“git Remote get-url origin”可用于获取远程位置。如何对所有子模块执行相同的操作?

git git-submodules

10
推荐指数
1
解决办法
4423
查看次数

如何将 git 子模块更新到特定提交?

git submodule update --remote
Run Code Online (Sandbox Code Playgroud)

上面的命令将子模块更新到最新提交,但是我想更新到特定提交(例如某些提交哈希)。如何实现这一目标?

git git-submodules

10
推荐指数
1
解决办法
2万
查看次数

使用嵌套的Git子模块时释放多个Maven工件

我一直在寻找一段时间,在使用嵌套的Git子模块时找不到任何有效的解决方案或指南/教程来发布Maven模块.

我们有一个复杂的公共和私人项目结构,需要特定的订单才能成功构建.我们的目标是执行Maven版本,以便在一个步骤中标记和部署多个Maven工件.

这是简化的Maven项目/模块和Git存储库结构:

parent-public:1.0.0:pom (descriptor only, no Maven modules, public Git repository)
  |  |
  |  |- public-module:1.0.0-SNAPSHOT:jar
  |     (Maven module, child of parent-public, Git submodule, public repository)
  |
  |- parent-private:1.0.0-SNAPSHOT:pom
    (Maven modules, Git submodule, private repository)
       |
       |- public-module:1.0.0-SNAPSHOT:jar
       |  (Maven module only, child of parent-public, Git submodule, public repository, released)
       |
       |- private-module:1.0.0-SNAPSHOT:war
          (Maven module, child of parent-private, released)
Run Code Online (Sandbox Code Playgroud)

当前结构允许Maven独立构建和部署项目/模块.

释放时public-module(从parent-public/parent-private/public-module目录),maven-release-plugin执行良好(已标记Git存储库并已部署发布工件).

在发布时parent-private,maven-release-plugin准备并开始执行发布,然后在目标结账期间失败(此问题在此处讨论,但解决方案在我的上下文中不起作用且没有足够的声誉来评论).

这是当前的 …

git release maven git-submodules maven-release-plugin

9
推荐指数
1
解决办法
4160
查看次数

使用 '--depth' 选项浅更新 git 子模块

git submodule update已支持--depth此答案中所述的选项。

但是我们仍然无法轻松确定深度值,这可能会使 git 无法找到子模块的预期修订版。

浅层更新子模块是否有真正的解决方案?

git git-submodules

9
推荐指数
1
解决办法
3819
查看次数

Conda 将一个 environment.yml 导入另一个

考虑将具有依赖项的 Python 子模块导入具有自身依赖项的项目的情况。假设子模块有它的environment.yml文件,而项目本身有一个environment.yml文件。

有没有办法创建一个包含这两个环境规范的环境,如果是这样,您将如何进行?(或者是否有更好/更优选的方法来处理这种情况?)

python git-submodules conda

9
推荐指数
1
解决办法
2613
查看次数

git 子模块状态显示错误的标签/分支

当我运行该命令时git submodule status,我看到对几个月甚至几年前标签的引用。其他一切都工作正常(代码检查了我的期望,并且没有其他奇怪的行为)。

问题是该命令显示不正确。一切正常。总是得到我所期望的,并且我经常使用和git submodule update更新子模块。git addgit push

username:~/src/main (master)$ git submodule status
 3f786850e387550fdab836ed7e6dc881de23001b module0 (old-tag-1234-g8f123456)
 89e6c98d92887913cadf06b2adb97f26cde4849b module1 (years-old-tag-4321-g12f4567890)
 2b66fd261ee5c6cfc8de7fa466bab600bcfe4f69 module2 (heads/master)
 e983f374794de9c64e3d1c1de1d490c0756eeeff module3 (heads/master)
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为我的所有子模块都已master签出分支。我希望这个命令能够显示heads/master所有 4 个模块。

username:~/src/main/module0 (master)$ git status 
On branch master
Your branch is up to date with 'origin/master'.

...

username:~/src/main/module3 (master)$ git status 
On branch master
Your branch is up to date with 'origin/master'.
Run Code Online (Sandbox Code Playgroud)

这些子模块也被正确引用 -git submodule update不会导致对它们进行任何更改。这是一个每天由数十人更新数十次的存储库 - 我们不小心使用 3 年前的代码或忘记更新它的可能性为零。

进一步强调: …

git git-submodules

9
推荐指数
1
解决办法
1076
查看次数

当使用多个“--file”选项时,如何设置 Docker Compose 相对于“.yml”文件的“env_file”?

我试图将我的env_file配置设置为相对于多个docker-compose.yml文件位置中的每个位置,而不是相对于第一个docker-compose.yml.

文档(https://docs.docker.com/compose/compose-file/compose-file-v3/#env_file)表明这应该是可能的:

如果您使用 docker-compose -f FILE 指定了 Compose 文件,则 env_file 中的路径相对于该文件所在的目录。

例如,当我发出

docker compose \
  --file docker-compose.yml \
  --file backend/docker-compose.yml \
  --file docker-compose.override.yml up
Run Code Online (Sandbox Code Playgroud)

env_file第二个(即backend/docker-compose.yml)和第三个(即)中的所有路径docker-compose.override.yml都相对于第一个文件(即docker-compose.yml)的位置

我希望env_file每个docker-compose.yml文件中的设置都与其定义的文件相关。

这可能吗?

感谢您的时间

如果您对上下文感到好奇:

我想要一个独立的后端存储库,并且后端开发人员可以在不需要前端容器的情况下对其进行工作。前端存储库会将后端存储库作为 Git 子模块拉入,因为前端容器需要后端容器作为依赖项。这是我的 2 个仓库:

后端的组织方式如下:

/docker-compose.yml
/docker-compose.override.yml
Run Code Online (Sandbox Code Playgroud)

前端的组织方式如下:

/docker-compose.yml
/docker-compose.override.yml
/backend/ # pulled in as a Git submodule
/backend/docker-compose.yml
/backend/docker-compose.override.yml
Run Code Online (Sandbox Code Playgroud)

如果我将其放入文件env_file中,一切都会正常docker-compose.override.yml。后端的覆盖 …

git git-submodules docker docker-compose monorepo

9
推荐指数
1
解决办法
642
查看次数

TF401019:名称或标识符为 public 的 Git 存储库不存在,或者您无权执行正在尝试的操作

我有两个名为private2和 的ADO 存储库public2。作为子模块的private2引用:public2

\n

在此输入图像描述

\n

我还添加了用于构建的 yaml 文件(vsts-cicd.yml),如下所示:

\n
resources:\n  repositories:\n  - repository: test\n    type: git\n    name: <ProjectName>/public2\n    ref: master\n\nstages:\n\n- template: build1.yml@test\n  parameters:\n    repoToCheckout: test\n    checkoutPath: \'$(Build.BuildNumber)\'\n\n- template: build2.yml@test\n  parameters:\n    repoToCheckout: test\n    checkoutPath: \'$(Build.BuildNumber)\'\n    \n- template: yaml/build3.yml\n\n
Run Code Online (Sandbox Code Playgroud)\n

在运行构建时,我看到前两个模板已成功完成。到达时- template: yaml/build3.yml失败并出现以下错误:

\n

在此输入图像描述

\n

我缺少什么?

\n

更新:

\n

我按照这篇文章(https://www.timschaeps.be/post/dealing-with-error-tf401019-submodules-azure-pipelines/)来解决这个问题,但是我没有\xe2\x80\x99在项目中看到这个选项设置:\xe2\x80\x98将作业授权范围限制为引用的 Azure DevOps 存储库\xe2\x80\x99。我缺少什么?

\n

在此输入图像描述

\n

git yaml repository git-submodules azure-devops

9
推荐指数
3
解决办法
3万
查看次数