Дело не столько в том, что они распространяются, сколько в том, что они отслеживают наборы изменений, а не версии. (Однако распределенные системы обычно работают с наборами изменений, в то время как централизованные часто используют версии; это связано с тем, что распределенные системы просто не будут работать с подходом, основанным на версиях, в то время как централизованные системы могут сойти с рук).
Subversion говорит: «Хорошо, сначала у меня была эта версия, а потом была эта версия». А затем, когда пришло время объединить, он берет две версии, сравнивает их и делает обоснованные предположения о том, как их объединить. Git, mercurial и подобные SCM, скажем, хорошо, сначала у меня ничего не было, затем кто-то внес это изменение, а затем кто-то другой внес это изменение и т.д. Когда наступает время слияния, в основном все, что им нужно сделать, это применить изменения в правильном порядок, исправляя номера строк здесь и там и принимая во внимание переименование файлов, но в основном это все.
У Subversion на самом деле недостаточно информации для интеллектуального слияния: она видит только различия, но не их происхождение.
person
tdammers
schedule
18.11.2010