Если у вас есть многократно используемые приложения, поместите их в отдельное хранилище.
Если вас беспокоит количество частных репозиториев, посмотрите на bitbucket (если вы решили сделать их открытыми, я советую github)
Есть хороший способ включить ваши собственные приложения в проект, даже используя теги версий:
Недавно я нашел способ сделать это с помощью тегов buildout и git.
(Я использовал svn: externals для включения приложения, но недавно переключился с svn на git).
Сначала я попробовал mr.developer, но, не получая этого, нашел альтернативу для mr.developer:
Я обнаружил, что gp.vcsdevlop очень прост в использовании для этой цели.
см. https://pypi.python.org/pypi/gp.vcsdevelop
В итоге я поместил это в свой файл компоновки и сразу же заработал (мне нужно было добавить в приложение pip needs.txt, чтобы оно заработало, но в конце концов это хорошо):
vcs-update = True
extensions =
gp.vcsdevelop
buildout-versions
develop-dir=./local_checkouts
vcs-extend-develop=git+git@bitbucket.org:<my bitbucket username>/<the app I want to include>.git@0.1.38#egg=<the appname in django>
develop = .
в этом случае оно вытесняет мое приложение и клонирует его в тег версии 0.1.38 в проект в подразделе ./local_checkouts/
и развивает его при запуске bin / buildout
Редактировать: замечание 26 августа 2013
При использовании этого решения и редактировании в этой локальной проверке приложения, используемого в проекте. Я узнал это:
вы получите это предупреждение при попытке выполнить обычную команду 'git push origin master
':
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'Note about
fast-forwards' section of 'git push --help' for details.
РЕДАКТИРОВАТЬ 28 августа 2013
О работе в local_checkouts для общих приложений, включенных в gp.vcsdevelop:
(и обработать предупреждение, рассмотренное в remakr выше)
git push origin + master, похоже, испортил историю коммитов для общего кода
Итак, способ работы в директории local_checkout такой:
перейти к локальной проверке (после корзины / сборки, так что проверка является основной):
cd localcheckouts/<shared appname>
Создайте новую ветку и перейдите к ней следующим образом:
использовать git checkout -b 'issue_nr1'
(например, название ветви здесь названо в честь проблемы, над которой вы работаете)
и после того, как вы закончите работать в этой ветке, используйте: (после обычных git add и git commit)
git push origin issue_nr1
после тестирования и завершения объединить ветку обратно в мастер:
Первая проверка мастера:
git checkout master
обновление (возможно, только когда другие коммиты за это время)
git pull
и слияние с мастером (где вы сейчас находитесь):
git merge issue_nr1
и, наконец, нажмите это слияние:
git push origin master
(особенно благодаря этому упрощенному руководству по git: http://rogerdudler.github.io/git-guide/)
и через некоторое время, чтобы очистить ветки, вы можете удалить эту ветку
git branch -d issue_nr1