Рабочий процесс для настройки приложений Django и добавления / слияния вверх по течению - PullRequest
3 голосов
/ 23 февраля 2012

Как я могу добавить сторонние приложения Django в мой проект Djano, если они требуют небольших изменений кода?Мне нужно, чтобы я мог:

  1. Объединить вышестоящие изменения
  2. Отправлять запросы на получение новых функций / модов
  3. Использовать измененное приложение в нескольких проектах
  4. Возможность развертывания измененного приложения с моим проектом Django
  5. Сохранение конфиденциальности (необязательно)

Существующие полу-решения

Кажется, в этой теме много путаницы.Методы, которые я, похоже, предложил:

Метод # 1 - pip / virtualenv - сохранить проект в отдельном репо и добавить его в путь к Python.Преимущество: правильное разделение кода на отдельные проекты, вероятно, в целом чище, менее сложно. Недостаток: требуется более сложное управление для обновления зависимости при локальной разработке.

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

3 - поддерево git - перетащите код в каталог проекта Django с помощью модуля поддерева.Я сам изучил этот вопрос, который вы можете увидеть здесь http://projects.madteckhead.com/django-superproject-3rd-party-git-repo-subdirectories-mapped-mapped-to-apps/ Преимущество: код и история хранятся в проекте Django, просты в развертывании и снижают сложность для сотрудников.Недостаток: кажется, не удается «смонтировать» подкаталог или репозиторий в подкаталог проекта, и если вы можете ... Я не смог выяснить, как объединить вышестоящие изменения.

4 - скопировать соответствующее стороннее приложение в каталог приложений проекта django.Преимущество: простое Недостаток: не может легко объединять изменения или отправлять пул-рекветы

Проблема заключается в том, что пакеты Python фактически имеют приложение в подкаталоге репозитория.например thirdpartyapp / thirdpartyapp / setup.py thirdpartyapp / thirdpartyapp / [здесь представлен весь интересующий код]

Вопрос

Может ли кто-нибудь пролить свет на то, как лучше всего включить несколькоСторонние приложения django в проект django, вносите в них изменения / объединяйте вышестоящие изменения.

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

Большое спасибо,

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Некоторое время я использую метод # 1 (pip / virtualenv), и я не чувствую, что способ управления или разработки кода сторонних приложений сложен.

На пути использования полных путейдля внешних репозиториев сторонних приложений в requirements.txt, pip установит это приложение в каталог PROJECT_ROOT/env/src/application_dir со всеми преимуществами любой системы контроля версий.Там вы можете разрабатывать, вносить изменения в свой собственный форк или делать все как с обычными подмодулями git.

Если вам нужно внести изменения или применить некоторые патчи к стороннему приложению, не внося изменения во внешние репозитории, но с возможностьюполучить изменения на производстве, я могу порекомендовать вам fabriclassed пакет.Я - простая оболочка для инструмента fabric , помогающая организовывать ваши потрясающие файлы, используя классы с несколькими задачами по умолчанию.Например, с fabriclassed вы можете исправить любую зависимость внутри каталога virtualenv, используя автоматически сгенерированные файлы * .diff с командами:

# to dump all diffs of 3th party applications
$ fab diff_dump

# to patch all 3th party applications
$ fab patch
0 голосов
/ 27 июня 2012

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

...