Подвижный: сохранить 2 ответвления в синхронизации, но с определенными персистентными различиями?

Несколько причин я могу думать для использования IDE:

  • Интегрированная справка является фаворитом.
  • встроенные Осуществляют рефакторинг с Предварительным просмотром Visual Studio
  • IntelliSense, выделение синтаксиса, простота навигации для крупных проектов, интегрировало отладку, и т.д. (хотя я знаю с дополнениями, можно, вероятно, получить многое из этого с Emacs и Vim).
  • кроме того, я думаю, что IDE в эти дни имеют более широкую базу пользователей, и вероятно больше людей, разрабатывающих дополнения для них, но я мог бы быть неправым.

И вполне откровенно говоря, мне нравится моя мышь. Когда я использую чистых основанных на тексте редакторов, это становится одиноким.

11
задан markmuetz 10 August 2009 в 15:38
поделиться

5 ответов

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

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

Вот два возможных решения: одно с использованием Mercurial, а другое без использования Mercurial:

  1. Используйте имя хоста для переключения между prod и devel. У нас есть единственная проверка в верхней части нашего файла настроек, которая смотрит на переменную среды SERVER_NAME. Если это www.production.com, это база данных prod, а в противном случае она выбирает указанную или заданную по умолчанию базу данных dev / test / stage.
  2. Используя Mercurial, просто создайте клон, который является разработчиком, и клон, который является продуктом, внесите все изменения в dev, и во время развертывания перетащите от разработчика к продукту. После вытягивания у вас будет 2 головы в проде, расходящиеся от одного общего предка (последнее развертывание). Одна голова будет иметь один набор изменений, содержащий только различия между развертыванием dev и prod, а другой будет иметь всю новую работу. Слейте их в prod clone, Конечно, выбор продукта изменяется при конфликте, и у вас есть развертываемая установка, и вы готовы проделать дополнительную работу над «dev». Нет необходимости разветвлять, пересаживать или использовать очереди. До тех пор, пока вы никогда не вставляете набор изменений с настройками prod в 'dev', всегда потребуется слияние после извлечения из dev, а если это всего лишь несколько строк, делать нечего.
2
ответ дан 3 December 2019 в 09:42
поделиться

Попробуйте что-нибудь вроде этого: (Я как раз думал об этой проблеме, в моем случае это база данных sqlite)

  • Добавьте settings.py в .hgignore, чтобы сохранить его вне репозитория.
  • Возьмите ваши файлы settings.py из двух отдельных веток и переместите их в два отдельных файла, settings-prod.py и ] settings-dev.py
  • Создайте сценарий развертывания, который копирует соответствующий файл settings-X в settings.py, чтобы вы могли развернуть его любым способом.

Если у вас есть пара дополнительных файлов, сделайте то же самое для их. Если у вас много файлов, но все они находятся в одном каталоге, вы можете просто создать пару каталогов: production и development ,

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

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

Так что это отлично работает, если вы ' re не сильно меняет разные файлы.

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

Я решил эту проблему с помощью локальных настроек.

  1. Добавить в settings.py:

     попробуй:
    из импорта local_settings *
    кроме ImportError:
    проездной
    

  2. коснитесь local_settings.py

  3. Добавьте ^local_settings.py$ к своему .hgignore

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

PS: Читайте "уменьшенные версии части javascript" только позже. Для этого я бы предложил перехват после обновления и настройку конфигурации (например, JS_EXTENSION).

Пример (не тестируется, адаптируйте по мере необходимости):

  1. Поместите JS_EXTENSION = .raw.js' в ваш файл settings.py;
  2. Поместите JS_EXTENSION = '.mini.js' в ваш файл local_settings.py на вашем рабочем сервере;
  3. Измените JS-включение из:
    <тип сценария="text/javascript" src="blabla.js">
    To:
  4. Make a post-update hook that look for *.raw.js and generates . mini.js (уменьшенные версии raw);
  5. Добавьте .mini.js$ к вашему .hgignore
2
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

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