我想知道,有没有哪种方式特定语言(C ++,Java,Python,Haskell等)特别适合一个VCS而不是其他语言?可能是由于语法或其他因素?
或者选择VCS 总是不受此类问题的影响?
答案 0 :(得分:3)
我知道的所有VCS都是内容不可知的,您可以存储二进制或文本(ASCII / UTF-8)文件。选择VCS的一个可能因素是开发操作系统支持(例如:git具有糟糕的Windows支持)和IDE集成,这可能是特定于语言的。
至于VCS是否应该不受这些问题的影响,我真的相信。同时它应该足够灵活,让其他工具可以完成语言和项目特定的事情(大多数VCS通过钩子来完成)。
答案 1 :(得分:2)
您放入VCS的内容可能非常重要:
存储:存储增量的方式可能因简单文本,Microsoft Word文档,UML模型(Rational .rose
文件),html页面,...而不同
例如,请参阅 ClearCase type manager ,作为VCS根据元素内容管理存储的示例。
合并:合并可以通过以下方式根据版本化文件的内容以不同方式完成:
关于你的问题,根据我的知识,版本化文件中的编程语言永远不是存储或合并的标准:它们(文件)只是文本。
如果区别对待它们,则仅在合并过程中,并且仅当外部合并工具足够智能以基于文件内容执行某种类型的“智能”合并时。 />
但是VCS本身通常不参与特殊合并(对于被视为文本的源文件)。
答案 2 :(得分:1)
VCS对你的内容无关紧要(你甚至可能没有代码),但你使用它的方式确实如此。大多数IDE可以与某些但不是所有版本控制系统集成。选择一个VCS,您的IDE可以集成(无论是本地还是插件),并提供显着的优势。
话虽如此,如果选择在没有IDE支持的VCS或根本没有VCS的情况下,总是始终使用VCS。
答案 3 :(得分:0)
倾向于使源文件的平均大小产生差异的事情。一些语言和编码样式往往导致10000多行代码文件。在这种情况下,您绝对需要基于合并的分支工具。使用较小的代码文件,其他人在同一文件中进行无关更改的可能性要小得多,因此主要通过锁定工作的工具/策略(仅偶尔进行合并)效果很好。