Управление несколькими ответвлениями кода и [закрытыми] доставками

Я буду первым, кто в этом сценарии перебьет регулярные выражения. Тем не менее, это дает некоторые преимущества.

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

Если что-то из этого достаточно важно для вас, чтобы беспокоиться об этом, вот пример с использованием регулярных выражений:

Dim pattern As String = "^(?<before>[^-]+)-(?<after>.+)$"
Dim m As Match = Regex.Match(input, pattern)
If m.Success Then
    Dim before As String = m.Groups("before").Value
    Dim after As String = m.Groups("after").Value
End If
11
задан George Stocker 17 February 2009 в 18:53
поделиться

4 ответа

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

В действительности Вы обычно находитесь в худшей ситуации: у Вас есть новая возможность, которая помогает клиенту A и повреждается, что-то для клиента B (скажите, клиент B не готов изменить их базу данных, и новая возможность не работает без изменения, таким образом, это на самом деле делает новую версию неприменимой для клиента B). Если бы Вы были крупными, то Вы могли бы просто проигнорировать клиента B.

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

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

Даже с лучшей системой управления версиями там (для меня, который был бы мерзавцем), Вы не можете решить разветвление на выходе, которое Вы получаете, если Вы не можете получить всех получение по запросу в то же направление (кроме, конечно, можно действительно разделить каждого клиента на плагин).

6
ответ дан 3 December 2019 в 09:42
поделиться

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

Я работал над некоторыми подобными проектами. и то, что мы сделали, сделало, чтобы Commom перешел для базовых функций системы и "Клиентского" ответвления для каждого изменения продукта, этот способ, которым можно реализовать определенные опции и bugfixes каждого клиента и все еще использовать те же изменения в "commom" ко всем изменениям продукта.

Этот подход прилагает много усилий по управлению конфигурацией, хотя (слияние и создание), таким образом, Вы могли бы хотеть иметь определенного человека для справлений с задачами тезисов.

Править:

Additionaly, Вы должны (если уже не делают), имеют систему средства отслеживания ошибки, в которой необходимо зарегистрировать клиент/ответвление, Вы продолжаете работать.

1
ответ дан 3 December 2019 в 09:42
поделиться

У нас есть подобная установка одной (справедливо специалист) продукт и несколько (но только порядок сотен) клиенты, которые все хотят их собственную любимую функцию.

Насколько я вижу, что можно или спуститься по 'стандартному' маршруту, где продукт неориентирован на клиента, и любые опции, которые Вы добавляете, на благо продукта (возможно в запросе клиентов); или Вы спускаетесь по сделанному на заказ, маршруту консультирования, где у каждого клиента есть их собственная единственная версия продукта.

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

Сокрытие функций легко, поддержание нескольких параллельных версий является кошмаром!

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

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

4
ответ дан 3 December 2019 в 09:42
поделиться

Только поддерживайте главную/основную соединительную линию, если нет ответвление, которое имеет исправление ошибки / функция, которая не присутствует в основной строке.

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

Не делайте этого.

Будьте фирмой.

0
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

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