标签: git-submodules

最初只需要git子模块更新吗?

我得到了git子模块(一厢情愿的想法?),我想出更具体的问题,这是一个好兆头......

我试图找到超级项目引用的子模块的哪个版本,在.gitmodules和中.git/config,但是没有提到......
场景是我正在更改其根位置(从中导入它们)的子模块,然后将它们拉入"子模块化"的位置......
除了从超级项目中提交以将这些更改合并到超级项目仓库之外,我是否还需要git update注册新的拉入式子模块提交?

基本上问题是:

git submodule update只有当我第一次克隆超级项目时,或者每次拉动子模块(来自它自己的回购)后,我才需要" "吗?

谢谢

git-submodules

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

子模块在github页面中的行为如何?

我有这个github存储库,它是我正在开发的一个开源项目的网页:

https://github.com/o8/o8.github.com

根据github的文档,这个存储库是特殊的,因为它每次收到推送时都会构建一个github-pages网站.该网站在http://o8.github.com下可用.这很好用:-).

但是,我的存储库包含该文件夹下的子模块/oxy.这是/.gitmodules使用公共url(git://github.com/linepogl/oxygen.git)在文件中声明的.我希望这个子模块中的所有文件也都包含在github-pages网站中.这不会发生,或者至少我不知道如何使其工作.

例如,有文件/oxy/hlp/index.html.我预计地址http://o8.github.com/oxy/hlp/index.html会指向此文件.相反,我得到404错误.

有任何想法吗?

github git-submodules

11
推荐指数
1
解决办法
1894
查看次数

Git子模块:指定一个特定的SHA?

我在我的项目中引用了一个git子模块,现在需要在目标git repo中引用一个特定的SHA.

# .gitmodules
[submodule "vendor/plugins/ssl_requirement"]
  path = vendor/plugins/ssl_requirement
  url = git://github.com/retr0h/ssl_requirement.git
Run Code Online (Sandbox Code Playgroud)

我想要的SHA是bc96ad96407a72a60e0542cf3b0cecc6ff9e278e.

git git-submodules

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

git子模块更新在一台计算机上失败并出现错误,但在另一台计算机上运行

我创建了一个git子模块并将其推送到我们的主存储库.这很好用,我可以通过浏览器看到存储库中的子模块.

为了测试它工作正常,我试图得到源是一个新的构建树.首先我跑了git submodule init然后git submodule update <submodule-name>.

这失败了,错误:

error: pathspec 'x/mypkg' did not match any file(s) known to git. Did you forget to 'git add'
Run Code Online (Sandbox Code Playgroud)

我尝试添加到.gitmodules子模块的URL但没有运气.

git git-submodules

11
推荐指数
2
解决办法
8504
查看次数

git submodule foreach - 首先递归提交子模块的强大方法?

是否有一种强大的方法来执行递归深度优先git submodule foreach命令?我正在使用完成工作的foreach --recursive命令,除了它是广度优先.这是一个问题,因为如果我有以下结构:

  • 一个
    • 乙
  • C

我有三个提交,一个foreach --recursive add -A && git commit ...命中A,B,C,如果我希望超模块在那个时候捕获B的提交,这是有问题的.

我在2008年发现了这个讨论,但它看起来并不像我当前版本的Git中的任何建议功能(1.7.9.5).

我写了一个小的bash函数来做这个(原谅速记命名):

function git-sfed() { git submodule foreach "git submodule foreach '$*' && $*"; }
Run Code Online (Sandbox Code Playgroud)

使用以下fanciful命令测试它似乎工作:

git-sfed 'python -c "import sys; print sys.argv" $path'
Run Code Online (Sandbox Code Playgroud)

此命令看起来是否健壮,或者是否存在其他常见的现有方法?

git foreach git-submodules

11
推荐指数
2
解决办法
4737
查看次数

为什么不提交遵循merge-base错误?

我们对git的过程是定期合并到我们的主分支,以便可以将更改合并回我们的最新功能分支.由于最近几轮从一个分支合并到另一个分支,我们遇到的问题是解决方案不明确.

我们有一个存储库,其中包含19个子模块.当我们合并所有子模块时,我们看到我们认为是预期输出告诉我们文件被修改,冲突等等.然后当我们进入"根"存储库的合并时,一切都向南,我们看到一些以下输出(编辑以指出问题).

warning: Failed to merge submodule projects/foo1 (commits don't follow merge-base)
warning: Failed to merge submodule projects/foo2 (commits don't follow merge-base)
warning: Failed to merge submodule projects/foo3 (not fast-forward)

Found a possible merge resolution for the submodule:
 931a61165f3b2079523a122477fa5f44c123406d: Comment of last merge

If this is correct simply add it to the index for example by using:

 git update-index --cacheinfo 160000 931a61165f3b2079523a122477fa5f44c123406d "projects/foo3"

which will accept this suggestion.
Run Code Online (Sandbox Code Playgroud)

现在,我们可以运行建议的git update-index命令.这将使git对这一个子模块感到高兴,但我们以前从未必须运行它.在查看没有显示帮助的foo1和foo2子模块时,问题非常严重.

git git-merge git-submodules

11
推荐指数
1
解决办法
4436
查看次数

使用Git和Nuget管理内部共享库

我刚刚开始拆分包含所有产品代码的Git存储库,其中包括共享库,服务器,客户端和工具代码.

作为消除我们对DCVS的一些技术债务的一部分,我们建议将我们的共享客户端和服务器库移动到Nuget存档,该存档将对开发和发布分支具有严格控制的推送权限,以强制推动拉动请求我们一直懒散.分裂部分没什么大不了的; 我根据git filter-branch自己的喜好量身定制了历史保留,现在我正在研究如何将存储库重新组合在一起.

目前,在我准备将它们打包(以及正确的单元测试等)之前,库并不完全清晰,需要进行一些重构,并且希望能够对两个存储库进行更改,重点是代码审查,作为中短期解决方案.

我已经阅读了足够的内容,git subtree并git submodule了解他们的相对优势和劣势,但仍然对于该怎么做有冲突.虽然绝大多数资源git submodule由于其对那些不知道如何使用它的人的脆弱性而受到反对使用(有罪!),但它的另一种选择git subtree似乎缺乏我正在寻找的显式引用功能.

如果有人有类似我正在寻找的设置,或者有不同的工作流程,你能评论一下吗?当我"等待一口"时,我将离开并测试这两种策略,并希望有更高的评估.

git shared-libraries git-submodules nuget git-subtree

11
推荐指数
1
解决办法
805
查看次数

如何安装私有Python包作为构建的一部分

我有一个相当大的私有python包我刚刚完成创建.我想将它作为我在Docker容器中的应用程序的构建过程的一部分进行安装(尽管这不是那么重要).包源非常大,所以理想情况下我不会下载/保留整个源代码.

现在,我一直在和我的应用程序一起传递包源,但这是笨拙的,希望是暂时的.什么是更好的方式?git子模块/子树?我对此很陌生.

python pip git-submodules docker

11
推荐指数
3
解决办法
4976
查看次数

Git子模块:可以提供对子模块的https和ssh访问吗?

是否可以同时提供对git子模块的https和ssh访问?

有些人可能更喜欢使用https而有些人可能只能使用ssh(例如因为他们在ssh隧道后面).

是否可以提供两个获取子模块的选项?

git ssh git-submodules

11
推荐指数
1
解决办法
856
查看次数

从不同的目录运行早午餐并使用相对路径

我们希望在多个项目中使用相同的构建系统.我有一个工作早午餐配置文件,我想放在一个git子模块中,以便可以在多个项目中引用该子模块,并且更改很容易传播(比复制和粘贴更不易碎,并设置brunch-config.js的权威来源) .

将brunch-config.js放在git子模块中会导致我的文件夹结构如下所示:

WebApp // git root
|---Brunch-Build-System // git submodule
|   |---brunch-config.js
|---node_modules
|---source // all the source code I want compiled
Run Code Online (Sandbox Code Playgroud)

早午餐运行假设brunch-config.js将与正在编译的源相同或更高.在此设置中,情况并非如此.我已经尝试修改我的brunch-config.js使用相对路径无济于事.这是我files目前的Brunch配置块,没有任何相对路径尝试:

files: {
  javascripts: {
    joinTo: {
      'js/lib.js': /^(?!source\/)/
    },
    entryPoints: {
      'source/scripts/app.jsx': {
        'js/app.js': /^source\//
      },
    }
  },
  stylesheets: {joinTo: 'css/core.css'}
}
Run Code Online (Sandbox Code Playgroud)

如果上面给出了所需的文件夹结构,我如何修改它以使用相对路径?这甚至可能吗?

javascript git git-submodules brunch

11
推荐指数
1
解决办法
524
查看次数