2013-06-30 3 views
-1

Я - один разработчик, изучающий, как использовать программное обеспечение для управления версиями. Я прочитал Subversion documentation. Я пытаюсь понять концепцию слияния.Объединение файлов, которые были изменены двумя разработчиками

Я могу объединить файлы, предполагая, что два разработчика работали над отдельными классами. Работает ли слияние, если два разработчика работают над одним классом? Я понимаю, что можно утверждать, что эта практика кодирования нарушает принцип SOLID: «Открытый-закрытый» (http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29), и поэтому я блуждаю, если Subversion предполагает, что разработчики следуют открытому закрытому принципу.

Если в класс 1 добавлено изменение в класс 1, а изменение произведено для класса 1 в ветке, можно ли объединить ветвь и соединительную линию?

ответ

1

Шаблоны

системы управления версиями не предполагают каких-либо конкретных моделей. Вы можете использовать их для реализации различных рабочих процессов, и разработчикам лучше использовать лучшие практики. Однако ветвление и слияние можно рассматривать как фундаментальные концепции и использоваться большинством команд в их рабочих процессах. Ветвление в Subversion не является очень природным оператором по сравнению с, например, Git. В основном это просто копия другого каталога (скорее всего, /trunk). Поэтому вы можете сказать, что Subversion даже не предполагает, что вы используете ветвление вообще. Нет даже команды svn, посвященной ветвлению.

Слияние и автоматическое слияние

Две ревизии одного класса может быть объединен. Для Subversion это не что иное, как текстовые файлы. Он не будет распознавать какие-либо подструктуры, такие как классы.

Алгоритм слияния, скорее всего, сможет автоматически объединять файлы, если два изменения: не в том же месте. Если они есть, процесс слияния будет приостановлен, и вам необходимо вручную разрешить конфликт. Затем вы можете вручную выбрать одну версию файла, принять куски с каждой стороны отдельно или вручную слить файл любым другим способом.

Помните, что авто-слияние может не работать. В худшем случае они будут идеально скомбинировать, и программа все еще компилируется/выполняется. Однако он не будет вести себя так, как ожидалось. Поэтому неплохо проверить результат слияний, особенно если они были автоматически объединены.

+0

+1. Я протестировал то, что вы сказали, и похоже, что это так. Можете ли вы уточнить, что вы подразумеваете под этим: «не в том же месте». Благодарю. – w0051977

+0

Зафиксируйте файл с помощью одной строки 'Hello, World!', Затем создайте ветку из этой ревизии. Измените «Мир» на «США» в одном филиале и на «Европу» в другом филиале. Зафиксируйте их и попытайтесь объединить файл. Вы получите неразрешимый конфликт, потому что вы изменили тот же _part_ файла двумя разными способами. Поэтому автоматическое слияние не удастся. – nif

Смежные вопросы