лучшие практики в подвижном: ответвление по сравнению с клоном и частичные слияния?

Я обрабатываю модульные тесты резьбовых компонентов так же, как я обрабатываю любой модульный тест, то есть с инверсией элементов управления и изоляции. Я развиваюсь на .Net-арене, и из коробки очень важно, чтобы потоки (между прочим) очень сильно (я бы сказал, почти невозможно) полностью изолировать.

Поэтому я написал обертки, которые выглядят что-то вроде этого (упрощенное):

public interface IThread
{
    void Start();
    ...
}

public class ThreadWrapper : IThread
{
    private readonly Thread _thread;

    public ThreadWrapper(ThreadStart threadStart)
    {
        _thread = new Thread(threadStart);
    }

    public Start()
    {
        _thread.Start();
    }
}

public interface IThreadingManager
{
    IThread CreateThread(ThreadStart threadStart);
}

public class ThreadingManager : IThreadingManager
{
    public IThread CreateThread(ThreadStart threadStart)
    {
         return new ThreadWrapper(threadStart)
    }
}

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

Это до сих пор работало отлично для меня, и я использую тот же подход для пула потоков, вещи в System.Environment, Sleep и т. д. и т. д.

74
задан Jason S 15 January 2009 в 21:41
поделиться

3 ответа

Я использую клон для:

  • Недолгие локальные ответвления
  • Клонирование к различным машинам разработки и серверам

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

  • я продолжаю работать над своими изменениями и вытягиваю своего товарища devs изменения, и они вытягивают моего.
  • , Когда будет удобно для меня, что я объединю ВСЕ изменения от одного (или все) этих ответвлений в мой.

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

В основном я смотрю на него этот путь:

  • Именованные ответвления для разработки различных ответвлений, или версии приложения
  • Клоны для управления различными вкладами в ту же версию приложения.

Это - мое взятие, хотя действительно это - вопрос политики.

50
ответ дан Draemon 7 November 2019 в 07:46
поделиться

У меня есть другая опция для Вас изучить: подвижные очереди.

идея, для имения стопки патчей (никакие фиксации, "реальные" патчи) ontop текущего рабочего каталога. Затем можно добавить или удалить применяемые патчи, добавить один, удалить его, добавьте другого другой и т.д. Один единственный патч или подмножество их заканчиваются, чтобы быть новой "функцией", поскольку Вы, вероятно, хотите сделать с ответвлениями. После этого можно применить патч, как обычно (так как это - изменение). Ответвления, вероятно, более полезны, если Вы работаете с кем-то еще...?

3
ответ дан Harald Schilly 7 November 2019 в 07:46
поделиться

В вопросе 1 вам нужно немного пояснить, что вы подразумеваете под «изменениями». Что из этого вы имеете в виду:

  1. «Я хочу перенести некоторые, но не все, ревизии из другой ветки в эту»
  2. «Я хочу вытащить последнюю версию некоторых, но не всех , из файлов в другой ветке в эту ».

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

Если вы имеете в виду пункт 2, вы должны сделать следующее:

  • Обновите ветку, в которую вы хотите внести изменения.
  • Используйте hg revert -r <ветка, которую вы хотите объединить> --include <файлы для обновления> , чтобы изменить содержимое этих файлов на то, как оно находится в другой ветке.
  • Используйте hg commit , чтобы зафиксировать эти изменения в ветке в качестве нового набора изменений.

Что касается вопроса 2, я никогда не использую клоны репозитория для разветвления, поэтому я не знаю. Я использую именованные ветки или анонимные ветки (иногда с закладками).

29
ответ дан 24 November 2019 в 12:03
поделиться
Другие вопросы по тегам:

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