Обновление от svn, не объединяясь автоматически

Хотя это было разработано для .NET тестирование сети, я использовал платформа WatiN с этой целью. Так как это основано на DOM, довольно легко получить HTML, текст или изображения. Recentely, я использовал его для дампа списка ссылок от MediaWiki Весь запрос пространства имен Страниц в электронную таблицу Excel. Следующий VB.NET код fragement довольно сыр, но он работает.

Sub GetLinks(ByVal PagesIE As IE, ByVal MyWorkSheet As Excel.Worksheet)

    Dim PagesLink As Link
    For Each PagesLink In PagesIE.TableBodies(2).Links
        With MyWorkSheet
            .Cells(XLRowCounterInt, 1) = PagesLink.Text
            .Cells(XLRowCounterInt, 2) = PagesLink.Url
        End With
        XLRowCounterInt = XLRowCounterInt + 1
    Next
End Sub

17
задан laalto 13 August 2009 в 16:43
поделиться

11 ответов

Может быть, вы сможете убедить его позволить svn внести изменения и проверить их перед регистрацией?

Я нахожу команду 'svn diff --diff-cmd = kdiff3' полезно именно для этого сценария. Хотя, по общему признанию, это Linux, и ваш синтаксис будет отличаться от TortiseSVN.

1
ответ дан 30 November 2019 в 12:20
поделиться

TortoiseSVN FAQ: « предотвратить автоматическое слияние Subversion ».

изменить : Я копирую связанный ответ в FAQ, чтобы защитить этот ответ from link rot:

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

В TortoiseSVN-> Настройки-> Subversion файл конфигурации, нажмите на редактировать кнопка. Измените раздел [помощники] добавив

 diff-cmd = "C: \\ false.bat"
diff3-cmd = "C: \\ false.bat" 

(обратите внимание на двойную обратную косую черту) Создайте файл C: \ false.bat , содержащий две строки

 @type% 9
@exit 1 

Это фактически делает невозможным автоматическое объединение каждый раз, заставляя файл в конфликт.

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

17
ответ дан 30 November 2019 в 12:20
поделиться

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

Когда вы просматриваете слияние, прежде чем разрешить его, вы думаете о том, какие изменения вы собираетесь разрешить в свою базу кода, когда на самом деле вы решить, какие фрагменты зафиксированного кода вы собираетесь удалить из базы кода. Это тонкое, но важное различие.

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

8
ответ дан 30 November 2019 в 12:20
поделиться

Возможно, вы посоветуете ему попробовать git. git предоставляет команду stash для сохранения состояния рабочей копии перед выполнением обновления из репозитория.

Цитата из описания на странице руководства :

Используйте git stash, если вы хотите записать текущее состояние работы каталог и индекс, но хотите вернитесь в чистый рабочий каталог.

2
ответ дан 30 November 2019 в 12:20
поделиться

Я думаю, что лучшим решением здесь может быть использование обработчиков клиентской стороны TortoiseSVN которые доступны.

2
ответ дан 30 November 2019 в 12:20
поделиться

Предполагая, что вы не можете убедить свой коллега, чтобы изменить свое мнение, эта цепочка писем может помочь заставить Subversion разрешить ему выполнять все слияние вручную:

http://www.nabble.com/Forcing-conflicts-on-svn-update-to21176148. html # a21176148

2
ответ дан 30 November 2019 в 12:20
поделиться

TortoiseSVN позволяет редактировать файл конфигурации Subversion, поэтому я думаю, что эту опцию можно настроить там. Вы можете получить к нему доступ через Настройки-> Общие и щелкнув «Изменить» в групповом окне Subversion, в строке «Файл конфигурации Subversion».

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

1
ответ дан 30 November 2019 в 12:20
поделиться

Раньше я очень боялся слияний, но я никогда не видел случая, когда автоматическое слияние SVN не удавалось. Очевидно, что это может испортить бизнес-логику, потому что два редактирования могут логически конфликтовать без физического конфликта, но я не думаю, что это приведет к автоматическому слиянию, если это не подходит.

Если у вас нет регрессионных тестов, ваш коровник может буду прав из-за того, что нет обзора "Logic Merge"; но если у вас есть приличное тестовое покрытие, это действительно не стоит потраченного времени.

Мне очень не нравится «синтаксис слияния» SVN для конфликтов, но большинство инструментов, похоже, скрывают его.

0
ответ дан 30 November 2019 в 12:20
поделиться

На самом деле, я думаю, небольшое недоверие к слиянию может быть полезным. На мой взгляд, проблема с svn заключается в том, что вы не можете проверить свои изменения такими, какие они есть, а затем, как только они станут безопасными, объединить их. Но вы можете сделать это вручную:

  1. Checkout trunk
  2. Внесите изменения и протестируйте
  3. Переведите рабочую копию во временную ветку
  4. Зафиксируйте (уф, ваши изменения на 100% чистые и полностью безопасные)
  5. Switch в магистраль
  6. Повторно интегрировать ветку (это этап слияния, но ваши изменения в ветке безопасны)
  7. Фиксация
  8. Удалить ветку

Это добавляет дополнительные шаги в ваш рабочий процесс, но может просто добавить этот мир ума. Это также дает вам близкий эквивалент наборов полок tfs.

1
ответ дан 30 November 2019 в 12:20
поделиться

кажется, что образование чтобы быть единственным верным ответом в этом случае

-2
ответ дан 30 November 2019 в 12:20
поделиться

Выберите нужный файл в проводнике Windows, затем Shift + щелкните файл правой кнопкой мыши, и в TortoiseSVN вы увидите несколько новых опций, среди них «Различие с URL» - выберите URL-адрес файла в репозитории и выберите «HEAD revision». Это покажет вашу текущую рабочую копию (которая основана на ревизии без заголовка) слева и ревизии заголовка справа.

Теперь вы можете вручную копировать изменения справа налево (из головы в рабочую область), ручной выбор, какие изменения принадлежат, а какие нет. После этого, SVN по-прежнему считает, что ваша рабочая копия основана на старой версии. Так что сделайте обновление, но на самом деле это ничего не изменит (я думаю), потому что вы сделали все изменения вручную. Затем выполните фиксацию как обычно.

Очевидно, это было бы чрезвычайно утомительно делать для каждого файла, один за другим. Но если это всего лишь один файл с несколькими изменениями, это может сработать. Возможно, если это будет достаточно утомительно, человек уступит и поверит встроенному алгоритму слияния SVN.

0
ответ дан 30 November 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: