问题标签 [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 投票
3 回答
6298 浏览

git - 克隆使用子树的 Git 存储库的过程

我正在使用 Git 的子树命令将几个库拉入一个项目。

如果我然后以正常方式克隆项目,我最终得到了我需要的所有代码,但我失去了子树关系 - 在克隆中,每个库都没有远程,也没有 -push 分支的任何一方。

重新建立此连接的最佳方法是什么?

做就够了吗

如果我是第一次添加库,我会遵循:

但是,当本地目录已经存在时,这不起作用,当然,当您克隆一个已经添加了库的项目时,它会起作用。

在这种情况下还应该做些什么,以确保后续的 git subtree merge 和 git subtree split 命令达到预期的效果?

0 投票
3 回答
1406 浏览

git - 如何更改 Git 子树合并的来源

我有一个项目,我使用 Git 子树将其合并到一个库中。我已经在库和项目之间进行了一些小改动。

后来,创建了一个新的存储库,它是图书馆的最终归宿。它包含与我的项目基本相同版本的库代码,可能只有一两个小改动。由于各种原因,它不与库的先前主页共享任何直接的 Git 历史记录(它不是先前库的克隆)。

我现在要做的是更改我的项目,以便它从新位置拉/推库。第一次发生这种情况时,我还需要解决任何合并冲突,尽管在这种情况下更改是微不足道的,它们可以稍后重做。

做这个的最好方式是什么?

我尝试在我的项目中删除该库的副本,然后将其与旧的遥控器和分支一起删除。然后我尝试从新位置进行子树添加等。这似乎可行,但是当我尝试从我的项目推回库时,我遇到了一个致命的坏对象错误。

我认为我尝试过的方法存在缺陷 - 可能与缺乏共享历史有关 - 但我对正在发生的事情没有足够深入的了解,不知道如何解决它,或者什么应该是解决这个问题的“正确”方法。

[更新:编辑了问题以使其更清晰-有点模棱两可]

0 投票
4 回答
3337 浏览

python - 有没有比标准的“递归”更快的方法从 python 中的树状结构中获取子树?

假设以下数据结构具有三个 numpy 数组(id,parent_id)(根元素的 parent_id 为 -1):

对于许多id (>1000)来说,这真的很慢。有没有更快的方法来实现它?

0 投票
7 回答
27224 浏览

git - git subtree pull 说工作树有修改,但 git status 说没有。是什么赋予了?

如果我在我的一个存储库中执行此操作:

我明白了:

如果我这样做(当然是在同一个地方):

我明白了:

我不太确定这里发生了什么。git status 命令暗示我没有修改,所以我假设 git subtree pull 是指与子树相关的不同分支中的修改,但并不完全清楚。

任何人都可以提供启示吗?

0 投票
1 回答
878 浏览

git - git merge: remote repo exists in a subdirectory

I'm trying to convert an old CVS repository tracking a vendor branch to git, and I'm running into a merge issue.

The repository is structured like this:

dir2 comes from the upstream branch. Upstream converted to git already, and dir2 in our repo is the root of their git repo. I want to add them as a remote and merge their root into the subdirectory dir2.

Simple merging won't work: git treats their root as our root and finds no files in common.

Subtree merging won't work: you can't subtree merge into an existing directory. I followed the How to use the subtree merge strategy guide, and this command fails:

The problem is that it detects 'conflicting' files that already exist in dir2. I know the files exist, I want it to merge those files.

Any advice would be appreciated.

0 投票
2 回答
3938 浏览

git - Git子树合并策略,可以不合并历史?

我一直在尝试远离子模块以获得一个独立的存储库,并且子树合并策略似乎与这个用例相匹配。

然而,合并后的 repos 历史出现在我自己的项目历史中,这很烦人。

我已经尝试过git filter-branch --subdirectory-filter path/to/subtree/ HEAD哪个有效......直到我尝试更新一个子树,git pull -s subtree my-subtree master它将所有子树的文件重写到我的项目的根目录。

有没有办法在 git 中实现这一点?

0 投票
1 回答
642 浏览

git - "submodules" in git: braid or subtree or something else

To include a few external git repositories in my "main" repository, there are a few options:

  • submodules
  • braid
  • subtree

The first seems to be advised against by basically everybody. The second and third I believe are implementations of the subtree pattern.

Is one better? Which should I use? Why? How can I choose between them?

0 投票
3 回答
289 浏览

c++ - 是否可以编写一个真正通用的磁盘烘焙 B+Tree 实现?

前几次我用 C++ 编写了一个通用的内存 B+Tree 实现,我正在考虑让它在磁盘上持久化(这就是最初设计 B+Tree 的原因)。我的第一个想法是使用 mmap (我在 Linux 下)能够将文件作为普通内存进行操作,然后重写新的我的节点类的运算符,以便它返回映射部分中的指针并创建一个智能指针,该指针可以将 RAM 地址转换为文件偏移量,以将我的节点与其他节点链接。但我希望我的实现是通用的,因此用户可以在 B+tree 中存储一个 int、一个 std::string 或任何他想要的自定义类。这就是问题发生的地方:对于不包含指针的原始类型或聚合类型,这一切都很好,但是一旦对象包含对堆分配对象的指针/引用,这种方法就不再有效。

所以我的问题是:是否有一些已知的方法来克服这个困难?我对该主题的个人搜索最终不成功,但也许我错过了一些东西。

0 投票
3 回答
244 浏览

git - 使用 git 进行插件开发

已经提出了与此类似的问题,尽管它们并不是我想要做的。

起初我以为我需要一个 git 子模块,然后设置一个超级项目,然后合并一个子树,但我不确定这些是否真的适合。

我有一个项目(Eva),我正在为它编写一些可选扩展。因此,如果您要从 Github 下载 Eva 副本,它不会包含可选插件,但您可以单独获取并使用它们。

可选扩展与 Eva 位于相同的目录结构中。到目前为止很简单...

今晚我想为这些扩展添加测试,目前我将它们放在本地 Eva git repo 之外的单独目录中。为了运行这些测试,我真的需要这些扩展与 Eva 位于同一目录中,事件依赖于核心系统来运行。

我可以将 Eva 项目文件复制到扩展 repo 目录中,但如果我修改 Eva 的源代码,那么我必须继续复制这些更改。

我应该继续这个笨拙的设置,还是有更优雅的方式 git 可以适应这个?

也许我的要求与其他问题相反。我的扩展是 Eva 的一个子项目,我需要偶尔从 Eva repo 中获取更新。

如果我在有人克隆 Eva 时将我的扩展存储库添加为子模块,他们也会获得所有可选插件吗?我不想要那个。

也不确定子树合并是否合适,我永远不必将扩展项目拉入核心 Eva 项目。

0 投票
2 回答
1381 浏览

git - 如何从远程存储库合并/拉取

我正在尝试将一些子目录从远程 git 存储库合并到我的存储库。远程和本地存储库都包括整个内核存储库,我只对无线相关文件感兴趣。我尝试按照“如何使用子树合并策略”下的说明进行操作,但由于大多数文件都存在于本地存储库和远程存储库中,因此 git read-tree --prefix=dir-B/ -u Bproject/master命令失败。我无法在同一命令行中使用-m选项和。--prefix

这种合并实际上应该根据远程存储库中的文件更新(合并/拉取)所有相关的无线目录/文件,其中应该通过首选远程文件来解决冲突。

为了使我的问题更笼统-假设您有存储库A和B。两者都有文件夹wireless_dir:A/wireless_dir,B/wireless_dir。我正在处理存储库 B 并希望从 A/wireless_dir 更新其在 B/wireless_dir 中的所有文件,其中发生合并冲突时首选 A/wireless_dir 中的更改。