-1

我是一名开发人员,正在学习如何使用源代码控制软件。我已阅读Subversion 文档。我试图理解合并的概念。

假设两个开发人员正在处理不同的类,我可以将文件合并在一起。如果两个开发人员在同一个类上工作,合并功能会起作用吗?我意识到可以说这种编码实践打破了 SOLID:“开放-封闭”原则(http://en.wikipedia.org/wiki/SOLID_%28object-orientated_design%29),因此如果 Subversion 假设我正在徘徊即开发者遵循开放封闭原则。

如果对trunk中的class1进行了更改,在branch中对class1进行了更改,那么branch和trunk是否可以合并?

4

1 回答 1

1

模式

版本控制系统不假定任何特定模式。您可以使用它们来实现不同的工作流程,并由您的开发人员使用最佳实践。但是,可以将分支和合并视为基本概念,并被大多数团队在其工作流程中使用。与例如 Git 相比,Subversion 中的分支不是很自然的操作。基本上它只是另一个目录的副本(很可能/trunk)。所以你可以说 Subversion 根本不假设你使用分支。甚至没有svn专门用于分支的命令。

合并和自动合并

一个类的两个修订可以合并。对于 Subversion,它们只不过是文本文件。它不会识别任何子结构,如类。

如果两个更改不在同一个位置,则合并算法很可能能够自动合并文件。如果是,则合并过程将暂停,您需要手动解决冲突。然后,您可以手动选择接受文件的一个版本,单独接受来自任一侧的块,或以任何其他方式手动合并文件。

请注意,自动合并有时可能不起作用。在最坏的情况下,它们将完美地合并,并且程序仍然是可编译/可执行的。但是,它不会按预期运行。所以检查合并的结果是个好主意,特别是如果它们是自动合并的。

于 2013-06-30T14:06:02.390 回答