svn объединяет их — полные результаты не логичны при работе с файлами с конфликтами и без конфликтов

#svn #version-control #merge

#svn #контроль версий #слияние

Вопрос:

Их опция слияния-полная причина того, что иногда «мои» изменения, которые не противоречат «их», отбрасываются, а иногда и нет. Это сбивает с толку.

С другой стороны, опция слияния theirs-conflict понятна: это приводит к тому, что «мои» изменения, которые не противоречат «их», всегда сохраняются. В случае конфликта будут приняты «их».

Я не понимаю, как их-full можно безопасно использовать. Логичный и безопасный способ — их конфликт.

Вопрос в том, имеет ли смысл менять их логику -полностью, чтобы всегда принимать «их» содержимое, независимо от того, существует конфликт или нет между файлами? Пока есть разница между файлами — берите «их».

Это сделало бы их-full намного более полезным и сделало бы его в соответствии с тем, что предполагает название этой опции.

Вот немного более подробное объяснение:

Если две версии файлов, одна из магистрали, а другая из ветки, имеют конфликтующие различия, тогда svn merge с их опцией-full примет полную версию «их» файла. Независимо от того, какая версия новее, слияние всегда будет принимать «их», в то время как «мои» изменения, конфликтующие или нет, будут отброшены!

Если две версии файлов не имеют конфликтующих различий, тогда svn объединит с их -полная опция объединит изменения из «их» в «мой» файл. Я получу комбинацию «их» и «моих».

Это приводит к неожиданным результатам слияния — файлы, в которых произошел конфликт, будут равны «их» версии, даже неконфликтные «мои» изменения будут потеряны. Файлы, которые не конфликтуют, будут иметь объединенное содержимое «их» и «мое».

Поэтому сделайте их-full, чтобы всегда принимать «их», для всех файлов, которые отличаются.

Комментарии:

1. Это утверждение, а не вопрос. У вас есть вопрос?

2. хорошо, я сделал свой вопрос более очевидным… так имеет ли смысл менять их логику -заполнять, чтобы всегда принимать «их» содержимое, независимо от того, существует конфликт или нет между файлами? Пока есть разница между файлами — берите «их».

3. Итак, вы хотели бы иметь что-то, что перезаписывает целевую ветвь исходной ветвью. Тогда это не совсем слияние. Больше похоже на копию, но копия, которая не теряет историю целевой ветви.

Ответ №1:

Итак, вы хотели бы иметь что-то, что перезаписывает целевую ветвь исходной ветвью. Тогда это не совсем слияние. Больше похоже на копию, но копия, которая не теряет историю целевой ветви.

Я думаю, что обоснование subversion заключается в следующем: если в целевой ветке есть какие-либо изменения, отсутствующие в исходной ветке, они не должны быть перезаписаны слиянием, слияние предназначено только для внесения изменений в исходную ветку в целевую ветку. Вероятно, это будет другой глагол, чем merge .

Я полагаю, вы можете написать сценарий с помощью чего-то вроде этого:

 svn checkout ^/branches/target
svn checkout ^/branches/source
copy -r source/src target/src
svn commit -m 'copy files in source to target' target