标签: git-submodules

Git子模块:每个都可以有多个URL吗?

我想知道每个git子模块是否可以有多个URL.如果其中一个出现故障或有人在阻止其中一个的代理后面,那么它将有一个以上的来源.

你有过这个问题吗?你会如何解决它?

git version-control dvcs git-submodules

5
推荐指数
1
解决办法
1130
查看次数

如何使用子模块和n层git存储库策略

我们正在迁移到git.我们有大量的模块构成我们的产品,其中一些模块在产品之间共享.该产品由"瘦"超级存储库(ssh://server/product.git)表示,该存储库仅包含子模块:

[submodule "module1"]
path=module1
url=ssh://server/product/module1.git
[submodule "module2"]
path=module2
url=ssh://server/product/module2.git
...
Run Code Online (Sandbox Code Playgroud)

我可以克隆超级存储库并使用子模块并提交它们,然后将子模块提交到超级存储库.

当我想引入另一层时,问题出现了.有两种基本方案(这可以组合起来制作更复杂的设置,但任何东西都应该是这些的组合):

  1. 作为开发人员,我克隆了一个中央存储库并开始工作.然后我想将我的代码提交到我们的持续集成服务器,然后再将我的更改合并到中央存储库.我让CI服务器克隆我的repo.这不起作用,CI服务器将克隆我的超级仓库,然后它将从中央存储库位置克隆子模块(因为它是在.gitmodules中所说的).

  2. 作为一个团队,我们希望在sprint结束之前将我们的代码合并到中央存储库之前,我们需要一个集成存储库.出于同样的原因,这失败了.

我尝试为子模块指定相对URL,但这也不起作用,因为当我们将第二层克隆到第三层时,相对URL相对于第二层存储库位置解析,但第二层子模块位置在第二层超级存储库.

我能同时拥有它吗?Git子模块和n层存储库结构?

git relative-url git-submodules

5
推荐指数
1
解决办法
490
查看次数

git repo奇怪的问题?

我刚刚在我的Mac上升级到OSX Lion,我用git repo获得了一个奇怪的问题.我在版本控制下有我的.vim文件,其中一些插件配置为git子模块.升级后,我在git status我的.vim目录中运行了一个命令并得到以下信息:

fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain …
Run Code Online (Sandbox Code Playgroud)

git git-submodules git-status

5
推荐指数
1
解决办法
3087
查看次数

切换到子模块时Git合并

我们在我们的应用程序中使用Qooxdoo框架.目前,它的副本存储在根文件夹"qooxdoo"中的Git存储库中.我们决定将子模块直接替换为GitHub Qooxdoo存储库,因此我们可以更容易地检查新版本.

我基于master创建了这些更改的分支,称为qooxdoo-update.完全删除旧文件夹并为qooxdoo添加了子模块.

git rm -r qooxdoo
git submodule add git://github.com/qooxdoo/qooxdoo.git qooxdoo

到目前为止,这非常好.但是当我想将master合并到这个分支以保持更新直到其他开发人员可以测试他们的代码而不是新版本时出现问题.

在qooxdoo-update分支中我发出命令:

git merge origin/master

CONFLICT(文件/目录):在origin/master中有一个名为qooxdoo的目录.添加qooxdoo作为qooxdoo~HEAD

然后...

git status未
合并路径:(根据需要使用"git add/rm ..."来标记分辨率)

   added by us:        qooxdoo
Run Code Online (Sandbox Code Playgroud)

运行...

git rm qooxdoo
qooxdoo:需要合并
rm'qooxdoo'
文件'qooxdoo' 的取消链接失败.我应该再试一次吗?(Y/N)

要么...

git add qooxdoo
错误:无法索引文件qooxdoo
致命:更新文件失败

所以我不确定如何解决冲突以成功完成合并.

git git-merge git-submodules

5
推荐指数
1
解决办法
2841
查看次数

单独的Git Repos用于前端和后端Web开发

我一直在研究git子模块,git子树和稀疏检查,我根本无法绕过它.这是我的用例:

我有一个repo,比方说frontend-repo,它不仅包含基于AngularJS的前端的文件,还包含与测试,文档等相关的一些文件夹.此repo中的子文件夹,称为"codebase",存储HTML,CSS和JS为应用程序.

我有另一个回购,让我们说backend-repo,它持有python/flask后端,它最初服务于AngularJS应用程序.这些文件需要位于application/static子文件夹中.

在进行开发和测试时,我们需要在application/static,debug,test,iterate中编辑文件直到完成.基本上,我一直在尝试使用git找到一种方法,将前端/ codebase文件夹本地检出到后端repo中.子模块我无法上班; 子树似乎也无法处理这个用例.

这里的最佳做法是什么?我可以简单地从一个目录设置一个符号链接到另一个目录,但我希望git有一个更好的方法来做到这一点.有没有人有这种工作流程的经验?

git git-submodules git-subtree

5
推荐指数
1
解决办法
1940
查看次数

是否可以添加/启动一个新的git子模块,并将ignore选项设置为某个值?

我有一个脚本为我和我的同事建立了一个项目.我们在我们的存储库中使用git子模块.我制作的脚本在子模块的目录中创建了未跟踪的配置文件(cabal的沙盒配置文件更具体).我永远不会修改子模块,永远不会推动任何更改.我希望这些配置文件不被列为对存储库的修改,因此我使用子模块选项忽略它们ignore = untracked.但是,我必须手动为.git/config文件中的每个子模块条目执行此操作.

眼下的问题:是否有可能在调用时设置每个子模块该选项git submodule addgit submodule init?如果没有,是否有任何git命令允许我在初始化后为每个模块设置这样的配置变量?

git automation gitignore git-submodules

5
推荐指数
1
解决办法
72
查看次数

弧形差异,包括子模块中的所有更改

我正在使用Phabricator,并且在git中有一个主要项目,而里面还有许多其他git项目的子模块。假设我在每个子模块中都更改了一个文件,并且我想对这一更改进行反差。有人知道是否有可能对主项目进行arc diff处理,它会通过所有子模块中的更改创建差异,然后arc land将推送每个子模块中的更改并更新指向主项目中子模块的指针吗?

git git-submodules phabricator arcanist

5
推荐指数
0
解决办法
358
查看次数

我的项目使用了超过100个git子模块,子模块替代方案可以优雅地处理大量存储库

我一直在研究git子树和git子模块的其他替代方法.我的项目有超过100个子模块,管理它们非常笨拙.

任何人都可以推荐一个工作流程,它可以很好地处理需要保持同步的大量存储库.

git workflow dependencies repository git-submodules

5
推荐指数
1
解决办法
3517
查看次数

共享Git子模块

我有图书馆A,B,C和D.

依赖关系看起来像这样:

   A
   |
  / \
B     C
 \   /
   D
Run Code Online (Sandbox Code Playgroud)

但是我们将B和C git repos设置为D作为子模块.我们想将B和C设置为A中的子模块,但我们也想以某种方式将它们都指向D的单个子模块实例.

有谁知道这样做的正确方法?

git version-control dependencies git-submodules

5
推荐指数
0
解决办法
50
查看次数

Gradle - 针对C++子模块库进行编译

我正在尝试设置一个本身使用另一个(而不是gradle)C++项目的C++项目.

由于编译不需要任何特殊内容,我尝试将项目作为子模块包含在内,并通过gradle本身将该库编译为库.

据我所知,我已正确设置构建脚本,如下所示:

// Project-Type
apply plugin: "cpp"
// IDEs
apply plugin: "visual-studio"

model {
    visualStudio {
        solutions.all {
            solutionFile.location = "vs/${name}.sln"
            solutionFile.withContent { TextProvider content ->
                content.asBuilder().insert(0, "# GENERATED FILE: DO NOT EDIT\n")
                content.text = content.text.replaceAll("HideSolutionNode = FALSE", "HideSolutionNode = TRUE")
            }
        }
    }

    repositories {
        libs(PrebuiltLibraries) {
            easyloggingpp {
                headers.srcDir "lib/easyloggingpp/src"
            }
            eigen {
                headers.srcDir "lib/OpenNN/eigen/src"
            }
        }
    }

    platforms {
        x86 {
            architecture "x86"
        }
        x64 {
            architecture "x64"
        }
    }

    buildTypes {
        debug
        release
    }

    components …
Run Code Online (Sandbox Code Playgroud)

c++ compilation gradle git-submodules

5
推荐指数
0
解决办法
208
查看次数