Как вытащить изменения из репозиториев SVN после перехода на Mercurial - PullRequest
3 голосов
/ 16 февраля 2010

Я работаю над патчем для проекта с открытым исходным кодом, который использует SVN. У меня нет доступа к коммиту, но я хочу, чтобы версия отслеживала мои собственные изменения. Я следовал этому руководству , чтобы прочитать и преобразовать репозитории svn в hg.

Я хочу иметь возможность извлекать новые изменения из официальных репозиториев SVN в мою локальную копию, как этого достичь? После импорта моя локальная папка содержала неотслеживаемый файл .hgignore. Должен ли я добавить этот, который будет отслеживаться Mercurial?

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

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

Редактировать: ответ orip (часть редактирования) суммирует в точности то, что я хочу сделать: local hg copy, который может update из svn, но также push на мои онлайн bitbucket репозитории.

Ответы [ 4 ]

2 голосов
/ 16 февраля 2010

Вы можете рассмотреть возможность работы с MQ . Итак, у вас будет проект, управляемый двумя VCS одновременно:

  • SVN: используется для актуальности с основным хранилищем
  • HG: где вы будете выполнять addremove команды после каждого обновления из SVN и где вы будете использовать MQ для написания своих патчей.

Таким образом, будет намного проще, когда будет время предоставить ваш патч в главный репозиторий.

2 голосов
/ 16 февраля 2010

Извлечь новые изменения легко: извлекайте svn-код и регулярно «svn update» его, а затем проверяйте эти загруженные файлы в своем Mercurial репо.

Файл .hgignore предназначен для указания Mercurial, какие типы файлов не отслеживать, т.е. игнорировать. Не добавляйте это в свой ртутный репозиторий, скорее всего, оно будет содержать те же исключения, что и ваш глобальный игнорирующий подрывную деятельность.

Создать патч в SVN просто, выполните svn diff > myPatch.diff (после обновления репозитория SVN)

1 голос
/ 16 февраля 2010

Вы можете взглянуть на TortoiseHg wiki на SVN - Использование TortoiseHg в качестве клиента для раздела Subversion server , возможно, это поможет вам принять решение об инструментах, представленных в Mercurial Wiki, который вы указали в своем вопросе.

Также ознакомьтесь с ответом VonC на этот вопрос: Mercurial из Subversion: ходы, переименования и теги

1 голос
/ 16 февраля 2010

Используемое вами руководство конвертирует svn в hg, но предназначено для однократного преобразования, а не для дальнейшей совместимости.

Вы хотите что-то вроде hgsubversion .

РЕДАКТИРОВАТЬ: только что заметил, что вы связались с этим в вопросе. Не должно быть проблем с сохранением клона вашего репозитория в bitbucket - локально взаимодействуйте с SVN с hgsubversion и отправляйте в bitbucket, как обычно, - у вас есть обычное репозиторий hg.

...