gpt4 book ai didi

javascript - 有没有办法用 Lerna "refresh"导入存储库?

转载 作者:IT王子 更新时间:2023-10-29 01:18:12 24 4
gpt4 key购买 nike

我参与了一个项目,该项目有两个独立的存储库,我们很快就会将它们组合成一个单一存储库。 Lerna 的 import 命令在这方面非常有用,因此我们将保留项目的历史记录。

但是,当前在原始存储库中有一些正在进行的功能分支,当我们转移到 monorepo 时,这些分支可能还没有准备好。据我了解,lerna import 只会从源代码库中提取当前 checkout 的分支 - 对吗?

所以我想知道是否有办法再次进行导入,但只提取自上次导入以来所做的提交?

这样,在功能分支上工作的团队可以在准备就绪后 merge 到 develop 分支,我们可以将其带入 monorepo。

或者,是否有应对这种情况的策略?

或者我是否必须等到所有内容都 merge 到 develop 之后再执行 lerna import

谢谢!

最佳答案

使用@Dogancan Arabacı 的回答和@Matt Mazzola 的评论。我自己能够做到这一点,但我添加了我自己的答案和更多细节,以尝试给出更清晰的解释。

我也遇到过这个问题,因为 lerna import 只允许你导入一次,如果目录存在你不能导入。 See code here .

lerna import 命令从您的原始存储库中获取所有提交,撤消并重放它们。但是,当分支发生分歧时,无法重放这些(就像您使用 git rebase --onto 命令可能会发生的那样)。 See here我觉得您可以使用 git rebase 或使用类似的技术来找出分支分支的位置以扩展 lerna import 命令来实现它。我也觉得可能会变得困惑或需要一段时间,所以目前存在的简单方法是:

对于您希望导入的每个分支:

来自原始repo(简称original):

  • checkout 并 pull 您要导入的分支
  • 从你想导入的分支上剪下一个新分支:git checkout -b lerna-export
  • 将所有内容移动到一个目录中,它将导入到例如packages/original 类似于:mkdir packages && mkdir packages/original
  • 将所有文件移动到新目录中:git mv -k * ./packages/original - 您可能需要复制所有未选择的文件

然后来自 Lerna 仓库:

  • 将原始仓库添加为远程 git remote add original ###url of repo###
  • 切换到要导入到git checkout -b orignal-import
  • 的分支
  • 将分支从 original merge 到 lerna:git merge original/lerna-export --allow-unrelated-histories
  • 解决任何冲突,如果有的话
  • 推送到Lerna分支 git push

导入所有分支后,您可能希望在导入所有分支后删除第二个远程:git remove rm original

我在 BitBucket 实例上遇到了一些安全问题,因为我正在 push 其他作者的提交,所以我不得不用 git filter-branch 重写 git 历史,但这似乎并不完全与问题相关,以提供详细信息。

关于javascript - 有没有办法用 Lerna "refresh"导入存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49930314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com