首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法用Lerna“刷新”导入的存储库?

有没有办法用Lerna“刷新”导入的存储库?
EN

Stack Overflow用户
提问于 2018-04-19 21:10:37
回答 2查看 1.4K关注 0票数 27

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

然而,目前在原始存储库中有一些正在进行中的特性分支,当我们转移到monorepo时,可能还没有准备好。我的理解是,lerna import只会从源代码回购中提取当前签出的分支--这是正确的吗?

所以,我想知道是否有一种方法可以再次进行导入,但只有自上次导入以来所做的提交吗?

这样,处理特性分支的团队一旦准备就绪,就可以合并到develop分支,我们可以将其带到monorepo中。

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

还是必须等到所有内容合并到develop之后才执行lerna import

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-01-15 17:59:23

使用@Doğancan Arabacı的回答和@Matt Mazzola的评论。我能够为自己做到这一点,但我已经添加了我自己的回答与一些更多的细节,试图给出一个更清楚的解释。

我也遇到了这个问题,因为如果目录存在,lerna import只允许导入一次。参见这里的代码

lerna import命令从原始存储库获取所有提交,反转并重放它们。但是,当分支发生分歧时(就像使用git rebase --onto命令时一样),没有办法重播这些命令。看这里 --我觉得您可以使用git rebase或使用类似的技术来选择分支的发散点来扩展lerna import命令。我也有一种感觉,可能会变得凌乱或采取,所以,目前存在的简单方式是:

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

从原始回购(称为original )

  • 签出并取出要导入的分支。
  • 从要导入的分支中剪切一个新分支:git checkout -b lerna-export
  • 将所有内容移到将导入到例如packages/original的目录中,比如:mkdir packages && mkdir packages/original
  • 将所有文件移动到新目录中:git mv -k * ./packages/original --您可能必须复制任何未被选中的文件

然后从勒纳回购:

  • 将原始回购添加为远程git remote add original ###url of repo###
  • 切换到要导入到git checkout -b orignal-import的分支
  • 将原来的分支合并到lerna:git merge original/lerna-export --allow-unrelated-histories
  • 如果您有任何冲突,请修复。
  • 推送到Lerna分支git push

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

当我推动其他作者提交时,我对BitBucket实例的安全性有一些问题,所以我不得不用git filter-branch重写git历史,但这似乎与提供详细信息的问题并不完全相关。

票数 3
EN

Stack Overflow用户

发布于 2018-12-11 13:41:59

我不知道lerna在做什么,但是用git做这件事有手动的方法。我们过去对8-10个存储库也做过类似的事情。

假设我们有MonoRepo和TargetRepo

  1. 转到MonoRepo
  2. git远程添加目标
  3. git结帐-b feature1
  4. git合并目标/特征1-分支对目标
  5. 对所有需要的分支重复步骤3和步骤4。
  6. 利润

您可以在任何时候重复步骤3-4,在几次提交之后,在一天内完成所有操作,然后移动到单次回购等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49930314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档