- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道Git子模块是否合适
组织我目前在RCS下保存的一些代码,如果
因此,应该如何组织子模块。
模块概述
假设我有一个库模块集合(也许是库,也许是
单个库的一部分;这是一个需要讨论的项目)。
假设其中一些模块是基本模块,而其他模块取决于
在基本模块上。
所有这些模块都打算供其他包装使用
软件(程序),可能包括适当的
选择这些软件包作为子模块。
具体来说,库模块为:stderr
-标准化的错误报告例程(不依赖于
其他模块)。filter
—文件过滤器程序(如grep
或cat
):使用stderr
。debug
—调试跟踪支持:使用stderr
phasedtest
—单元代码测试:使用filter
,debug
和stderr
直接。rational
-使用的有理数算术包phasedtest
用于其测试代码,但独立于phasedtest
以及其他相关性。
许多其他程序使用stderr
。
许多使用它们的人还使用filter
(以及所有使用filter
也直接使用stderr
),但是有很多
确实使用stderr
但不使用filter
的程序。
有些程序使用debug
;基本上所有这些程序也使用stderr
直接,但他们可能会或可能不会直接使用filter
。
使用phasedtest
的单元测试程序可以使用也可以不使用stderr
,filter
和debug
直接使用(与stderr
相比,
其他),但是phasedtest
本身需要它们,因此此类程序始终
间接使用这些模块。
有些程序可能使用rational
。通常他们也会使用stderr
(我写的几乎所有内容都使用stderr
),但是这些程序没有
通常,直接直接使用phasedtest
。
只是为了澄清:目前,这些潜在的Git模块和
子模块根本不在Git中;他们中的大多数人都广泛(10-30
RCS(Y2K之前的SCCS)的历史记录,将在
他们过渡到Git。
目的是在适当的时候将所有存储库放入GitHub。
通常,这些模块都相当稳定。
它们确实得到修订或扩展,但不一定每年。
有时,三年或更长时间没有改变。
我有一个构建/分发系统,其中组成什么的文件
可能成为子模块被拉入更大的分布
程序准备发布时。
在正常(单人)开发过程中,材料生活在
库,其中数百个源文件内置到单个(静态)中
库(在$HOME/lib
中)和单个标头目录(在$HOME/inc
中,
与/usr/include
相似或完全独立/usr/local/include
)。
我正在寻求使结构“正确” —足够正确,以至于我
在将它们过渡到Git之前,我不会后悔。
我仍然有版本标记和标签问题需要解决;那是一个
整个单独的bag'o'worms,而不是这个问题的一部分。
子模块应如何组织?
根据我对子模块的了解,似乎:stderr
应该在其自己的存储库中。filter
应该位于自己的存储库中,并以stderr
作为子模块。debug
应该位于自己的存储库中,并以stderr
作为子模块。phasedtest
应该位于自己的存储库中,并具有:debug
作为一个子模块filter
作为一个子模块
但它是否还应包含stderr
作为直接子模块,或者
是否应使用嵌套子模块中的stderr
版本
(stderr
内部的debug
和/或内部的stderr
filter
)?rational
应该位于自己的存储库中,并且phasedtest
子模块(以及附带的任何子子模块组织phasedtest
)。
出现的问题filter
和debug
独立地需要stderr
子模块
(但它们不太可能严重依赖任何特定条件stderr
的版本-发行版级别上几乎所有可用的版本
10个就足够了)。因此,它们都需要在子模块中使用stderr
版本。
多少个图书馆:应该有?选项包括:
是否应该有三个独立的库:libstderr
,libdebug
,
和libfilter
?
或者libfilter
应包含stderr
中的材料,并且libdebug
应包含stderr
中的材料(两个
库)?
还是应该有一个复合库libjlss
stderr
,debug
和filter
中的元素?
如果共享库而不是共享库,答案是否有所不同?
静态的?phasedtest
代码是否应组织为第四个库
包含模块stderr
,filter
和debug
作为子模块
(这样,stderr
将出现3次,一次是直接
依赖关系,并且是debug
和filter
的依赖关系的两倍),或者
是否应该是一个较小的库,需要与这三个库链接
单独的依赖库?
由于rational
模块仅需要phasedtest
进行测试,
它不会安装phasedtest
一个或多个库。
但是它将需要它们可用于测试。
如果需要预安装的phasedtest
库(库),
还是应该是独立的并且具有必要的代码
测试作为其分发的一部分?
使用rational
的程序也可能会使用stderr
(可能会),
但可能会或可能不会使用debug
和filter
,并且可能是
除了自己进行单元测试外,不太可能使用phasedtest
组件。
主要问题
Git子模块是正确的方法,还是我应该在寻找
替代组织?
假设Git子模块合适,那么Git将如何
存储库组织得最好吗?
辅助问题
储存库是否有最小的合理大小?
一个存储库中是否有最大数量的子模块?
一个子模块是否是多个子模块的子模块是否重要
一个存储库使用的子模块数量?
子模块有常规的目录结构吗?
所有目录都直接位于顶层目录中,或某些位于
根目录或准随机中的标准目录名称
超级项目目录层次结构中的位置?
是否有我没有发现的明显陷阱?
最佳答案
您的前两个问题(“ git子模块是否合适?”和“我应该如何组织它们?”)实际上并不适合Stackoverflow:答案将主要是见解,而且很难确定任何一个答案都是“正确”。
您的辅助问题要稍微解决一些:
储存库是否有最小的合理大小?
不是,不是
一个存储库中是否有最大数量的子模块?
再说一次,没有,但是在创建带有数百个子模块的怪物库之前,请确保您首先熟悉使用它们的知识。人们对如何最好地管理子模块有不同的看法。 Here is one person花了一些时间思考的人。我不同意他的所有想法,但这至少是开始思考这个问题的一种方式。
单个子模块是否是单个存储库使用的许多子模块的子模块,这有关系吗?
并非如此,不是,尽管如果您在资源上散布着多个存储库实例,则可能会遇到版本偏斜的问题(例如,一个版本为A,另一个版本为B,另一个版本为C)。除非您非常小心。
子模块有常规的目录结构吗?所有目录都直接位于顶层目录中,还是位于根目录中标准目录中的某些目录中,或者位于超级项目目录层次结构中的准随机位置中?
没有,但是通常您会选择适合自己的东西并坚持下去。我见过许多将子模块放置在lib
或modules
目录中的项目,而其他一些项目确实将它们放置在顶层。
是否有我没有发现的明显陷阱?
请记住,当作为子模块签出时,当前HEAD由父存储库管理。也就是说,如果您cd
进入子模块,进行更改,将其推送,然后在父项目中运行git submodule update
,您将把子模块的本地副本回滚到记录在父模块中的任何提交。
出于这个原因,我通常将子模块视为存储库的只读实例,这些子模块只能通过运行git pull
进行更新(随后在父存储库中进行后续提交)。我仅在存储库的独立签出中编辑文件。
在将新更改拉入父存储库后,您需要进行培训以定期运行git submodule update
(以防这些更改包括子模块的新版本)。
关于git - 将代码组织到Git子模块中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47948619/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!