2010-05-04 31 views
2

处理一些棘手的问题,希望得到社区的帮助。基本上,我们的开发团队被分成两个小组,可以说“红”,“蓝”分布式源代码管理 - 推送个人更改集

3回购:
1:主
2:红>>主
的克隆 3:蓝色>>主人克隆

每位开发人员在他们工作的本地机器上克隆红色或蓝色。

双方正在为我们的主要应用程序开展各种工作。每个团队都有我们共享的“主”存储库的克隆,他们正在应用其变更集。变更集在该级别进行验证,此时他们已准备好进入主人。

为了简化,可以说开发者A和B都是红队。

所以,当开发商一个推压变更集1,那么开发人员B推压变更集2。然后变更集1进行验证,并准备进入主站,变更2是不是问题就来了。

我要推变更1,尽快掌握,而不是等待验证,变更集2,特别是因为变更3可能在此期间被引入。

我们现在使用的是mercurial,我喜欢它 - 如果我想要做的工作流会更容易,我会愿意切换到git。

我在想这个错吗?我很感激帮助。

+0

你有三个不同的主干这是令人困惑的。你可以使用可能使用trunkRed,trunkBlue和trunk(对于父“trunk”)来重新提出你的问题。 – Lohrun 2010-05-04 18:55:21

+0

为您的工作流程制作一张ascii图表是否太麻烦了?我很困惑。 – 2010-05-04 18:57:30

+0

另外,如果红色有变化b c,A和B进入。蓝色有b和c,A进入,但B取决于红色C.是什么东西在推动之前神奇地解决了这种依赖性? – 2010-05-04 18:59:19

回答

-1

我不熟悉善变的分支,但这里是你会怎么做在SVN - 我敢肯定有一个等效。您需要设置分支,并将变更集合合并到/ trunk中。这使您可以选择和修改哪些版本,而不是只需要执行“svn up”并全部获取。

例如,你可以有像

/branches/dev 
/trunk 

在这种情况下,/行李箱被认为是当前稳定的代码,这将在生产环境中运行。假设你只是想推红队的修订100,蓝队的修订110从内/行李箱,你会怎么做:

svn merge <host>/branches/dev -r 99:100 
svn merge <host>/branches/dev -r 109:110 

,只有在那些特定的修订所做的更改将合并成/树干。

+0

他使用的是Mercurial,只是用SVN术语解释,这完全是令人困惑的。我不认为他在使用分支机构。 – 2010-05-04 19:01:07

+0

我知道,但由于我不熟悉Mercurial语法,我认为我至少会尝试并传达分支和合并的想法。他的场景正是分支机构的目标。 – 2010-05-04 19:16:50

+0

@Tim,虽然我同意试图在SVN中回答它令人困惑,但我认为他可能对分支有一点意见。特别是如果TeamA和TeamB真的只是不同的功能正在实施。无需多次回购,只需团队/功能分支。 – 2010-05-04 20:12:03

0
  • TeamA
  • TeamB

TeamA是准备推变化,您合并TeamA到主人,当TeamB准备就绪,就合并成TeamB高手。

定期上下行两个TeamA & TeamB应该读取/从Master合并,以确保thier版本有最新的代码。

如果您需要更多示例,请看Gitorious/Github是如何设置的。每个开发人员都有自己的项目克隆,然后当他们准备好时,他们申请合并到主仓库中。

这个原理可以应用于Merc,关键是确保经常获取/合并到Team Repos(开发人员回购)以确保将新代码引入到开发周期中。

+0

HG的这个问题很容易导致合并之间未解决的问题。 – 2010-05-04 19:02:43

+0

我明白这一点 - 问题是我真的不希望“红色”必须稳定才能将变更集从“红色”推送到主干中。所以我不想把整个克隆推回到主人,只是“挑选樱桃”的变化集。 – ChickenMilkBomb 2010-05-04 19:05:14

+0

您不必拉,当您将变更集合并入主干时,这是减少碰撞的最佳做法。 – Aren 2010-05-04 19:13:02

4

在特定的情况下,你所描述的:

我要推变更1至尽快掌握 ,而不是等待 核查变更集2, 特别是因为变更3可同时引入了 。

所有你需要做的就是hg push -r cset1其中cset1是你想要的CSET的版本号或节点哈希值。

当你把与-r它推动改变及其所有祖先的,所以你可以把变更1不推changeset2,但不用按变更1没有变更集2。

如果您需要将它们按顺序排列(两个但不是一个),那么您将使用TransplantExtension进行樱桃采摘,但只要您正在进行以便您有一个简单的选项。 (注意,为了避免“两个但不是一个”的情况,最好的计划是让任何一个写第一个特征的人做第一个hg update zero,这样两个和一个将是兄弟姐妹(两个孩子都是零),而不是父母 - 孩子,这更自然地反映了他们的真实关系,如果他们确实是可分离的特征。这可以通过分支明确地完成,但是严格地使用变更父母进行操作也是非常有效的操作模式。)

相关问题