У меня есть несколько проектов на Python, которые используют общие модули. До сих пор я ... хм ... хранил несколько копий общего кода и синхронизировал вручную. Но я бы предпочел сделать что-то еще.
Теперь мне кажется, как будто zc.Buildout, возможно, то, что мне нужно. Я думаю, что я должен сделать, чтобы поместить каждый повторно используемый компонент моей системы в отдельное яйцо, а затем использовать buildout для сборки их в проекты.
Я также думаю, что для любого конкретного модуля я должен поместить модульные тесты в отдельный пакет или яйцо, чтобы не устанавливать копии модульных тестов компонента в каждом проекте. Я хочу проводить модульное тестирование только там, где разрабатывается моя библиотека, а не там, где она просто используется.
Так что, может быть, я хочу что-то вроде этого
projects
lib1
tests
code
lib2
tests
code
app1
tests
appcode
app2
tests
appcode
и т.д.
Где и app1, и app2 являются независимыми приложениями со своим собственным кодом и тестами, но также включают и используют lib1 и lib2. И lib1 / test, lib1 / code, lib2 / test, lib2code, app1, app2 - это отдельные яйца. Это звучит правильно?
Однако теперь я запутался. Я предполагаю, что при разработке app1 я хочу, чтобы buildout перетаскивал копии lib1, lib2 и app1 в отдельный рабочий каталог, а не помещал копии этих библиотек непосредственно в app1. Но как это работает с моей системой контроля версий SVN? Если рабочий каталог динамически создается с помощью buildout, он не может быть действующим каталогом SVN, из которого я могу проверить изменения обратно в хранилище?
Я неправильно понял, как предполагается использовать buildout? Буду ли я лучше пойти на совершенно другой подход? Как вы смешиваете управление исходным кодом с повторным использованием модулей между проектами?
Обновление: спасибо двум людям, которые в настоящее время ответили на этот вопрос. Я больше экспериментирую с этим.