我一直在想,我理解传票,以及如何让它们在我的团队工作流程中工作,但显然我不理解,因为每次我尝试实现一些基本的工作流程时,都会有一些东西不能正常工作。
我已经在网上读到了几乎所有关于传票的东西,我遵循了人们发布的所有琐碎的例子,但当我试图做一些更复杂的事情时。也许我确实很好地理解了它,而我正在尝试做的事情并不是很好。
让我们从基础知识中解脱出来。假设我有一个远程的“有福”的repos集合。
http://acme.com/BlessedRepos/ProjA
/LibA
/LibB因此,我将/ProjA克隆到C:\ProjA,将/LibA克隆到C:\ProjA\LibA,将/LibB克隆到C:\ProjA\LibB。我用来创建我的.hgsub文件
LibA = http://acme.com/BlessedRepos/LibA
LibB = http://acme.com/BlessedRepos/LibB我承诺了所有的事情。然后我就可以推送ProjA了,一切都很好。
所以现在我团队中的某个人可以将/PrjoA克隆到C:\dev\ProjA上,这也会将LibA和LibB作为传票。这个人可以像我一样轻松地从“受祝福的回购”中推送/拉出。到目前为止一切顺利。
现在,我说:好了,ProjA团队,不要再往仓库里推了,那是我在审查你们的工作之后要做的。从现在开始,我希望所有人都将您的更改推送到位于以下位置的ProjA开发人员和ProjA QA远程存储库:
http://acme.com/Dev/ProjA
http://acme.com/QA/ProjA这就是我们的止步之处。尝试推送到http://acme.com/Dev/ProjA只会推送/ProjA,而/ProjA/LibA和/ProjA/LibB会被推送回它们在受祝福的存储库中的原始位置,而不是http://acme.com/Dev/ProjA的期望位置。
现在,我可以将我的.hgsub文件设置为LibA = ../LibA。这在一开始会起作用,但是如果我从受祝福的存储库克隆ProjA,它无法获得LibA或LibB,我相信是因为它希望找到本地存储库LibA和LibB作为我正在克隆的ProjA存储库的兄弟。我的意思是,如果我克隆到http://acme.com/BlessedRepos/ProjA到C:\Test\ProjA,它将失败,因为它希望在C:\Test\LibA找到一个现有的存储库。
我也可以将我的hgsub设置为LibA = LibA。但是,当您尝试推送到受祝福的存储库时,这样做会失败,因为LibA不是ProjA在受祝福的空间中的嵌套。我可以创建它们,但我再也不会返回到http://acme.com/BlessedRepos/LibA,只会返回到http://acme.com/BlessedRepos/ProjA/LibA,然后似乎已经背弃了子存储库的初衷。
我非常确定,如果我还有一些脚本可以运行,那么我的第一个方法就可以工作,这些脚本将遍历并将.hgsub文件中的所有值从“有福的”远程位置更改为"dev“和"QA”位置,但这似乎并不理想。
所以。如果有人真的在摸索这些东西,你能不能告诉我我哪里错了,或者我是如何使用subrepos实现我的原始工作流程的,或者只是确认我正在追求的东西并不真正适合subrepos。如果这有助于了解情况,我们可能会有大约15-20个“产品/解决方案”和50个“共享”项目。15-20个产品中的任何一个都可以使用其解决方案中50个共享项目中的N个。
发布于 2011-09-23 21:55:28
您缺少的关键部分是,您可以在服务器上多次公开LibA和LibB存储库,而不需要在服务器上有多个副本。有关传票的详细信息,请使用see my answer转到另一个问题。
另外,如果你有这样的问题,请到#mercurial来找我们--这比在StackOverflow上写长篇文章要好得多,因为那不是Mercurial社区所在的地方。您也可以使用我们提供的邮件列表。
https://stackoverflow.com/questions/7517795
复制相似问题