Есть ли способ заставить TortoiseSVN вести себя как TortoiseCVS? - PullRequest
2 голосов
/ 18 февраля 2009

Я работаю в смешанной среде контроля версий. Мы все еще в основном на CVS, но новые проекты в SVN. Тем не менее, мне трудно получить бай-ин для SVN, потому что TortoiseSVN не работает как TortoiseCVS.

Трехстороннее слияние имеет большой когнитивный диссонанс, и хотя TortoiseCVS, кажется, всегда правильно делает слияния, TortoiseSVN почти всегда требует помощи вручную. Также после устранения любых конфликтов вы должны вручную пометить файл как нормально.

Есть ли у кого-нибудь советы о том, как заставить TortoiseSVN работать больше как TortoiseCVS?

EDIT

Чтобы быть более понятным, я не хочу выполнять трехстороннее слияние, если возможно, я бы хотел выполнить двухстороннее слияние, как это делает TortoiseCVS. Я знаю, что полученный файл одинаков в CVS и SVN, например, файл проекта Visual Studio имеет две разные версии. Это всегда заканчивается конфликтом в TortoiseSVN и никогда не заканчивается конфликтом в TortoiseCVS.

SVN выглядит так:

<<<<<<< .mine
     <ApplicationRevision>22</ApplicationRevision>
=======
     <ApplicationRevision>28</ApplicationRevision>
>>>>>>> .r195290

CVS выглядит как

<<<<<<< SomeFile.cproj
     <ApplicationRevision>22</ApplicationRevision>
=======
     <ApplicationRevision>28</ApplicationRevision>
>>>>>>> 1.121

поэтому я смогу получить такое же слияние. Кроме того, TortoiseSVN почти всегда имеет конфликты при обновлении, если два человека работают с одним файлом, даже если они работают в разных местах, у TortoiseCVS такой проблемы нет. Я предполагаю, что TortoiseSVN более консервативен и заставляет вас проверять слияние. TortoiseCVS предполагает, что CVS понял все правильно. Мне было интересно, есть ли где-нибудь в TortoiseSVN некоторые опции, скрытые для того, чтобы он был более либеральным, а также выполнял двухстороннее слияние вместо трехстороннего.

О, и да, мы используем Subversion 1.5, у которой есть точки слияния (без этого ветви были бесполезны).

Ответы [ 5 ]

2 голосов
/ 18 февраля 2009

Взгляните на BeyondCompare и Araxis Merge . Они предлагают инструкции по их интеграции в TortoiseSVN в качестве пользовательских инструментов слияния / различий.

1 голос
/ 03 марта 2009

Маркировка конфликтов не должна иметь ничего общего с самой черепахой, а скорее SVN против CVS. SVN определяет, конфликтует ли файл, а не черепаха. Я не могу сказать, почему это так или что вы можете с этим поделать. Наверное, очень мало. SVN, вероятно, просто более консервативен, когда дело доходит до принятия слияний. Опять же, это не очень хорошо в отношении используемого алгоритма, но, похоже, он помечает файл как конфликтующий, когда измененные строки находятся достаточно близко друг к другу (и изменения отличаются).

Я думаю, что TortoiseMerge на самом деле довольно хорош, так что, надеюсь, я смогу объяснить это как можно лучше, и вы можете увидеть то, чего раньше не знали. Обычно у вас есть 2 панели рядом, а затем нижняя панель. Нижняя панель является результатом слияния с конфликтами, отмеченными красным, наряду с другими частями, которые уже были успешно слиты. На линиях конфликта вы можете щелкнуть правой кнопкой мыши и выбрать, сохранять ли ваши изменения (как видно на панели «Мои»), другие изменения (как видно на панели «Их»), или вы можете принять комбинацию этих изменений. .

Наконец, я могу объяснить, почему сохранение слияния и пометка его как разрешенного являются двумя отдельными шагами. В SVN пометка чего-либо как разрешенного позволяет снова его зафиксировать. Это в основном отказоустойчивый инструмент, который помогает вам не допустить фиксации файла, который вы слили в инструмент и сохранили, но все еще не закончили редактирование / тестирование. В основном SVN различает сохранение чего-либо в инструменте слияния и фактическое разрешение.

Надеюсь, это помогло.

0 голосов
/ 01 марта 2009

Я думаю, что ваш вопрос сфокусирован на том, как лучше поддерживать слияние с Subversion в Windows.

Возможно, это не совсем то, на что вы охотились, но я регулярно использую Emacs под окнами, чтобы облегчить слияние в Subversion.

Emacs + SVN под Windows

Комбинация EmacsW32 + cygwin svn ) + psvn пакет emacs + "встроенный" Инструменты emacs хорошо работают под окнами. вы обнаружите, что psvn в настоящее время входит в стандартную комплектацию Emacs, и если его нет в вашем, вы можете быстро и легко загрузить и установить его.

Из-за встроенной поддержки в наборе инструментов на основе Emacs я примерно в 5-10 раз быстрее в разрешении слияний, чем обычный сотрудник. Они кажутся довольными, используя TortoiseSVN + их другой любимый редактор, и используют его таким образом ... Я предлагал несколько раз инструктировать их об использовании и мощностях возможностей Emacs (после настройки он позаботится о себе), но, похоже, они предпочли бы придерживаться своих элементарных инструментов и не инвестировать в повышение своей производительности.

SVN является мощным инструментом, и если вам необходимо его использовать, вы также можете подумать о том, чтобы потратить некоторое время на то, чтобы заставить его работать на вас.

David

0 голосов
/ 01 марта 2009

Э-э, может быть, я упускаю проблему. Если TortoiseCVS делает это «правильно» (поскольку ваша команда нуждается в этом - или ожидает, что это будет сделано) ... то почему вы хотите выбрать TortoiseSVN?

Не путайте «цель» этой технологии ... «обслуживать» команду разработчиков в процессе разработки.

(в настоящее время я использую оба метода, чтобы опробовать TortoiseSVN ... но мне пока не нравится методика тегов / ветвления в SVN)

0 голосов
/ 18 февраля 2009

Просто дикая догадка, но если вы используете CVSNT на сервере, это наблюдение может быть основано на том факте, что CVSNT просто намного лучше при слиянии, чем SVN, потому что он имеет понятие «точки слияния». Обычно это приводит к гораздо меньшему количеству конфликтов при многократном объединении из одной и той же ветви.
Я не думаю, что с этим можно что-то сделать, по крайней мере, незаметным способом.

РЕДАКТИРОВАТЬ: Я стою исправлено. Начиная с версии 1.5 SVN также имеет точки слияния. Я бы удалил этот ответ, но думаю, что он все еще может быть полезен кому-то, кто использует более старую версию SVN.

Если это не то, о чем вы говорите, возможно, вам следует прояснить свой вопрос немного подробнее. Вы уверены, что речь идет о различиях между TortoiseSVN и TortoiseCVS, а не между CVS (NT?) И SVN?

...