Сохранить свое версионное приложение или нет
Мне нужны некоторые мнения здесь.
Я работаю над проектом Django, используя buildout для получения зависимостей и т. Д. Я использую Mercurial в качестве DVCS.
Теперь... Мне нужно настроить одну из зависимостей, чтобы я мог выполнить одно из следующих действий: (* Изменения могут быть бесполезны для всех остальных.)
1- Сделайте форк проекта (github, bitbucket и т. Д.), Чтобы поддержать мою версию, и получите зависимость с (mercurial или git) рецептом.
2- Клонируйте проект, поместите его в PYTHONPATH, сотрите каталоги DVCS и добавьте его в версию моих проектов. Так что каждое изменение будет приватным. Здесь мне нужно стереть всю информацию из их DVCS или что-то.
Любой другой, о котором вы можете думать.
Я что-то упустил? Я слишком выключен?
Спасибо!
3 ответа
Эстебан, сделай эти шаги: я буду говорить на Mercurial-говорить, но это все можно сделать и в Git.
- клонировать их проект
- сделайте свой клон своего проекта подпунктом в своем проекте
Это дает вам лучшее из всех миров. Вы можете редактировать код в своем проекте и их проекте, не обращая внимания на то, что есть, и когда вы фиксируете изменения в своем коде, переходите в репозиторий вместе с указателем на новый набор изменений в вашем клоне своего проекта. Затем, когда вы захотите обновить свой клон своего проекта, вы можете сделать это на месте и просто объединить.
Так что это в значительной степени то, что вы сказали в "1", но нет необходимости делать форк или хост, который делает репо публично. Просто отредактируйте их клон в качестве подпроекта вашего проекта и никогда не нажимайте (что не сработает, так как у вас нет прав на запись в их репо).
Основной недостаток вашего второго варианта заключается в том, что по мере того, как они изменяют и улучшают свой проект, от которого вы зависите, у вас будет сложное время, когда вы будете вносить улучшения и объединять их с вашим.
Вы задаете этот вопрос довольно запутанным образом, и я не знаю, действительно ли вы понимаете смысл DVCS.
Весь смысл DVCS состоит в том, чтобы позволить вам иметь свой собственный частный репозиторий. Вам не нужно публиковать свой репозиторий на github, bitbucket или в любом из этих мест, если вы не хотите, но я, конечно, не буду стирать информацию DVCS.
Если вышестоящий проект вносит изменения, которые вы действительно хотите, в дополнение к вашим собственным личным изменениям, у вас будет чертовское время их слияния, если вы не будете хранить информацию о DVCS.
Используя Mercurial, вы можете включить проект в свой, используя функцию Mercurial subrepo.
Хорошо, если вы используете DVCS, тогда все ваши коммиты сохраняются как наборы изменений, и люди могут выбрать, применять ваш набор изменений или нет. Так что, пока вы комментируете это изменение, люди могут выбирать, применять изменения или нет, как они считают нужным. Более того, если они не хотят этого изменения, но хотят, чтобы ваши другие изменения, они могут выбирать. Таким образом, правда в том, что DVCS позаботится о проблеме для вас (при условии, что люди, которые тянут вас, правильно используют DVCS).
Лично я рекомендую разветвление, но, как я уже сказал, это не имеет значения.