2010-06-30 48 views
0

我刚刚与我的经理进行了一次关于我目前正在处理的项目上签入\退出策略的对话。基本上我试图编辑一个已经被另一个开发者检查过的文件,但我不能 - 我问我的经理为什么我们不能同时编辑同一个类,他给出了关闭这个功能的原因:我们在开发人员编辑同一个表单(或设计器中的任何可视化工作)时遇到了很多问题,然后将其加入其中。合并设计器生成的代码中的更改非常麻烦 ...检入设计器生成的代码到TFS中,问题

由于我在写这篇文章的时候,我很努力地看到他们遇到了什么问题 - 当然他们在获取最新代码之前试图检查某些东西?

有没有人遇到过与其他开发人员编辑同一表单(或设计器中的某些内容)然后检入TFS的问题?如果是的话,你的团队如何解决这个问题?你是否也关闭了开发人员在同一个班上工作的能力?

编辑:下面的文章(found here)正是我的经理描述的问题。任何人都知道解决问题的方法比那篇文章中的更简单。

回答

2

我刚刚检查了一些.designer.cs文件的历史记录,我看不到会导致合并问题的任何更改。例如,没有代码的重新安排。

要考虑的另一件事是确保每个人都定期获得“最新消息”,那么任何单独的合并/解决方案都不会那么好,从而最大限度地减少发生错误的可能性。

也可能值得研究第三方合并工具。周围有很多。

现在可能是因为我所做的更改比较简单,所以您应该将我的轶事数据加入一点盐。

+0

对于”获取最新“的+1关于第三方合并工具 - 我已经对微软最新的合并工具印象深刻,并且没有感到需要进一步寻找 – Robaticus 2010-06-30 17:21:45

+0

以及“获取最新版本”您需要确保开发人员检查小而频繁的更改 - 合并的更改越小,结果正确的机会就越好 – STW 2010-06-30 17:27:30

3

我认为解决您的问题的方法是为源代码修改建立最佳实践。

阻止人们进入UI代码并随意在设计器中晃动组件。任何合理的用户界面修改都应该很容易合并。你最好的选择就是试着教育人们在任何给定的源代码控制系统中合并的最佳方式。此外,与设计人员一样有用,不了解背景中自动生成的代码是否会长期受到严重损害。

坚持锁定签出文件的原因是由于您在帖子中陈述的原因,通常会等待很长时间才能检查其代码。自然,时间越长,代码被修改的次数越多,因此合并这些人很难。提前,经常和逐渐检查需要人们分阶段思考他们的变化,而对于一些编码人员来说,这是一个相当痛苦的文化/心理调整。

1

当许多人同时编辑UI时,可能会导致问题(一般情况下)。合并逻辑将做一件好事合并的事情,但在很多情况下,UI是根据事物添加到表单的方式绘制的。你的用户界面可能会很快搞乱。

虽然我不知道我是否会以此为借口强制执行独家结账。我可能从一个(非编程式)政策的角度出发,说共享结帐业务逻辑,但不包括UI变化。

尽管如此,我会将它与MVP,MVC或MVVM的强大方法相结合,这将限制必须同时触及用户界面的人数。

正如其他人所暗示的那样,记住SCM的一个重要规则:尽早并经常合并,减少问题的发生。 (以及“在开始编写代码之前总是最新的)

+0

是的,我完全同意你和克里斯的看法,我认为目前关于构建的过程有点松懈,这就是为什么他们过去遇到过问题。我习惯于运行一个.bat,获取最新的信息,然后在本地构建一切(全部合并发布在这里解决)然后检查后触发CI构建 - 99%的时间通过,因为在本地构建中解决了所有问题。 – 2010-06-30 20:39:16