我得到了git子模块(一厢情愿的想法?),我想出更具体的问题,这是一个好兆头......
我试图找到超级项目引用的子模块的哪个版本,在.gitmodules和中.git/config,但是没有提到......
场景是我正在更改其根位置(从中导入它们)的子模块,然后将它们拉入"子模块化"的位置......
除了从超级项目中提交以将这些更改合并到超级项目仓库之外,我是否还需要git update注册新的拉入式子模块提交?
基本上问题是:
git submodule update只有当我第一次克隆超级项目时,或者每次拉动子模块(来自它自己的回购)后,我才需要" "吗?
谢谢
我有这个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错误.
有任何想法吗?
我在我的项目中引用了一个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 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 submodule foreach命令?我正在使用完成工作的foreach --recursive命令,除了它是广度优先.这是一个问题,因为如果我有以下结构:
我有三个提交,一个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的过程是定期合并到我们的主分支,以便可以将更改合并回我们的最新功能分支.由于最近几轮从一个分支合并到另一个分支,我们遇到的问题是解决方案不明确.
我们有一个存储库,其中包含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存储库,其中包括共享库,服务器,客户端和工具代码.
作为消除我们对DCVS的一些技术债务的一部分,我们建议将我们的共享客户端和服务器库移动到Nuget存档,该存档将对开发和发布分支具有严格控制的推送权限,以强制推动拉动请求我们一直懒散.分裂部分没什么大不了的; 我根据git filter-branch自己的喜好量身定制了历史保留,现在我正在研究如何将存储库重新组合在一起.
目前,在我准备将它们打包(以及正确的单元测试等)之前,库并不完全清晰,需要进行一些重构,并且希望能够对两个存储库进行更改,重点是代码审查,作为中短期解决方案.
我已经阅读了足够的内容,git subtree并git submodule了解他们的相对优势和劣势,但仍然对于该怎么做有冲突.虽然绝大多数资源git submodule由于其对那些不知道如何使用它的人的脆弱性而受到反对使用(有罪!),但它的另一种选择git subtree似乎缺乏我正在寻找的显式引用功能.
如果有人有类似我正在寻找的设置,或者有不同的工作流程,你能评论一下吗?当我"等待一口"时,我将离开并测试这两种策略,并希望有更高的评估.
我有一个相当大的私有python包我刚刚完成创建.我想将它作为我在Docker容器中的应用程序的构建过程的一部分进行安装(尽管这不是那么重要).包源非常大,所以理想情况下我不会下载/保留整个源代码.
现在,我一直在和我的应用程序一起传递包源,但这是笨拙的,希望是暂时的.什么是更好的方式?git子模块/子树?我对此很陌生.
是否可以同时提供对git子模块的https和ssh访问?
有些人可能更喜欢使用https而有些人可能只能使用ssh(例如因为他们在ssh隧道后面).
是否可以提供两个获取子模块的选项?
我们希望在多个项目中使用相同的构建系统.我有一个工作早午餐配置文件,我想放在一个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)
如果上面给出了所需的文件夹结构,我如何修改它以使用相对路径?这甚至可能吗?
git-submodules ×10
git ×7
brunch ×1
docker ×1
foreach ×1
git-merge ×1
git-subtree ×1
github ×1
javascript ×1
nuget ×1
pip ×1
python ×1
ssh ×1