- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想使用提供 git 集成的流行的开源问题跟踪器 (Redmine)。不幸的是,跟踪器中的每个项目只能与一个 git repo 相关联。在跟踪器中创建多个项目不是我理想的设置。
考虑到这一点,我尝试使用 git 子树 merge (解释为 đây Và đây )。我创建了一个“伞形”存储库,它已 merge 到我正在使用的众多其他存储库中。
不幸的是,给出的例子只 pull 入每个子树的主分支。由于我在每个子树的多个分支中进行开发,因此我需要学习如何让这个伞形仓库反射(reflect)每个子树的每个分支。
Điều này có thể thực hiện được không?
额外学分:如果 2 个子树各有一个同名分支怎么办?
câu trả lời hay nhất
对于我们这些不熟悉 Redmine 的人,请扩展您的描述以包括以下问题的答案:跟踪器需要什么样的存储库访问权限?它需要自己提交吗?或者,它是否只需要某些类型的读取访问权限(也许是为了验证提交哈希并扫描提交日志中的关键字)?
如果您的跟踪器只需要读取访问权限,您可能根本不需要任何子树 merge 。在单个存储库中有多个初始提交(允许多个独立的历史记录)是完全可以接受的。 Git 项目本身为一些不共享(提交)历史的“额外”(man、html、todo)执行此操作,但与源代码的主要分支集(maint、master、next、pu)一起发布。为了您的目的,为每个子存储库设置一个远程并将它们的分支提示提取到您的聚合存储库中可能就足够了。也许自动的“远程跟踪分支”就足够了,或者您可能需要采取额外的步骤来基于远程跟踪分支创建(和更新)本地分支。
您描述的子树 merge 方案在源存储库中的分支不相关或仅半相关的一般情况下可能没有意义。但是,如果所有源存储库共享一组分支,其中每个分支的给定用途在所有存储库中都相同,那么您可能可以有意义地将它们 merge 为一种 super 存储库。
但有趣的问题不是“如果两个存储库具有相同名称的分支怎么办?”,而是“您如何处理存储库缺少共享的‘全局’集合中的分支的情况?”。
如果所有子存储库都具有相同的一组分支,您只需执行对 master 所做的操作,但每个分支一次。当存储库中缺少特定分支时,就会出现问题。您可以替换它的主人,但这可能并不总是正确的答案。这取决于您首先将存储库聚合在一起的原因以及您希望在 super 存储库中该分支的子树中“看到”的内容。
如果子存储库不是紧密相关的,那么我真的很怀疑这种子树方法的合理性。这种用于不相关存储库的方法感觉像是“违背常规”。这可能仍然是可能的,但我怀疑是否有任何工具可以提供帮助,您需要花一些时间来规划极端情况。
如果您最终坚持使用子树 merge ,您可能会查看第三方 git subtree
命令。它可能有助于保持您的无数存储库同步。
收集分支,不 merge
如果 Redmine 指定 --mirror
clone,这意味着它需要本地分支,并且可能无法直接读取“远程跟踪分支”,因此您可能需要创建和更新一些本地分支。
从“远程跟踪分支”更新的本地分支
mkdir $COLLECTION_REPO && cd $COLLECTION_REPO &&
git init
git remote add alpha
git remote add bravo
git remote add charlie
for r in $(git remote); do
git config --add remote.$r.fetch \
"$(git config remote.$r.fetch | sed -e 's.heads.tags.;s.remotes.tags/all.')"
git config remote.$r.tagopt --no-tags
xong
git remote update
git for-each-ref --shell --format \
'git branch --force --track -l all/%(refname:short) %(refname:short)' refs/remotes \
| sh
mkdir $COLLECTION_REPO && cd $COLLECTION_REPO &&
git init
git remote add alpha
git remote add bravo
git remote add charlie
for r in $(git remote); do
git config remote.$r.fetch \
"$(git config remote.$r.fetch | sed -e 's.remotes.heads/all.')"
git config --add remote.$r.fetch \
"$(git config remote.$r.fetch | sed -e 's.heads.tags.g')"
git config remote.$r.tagopt --no-tags
xong
git remote update
refs/heads/all//
下的分支。 ,但第一个在
refs/remotes//
下也有一组重复的引用文献.第一个使用普通的 fetch refspec 并使用
git branch
将“远程跟踪分支”(
refs/remotes/…
)复制到正常的本地分支(
refs/heads/all/…
)中。第二个使用自定义 refspec 将获取的 ref 直接存储到目标 ref 层次结构中。
git init --bare
以及以 .git 结尾的 repo 名称。还有
git config core.logAllRefUpdates true
可能是个好主意(因为这在裸存储库中默认为 false)。
all/
命名空间中的前缀,此方法与完整
--mirror
之间的另一个区别克隆是外部引用
refs/heads
Và
refs/tags
不会被收集。大多数其他常见引用被认为是存储库的“本地”(这就是为什么它们不会被普通克隆复制)。其他一些引用是“远程跟踪分支”(
refs/remotes
),一些“二等分”记录保存(
refs/bisect
),
git filter-branch
“原始”引用备份(
refs/original
)等。对于Redmine来说,这些其他事情可能都不重要。如果是,它们也可以包含在额外的引用规范中。
关于git - 使用git子树 merge ,同时也 merge 所有 merge 子树的所有分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2137950/
关于 B 树与 B+ 树,网上有一个比较经典的问题:为什么 MongoDb 使用 B 树,而 MySQL 索引使用 B+ 树? 但实际上 MongoDb 真的用的是 B 树吗?
如何将 R* Tree 实现为持久(基于磁盘)树?保存 R* 树索引或保存叶值的文件的体系结构是什么? 注意:此外,如何在这种持久性 R* 树中执行插入、更新和删除操作? 注意事项二:我已经实现了一个
目前,我正在努力用 Java 表示我用 SML 编写的 AST 树,这样我就可以随时用 Java 遍历它。 我想知道是否应该在 Java 中创建一个 Node 类,其中包含我想要表示的数据,以及一个数
我之前用过这个库http://www.cs.umd.edu/~mount/ANN/ .但是,它们不提供范围查询实现。我猜是否有一个 C++ 范围查询实现(圆形或矩形),用于查询二维数据。 谢谢。 最佳
在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择
书接上回,今天和大家一起动手来自己实现树。 相信通过前面的章节学习,大家已经明白树是什么了,今天我们主要针对二叉树,分别使用顺序存储和链式存储来实现树。 01、数组实现 我们在上一节中说过,
书节上回,我们接着聊二叉树,N叉树,以及树的存储。 01、满二叉树 如果一个二叉树,除最后一层节点外,每一层的节点数都达到最大值,即每个节点都有两个子节点,同时所有叶子节点都在最后一层,则这个
树是一种非线性数据结构,是以分支关系定义的层次结构,因此形态上和自然界中的倒挂的树很像,而数据结构中树根向上树叶向下。 什么是树? 01、定义 树是由n(n>=0)个元素节点组成的
操作系统的那棵“树” 今天从一颗 开始,我们看看如何从小树苗长成一颗苍天大树。 运转CPU CPU运转起来很简单,就是不断的从内存取值执行。 CPU没有好好运转 IO是个耗费时间的活,如果CPU在取值
我想为海洋生物学类(class)制作一个简单的系统发育树作为教育示例。我有一个具有分类等级的物种列表: Group <- c("Benthos","Benthos","Benthos","Be
我从这段代码中删除节点时遇到问题,如果我插入数字 12 并尝试删除它,它不会删除它,我尝试调试,似乎当它尝试删除时,它出错了树的。但是,如果我尝试删除它已经插入主节点的节点,它将删除它,或者我插入数字
B+ 树的叶节点链接在一起。将 B+ 树的指针结构视为有向图,它不是循环的。但是忽略指针的方向并将其视为链接在一起的无向叶节点会在图中创建循环。 在 Haskell 中,如何将叶子构造为父内部节点的子
我在 GWT 中使用树控件。我有一个自定义小部件,我将其添加为 TreeItem: Tree testTree = new Tree(); testTree.addItem(myWidget); 我想
它有点像混合树/链表结构。这是我定义结构的方式 struct node { nodeP sibling; nodeP child; nodeP parent; char
我编写了使用队列遍历树的代码,但是下面的出队函数生成错误,head = p->next 是否有问题?我不明白为什么这部分是错误的。 void Levelorder(void) { node *tmp,
例如,我想解析以下数组: var array1 = ["a.b.c.d", "a.e.f.g", "a.h", "a.i.j", "a.b.k"] 进入: var json1 = { "nod
问题 -> 给定一棵二叉树和一个和,确定该树是否具有从根到叶的路径,使得沿路径的所有值相加等于给定的和。 我的解决方案 -> public class Solution { public bo
我有一个创建 java 树的任务,它包含三列:运动名称、运动类别中的运动计数和上次更新。类似的东西显示在下面的图像上: 如您所见,有 4 种运动:水上运动、球类运动、跳伞运动和舞蹈运动。当我展开 sk
我想在 H2 数据库中实现 B+ Tree,但我想知道,B+ Tree 功能在 H2 数据库中可用吗? 最佳答案 H2 已经使用了 B+ 树(PageBtree 类)。 关于mysql - H2数据库
假设我们有 5 个字符串数组: String[] array1 = {"hello", "i", "cat"}; String[] array2 = {"hello", "i", "am"}; Str
Tôi là một lập trình viên xuất sắc, rất giỏi!