1
7
这个确切的问题被称为“纠结的工作拷贝问题”。Ryan Tomayko有一篇题为 The Thing About Git 这就详细讨论了这个问题,以及Git如何解决它。
这是关于Git最好的事情之一。我用
|
2
3
我从一开始就通过维护多个工作区来通过性能来管理这一点。我的主要开发是在主线上(新开发发生的地方),而另一个则指向已发布代码的分支。如果我需要修复一个bug,我将转到发布分支。 我不确定这是否适用于您,但至少您不需要在每次修复bug时创建一个新的工作区(因为它已经存在)。 |
3
2
ClearCase还支持changelist(在其UCM风格中称为“活动”),并提出了类似的挑战。
只有当您确定“调试工作”与当前的开发工作(电子邮件功能)不兼容并且最好保存在单独的分支中时,选项1(“分支类型”)才有意义。然后,您可以将在“补丁”分支中所做的任何更正更新到主分支(因为并非所有要修复的bug都必须同时存在于这两个分支中:当前的开发可能会使某些修复过时)。
选项3说明了变更集概念的局限性:文件的单个修订版(或“版本”)只能是 一 一次更改集。
这个
选项2是一个实际的解决方案,当你意识到你对两个不同的努力有两个改变时(仍然是兼容的,不会“打破”彼此)。
同样,如果这两个开发工作(电子邮件和bug)是兼容的,那么您可以有一个混合活动的修订历史。 |
4
2
我们使用作业以便单个“任务”可以跨越多个已提交的变更集。 因此:
|
5
2
您没有提到选项4,即创建分支。 您可以拥有不进行任何单独更改的主代码行,只需集成其他分支。 然后,您就有了主要的开发线,在这里您正在创建您的奇特的新电子邮件功能。这是你大部分工作的地方。 最后你有了错误修复分支。这是你做所有小编辑和紧急错误修复的地方。一旦这些测试完成,它们就会集成到用于QA和发布的主代码行中(应该在单独的分支上)。然后可以将这些编辑从主线集成到开发线中,这样您就可以一直使用最新的代码。这种集成可以在您选择的时间发生,这样您就可以确信它不会在新代码中造成任何问题。 这是最好的解决办法。 |
6
1
为了提高性能,您可以使用p4 tar之类的工具: http://public.perforce.com/wiki/P4tar 它允许您保存和恢复当前的变更列表,进行修复,然后恢复您的工作。您仍然需要将更改集成到main.h中,但这会使任务更容易完成。 |
7
1
我同意 ChrisF :分支将是最自然的解决方案。 我使用Perfoce已有一段时间了,它确实没有其他scm那样强大的分支能力,但它是可以做到的。 诀窍很简单:为你正在做的每一项任务创建一个分支(上帝啊 branch per task pattern )切换到它。如果你需要修理其他东西怎么办?很简单,只需在签入所有内容(使用一些SCM,您甚至不需要签入)后切换到其他分支即可修复它,稍后返回到原始的“电子邮件”分支。 |
8
1
我认为解决表演中“混乱的工作拷贝”问题的方法是 shelving 您可以使用它的命令行,如下所示:
我通常在IDE插件(Visual Studio或Eclipse)或P4V中使用它。当您搁置文件时,您可以选择是否要还原文件,基本上是为您的紧急工作准备一份干净的工作。然后,当您完成返回中断的工作时,您可以取消搁置这些文件。 如果您使用的是命令行,则可以创建一个简单的脚本,该脚本将同时保存在所选变更列表中,并且如果成功地还原了所选变更列表中的更改,则会给您一个干净的记录:
只需使用变更列表编号作为参数来调用它。相反,当你完成了你的其他工作,你可以从你的架子上取下你的文件,然后按如下方式取下架子,这基本上就是你的出发点:
|