我参与了一个包含两个独立存储库的项目,我们将很快将其合并成一个单一存储库。在这方面,Lerna的import命令非常有用,因此我们将保留项目的历史记录。
然而,目前在原始存储库中有一些正在进行中的特性分支,当我们转移到monorepo时,可能还没有准备好。我的理解是,lerna import只会从源代码回购中提取当前签出的分支--这是正确的吗?
所以,我想知道是否有一种方法可以再次进行导入,但只有自上次导入以来所做的提交吗?
这样,处理特性分支的团队一旦准备就绪,就可以合并到develop分支,我们可以将其带到monorepo中。
或者,是否有应对这种情况的策略?
还是必须等到所有内容合并到develop之后才执行lerna import?
谢谢!
发布于 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-exportpackages/original的目录中,比如:mkdir packages && mkdir packages/originalgit mv -k * ./packages/original --您可能必须复制任何未被选中的文件然后从勒纳回购:
git remote add original ###url of repo###git checkout -b orignal-import的分支git merge original/lerna-export --allow-unrelated-historiesgit push在所有分支导入之后,一旦导入所有分支,您可能希望删除第二个远程:git remove rm original
当我推动其他作者提交时,我对BitBucket实例的安全性有一些问题,所以我不得不用git filter-branch重写git历史,但这似乎与提供详细信息的问题并不完全相关。
发布于 2018-12-11 13:41:59
我不知道lerna在做什么,但是用git做这件事有手动的方法。我们过去对8-10个存储库也做过类似的事情。
假设我们有MonoRepo和TargetRepo
您可以在任何时候重复步骤3-4,在几次提交之后,在一天内完成所有操作,然后移动到单次回购等等。
https://stackoverflow.com/questions/49930314
复制相似问题