Как сделать частную ветку публичного SVN-репозитория?

Я хотел бы сделать частную ветвь публичного хранилища SVN.

Под этим я подразумеваю, что существует публичный репозиторий с открытым исходным кодом (codeplex), в который мне нужно вносить свои собственные пользовательские изменения. Эти изменения не будут приняты обратно в дерево. Я бы хотел:

  • Проверьте внесенные мной изменения в свой собственный источник контроля, чтобы они сохранялись и версировались.
  • Сохраните некоторую связь с оригиналом, чтобы я мог легко объединить "официальные" изменения.

Я понимаю, что Git может сделать это, но я не могу понять, как это сделать с SVN.

Если это невозможно, как я могу выполнить какой-то аспект из вышеперечисленного - что-то вроде полного переноса кода в моем хранилище и сохранения "чистой" копии официального дерева, где я могу легко различать два дерева?

Спасибо Джеймс

8 ответов

Решение

Лучшее решение для этой проблемы - это то, что описано в разделе " Контроль версий с Subversion" в разделе " Ветви поставщиков". Используйте команду экспорта SVN, чтобы выгрузить снимок внешнего размещенного проекта SVN в локальное рабочее пространство SVN в качестве поставщика.

Гугл гит-свн. Хорошо работает для меня.

Вы экспортируете ревизию, из которой хотите выполнить ветвление, импортируете ее в свой собственный репозиторий и работаете над этим. Позже вы можете объединить разницу между оригинальной импортированной ревизией и головой в основной репо.

Да, это костыль. Почему бы тебе не попробовать git-svn?

По словам других, использование системы распределенных версий, которая работает с Subversion, вероятно, является лучшим выбором. Альтернативой git является Mercurial и один из его вариантов, hgsubversion или hgsvn. Это действительно личный выбор между ними, но Mercurial может быть предпочтительнее, если вы являетесь обычным пользователем Subversion. Он имеет командную строку, похожую на Subversion, и, если вы работаете в Windows, TortoiseHg, которая похожа на TortoiseSVN.

Одним из инструментов, который может помочь, является svnsync (хотя переход на DVCS, как и предполагали другие, на самом деле может быть предпочтительнее).

Ты не можешь Я видел, как эта проблема решалась двумя способами:

  1. Используйте DVCS с интеграцией SVN, например, bzr-svn или git-svn. Эти интеграции специально разработаны для случая, когда вы хотите сохранить локальные ветви, но при этом иметь возможность взаимодействовать с исходным источником через SVN.

  2. Используйте поршень. Piston автоматизирует процесс добавления дерева исходных текстов в ваш проект, чтобы вы могли вносить свои собственные изменения, а также периодически извлекать и объединять обновления из репозитория источника.

Я думаю, что вы ответили на свой вопрос, дважды.

Используйте DVCS или сохраняйте чистую копию и объединяйтесь с вашим собственным репозиторием SVN.

Еще один инструмент tailor ( http://wiki.darcs.net/Tailor). Он может перемещать изменения между многими типами хранилищ. Если вы привыкли к subversion, вы даже можете создать локальный svn-сервер с изменениями от upstream и с вашими личными изменениями, обновляя локальный сервер изменениями codeplex по мере их поступления.

Другие вопросы по тегам