问题标签 [subtree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1479 浏览

git - git checkout 远程分支显示无关文件?

master 分支有这些文件和文件夹(简化):

公共分支正在跟踪供应商存储库,并且已在上面的主分支中合并为公共文件夹的子树。public 只有三个文件夹(简化):

从 public 切换到 master 时,它的行为正确。

但是,当从 master 切换到 public 时,会发生一件奇怪的事情。它结合了两者的所有文件和文件夹:

但是,检查 git status 表明没有任何改变。

我发现 'git reset --hard' 修复了 public 。

CLUE:似乎这只发生在对 master 进行新的提交之后。git 会做某种自动合并吗?

在 'git reset --hard' 之后,即使重复,也可以正常结帐并返回公共工作。

第一次,我认为它已修复,但下次我进行更改时再次发生。现在让我再试一次以确保...

现在,我无法重现它。但它确实发生了两次。

另一个线索是,我第一次执行 git reset --hard 时抱怨文件被进程锁定。

关闭有问题的程序后, git reset --hard 成功,然后结帐在两个分支之间工作。

那么结帐是否会因文件被锁定和“静默”失败而感到困惑?更好的是,这就是失败的问题,就像 git reset --hard 一样,而不仅仅是报告成功并拥有一个混乱的工作空间。

在 git checkout 上设置任何其他智慧或选项以避免这种情况将不胜感激。

韦恩

0 投票
1 回答
2243 浏览

git - 使用 Git 如何从远程分支合并子树

Git 中的子树运行良好,尽管子树仍然支持一些 git 命令。

这是问题:

如何使子树从“稳定”或“集成”等不同的远程分支中拉出?


仅供参考,我们有subtree "push"一个脚本工作。事实上,它甚至可以将子树推送到我们在远程存储库上选择的特定分支。

有人知道如何在拉动时反向操作,甚至有线索吗?

简单的拉动是这样的:

一个可以尝试的想法:也许一个两步的过程就可以了。

  1. 远程分支从远程存储库分支中提取,如“ stable”,然后
  2. git subtree pull什么master

真诚的,韦恩

0 投票
2 回答
7369 浏览

java - 在Java中查找与给定子树匹配的树中的所有子树

我正在用 Java 编写代码,该代码使用无序的有根树,其中每个节点可能有任意数量的子节点。给定一棵树 T 和一个子树 S,我希望能够找到 T 中与 S 匹配的所有子树(即 T 中与 S 同构的所有子树)。

如果 S 的节点可以映射到 T 的节点,使得 S 的边映射到 T 中的边,则 T 的子树与 S 同构。

上一个问题已被问及如何查找树是否包含另一个子树,但是我希望能够在 T 中找到与 S 匹配的所有子树。此外,我希望能够从 T 中每个匹配项中的每个节点映射到S 中的对应节点。

也就是说,当找到匹配项时,它不仅应该作为指向 T 中与 S 匹配的树的根节点的指针返回,而且应该作为指向节点的指针对列表 [ (T1,S1),(T2,S2),...(Tn,Sn)] 这样 T1 是指向 T 中的节点的指针,该节点映射到子树中的节点 S1 等等。

或者,可以简单地返回值对的列表,因为树 T 中的每个节点和子树 S 具有与之关联的唯一整数标识符。

例如:

给定树 T 如下:

和子树 S 为:

应返回以下匹配列表:

[(a,x),(b,y),(c,z)] [(b,x),(d,y),(e,z)]

唯一匹配由 T 中的节点集确定,而不是T 和 S 中的节点之间的映射。

所以下面的匹配:

[(a,x),(b, z ),(c, y )]

被认为是重复的

[(a,x),(b, y ),(c, z )]

因为它们具有来自 T (a,b,c) 的相同节点集,所以应该只返回一个匹配项。

作为另一个例子,给定树 T:

和子树 S:

应返回以下匹配列表:

[(a,x),(b,y),(c,z)] [(a,x),(b,y),(d,z)] [(a,x),(c,y) ,(d,z)]

谁能给出如何做到这一点的任何示例代码?

编辑(关于 Chris Kannon 的评论):

我在想你想要有人为你编码答案吗?你走了多远?你写了什么代码?– 克里斯·坎农 1 小时前

我有以下代码,当运行时,它会建立一个指向树中与给定子树匹配的子树根节点的指针列表(matchesList)。但是,可能有多个子树以同一节点为根,目前每个节点最多只能添加一次到 matchesList,无论有多少匹配项在那里根。

此外,我无法弄清楚如何在子树中的节点和原始树中找到的匹配节点之间建立上述映射。

上面的代码尝试在以下位置找到所有子图:

哪个匹配:

该代码成功检测到存在以第一棵树的顶部节点和第一棵树的第三个子节点为根的匹配项。然而,实际上有 3 个匹配根植于顶部节点,而不仅仅是一个。此外,代码没有在树中的节点和子树中的节点之间建立映射,我无法弄清楚如何做到这一点。

任何人都可以就如何做到这一点提供任何建议吗?

0 投票
3 回答
4489 浏览

git - Git 子树标签

我想使用子树合并将远程项目拉到我自己的 git 树中的目录中。我按照这里的说明进行操作: 使用子树合并

但我不确定如何签出标签。我想这是一个常见的要求——你想引入一个外部项目,但要获得一个安全的标记版本的源代码。子树合并解决方案效果很好,但我不确定如何获得我想要的标签?爱 git,但有时它让我头疼....

0 投票
1 回答
1489 浏览

git - 使用 git subtree 合并,同时也合并所有合并子树的所有分支

我想使用一个流行的开源问题跟踪器(Redmine),它提供 git 集成。不幸的是,tracker 中的每个项目只能与一个 git repo 相关联。在跟踪器中创建多个项目不是我理想的设置。

考虑到这一点,我尝试使用 git subtree 合并(在此处此处进行解释)。我创建了一个“伞形”存储库,它已合并到我正在使用的众多其他存储库中。

不幸的是,给出的示例仅拉入每个子树的主分支。由于我在每个子树的多个分支中都在进行开发,因此我需要学习如何让这个伞式存储库反映每个子树的每个分支。

这可能吗?

额外积分:如果 2 个子树各有一个同名分支怎么办?

0 投票
1 回答
301 浏览

git - 将子树切换到不同的远程分支

考虑我的存储库的这一部分:

django 是我按照以下方法合并的子树:如何使用子树合并策略

现在我发现另一个依赖项与当前的 django master 不兼容,因此我想切换到 django/1.1.x。我该怎么做呢?

提前致谢。

0 投票
2 回答
1373 浏览

python - 仅解析 XML 文件的特定子树

我有一个巨大的 XML 文件。但是,我只对这棵大树的一个小子树感兴趣。我想解析这个子树,但我不想浪费时间解析整个巨大的树,因为我只打算使用它的一小部分。

理想情况下,我想扫描文件直到找到这个子树的开头,解析子树直到我到达它的结尾,然后甚至不费心阅读文件的其余部分。甚至可以用 XPath 表达式描述我感兴趣的子树。有没有办法使用lxml做到这一点?看起来您可以使用该iterparse()方法执行类似的操作,但根据文档,它看起来不会生成我想要使用的已解析对象。有什么建议么?

(不需要使用 lxml,但我想使用 Python,理想情况下我希望它很快。)

0 投票
1 回答
2872 浏览

python - 从以 xml 表示的树创建子树 - python

我有一个 XML(以树的形式),我需要从中创建子树。

例如:

子树将是

python中最好的XML库是什么?任何已经这样做的算法也会有所帮助。注意:XML 文档不会那么大,它很容易放入内存中。

0 投票
3 回答
2598 浏览

git - 进行部分克隆时,Git 子树未正确使用 .gitignore

我是一名研究生,拥有许多脚本、bibtex 中的参考书目数据、latex 中的论文草稿、开放式办公室中的演示文稿、scribus 中的海报以及图形和结果数据。我想把所有东西都放在一个项目中,受版本控制。然后,当我需要处理诸如参考书目数据之类的部分时,我想检查该子目录,根据需要对其进行修改并将其合并回来。我希望能够将一个版本检出到我的家用计算机上,并且与我的工作计算机不同,并对每个单独进行更改并最终将它们合并回来。我还希望能够从这个大项目中签出一段代码,并将其与版本控制一起导入到一个单独的项目中。如果我可以更改,我希望能够将它们合并回原始项目。

根据我的理解 git subtree 可以做到这一点。

http://github.com/apenwarr/git-subtree

有一个例子与我正在尝试做的事情类似:

http://psionides.jogger.pl/2010/02/04/sharing-code-between-projects-with-git-subtree/

假设我的项目的主干包含目录:(bib bin cfg data fig src todo)。

当我使用

我得到一个 bib 目录,以及所有应该被忽略或基于 .gitignore 视为二进制的文件,例如 src 目录以及其中以波浪号或 ./data 目录结尾的所有文件。

我的 .gitignore 文件如下:

我该如何防止这种情况?

0 投票
2 回答
5405 浏览

tinyxml - TinyXML 迭代子树

有没有人有代码来遍历 TinyXML 中子树的节点?IE:给定一个父母,遍历它的所有孩子和所有孩子的孩子?