Как сохранить локально измененную копию внешнего хранилища SVN

StackOverflow https://stackoverflow.com/questions/1235188

Вопрос

Я проверил внешний репозиторий SVN, к которому применил несколько патчей.
(Применение исправлений может быть сделано только вручную из-за конфликтов.)

Теперь я хочу иметь возможность правильно поддерживать эту локальную копию удаленного репозитория.
(У меня нет других прав доступа, кроме чтения в удаленном хранилище.)

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

А во-вторых, я все еще хочу получать обновления из удаленного хранилища.

Каков наилучший способ добиться этого?

Это было полезно?

Решение

Полагаю, я мог бы использовать другую систему управления версиями для своей локальной копии, чем svn?
Например. проверка моей полной локальной копии, включая папки .svn, в cvs.

Или я мог бы также использовать git-svn , но я не уверен, что это лучшее решение.

Есть лучшие предложения?

Обновление: да, похоже, git-svn быть предпочтительным решением.

Но для записи можно было бы также использовать hg с svn .

Другие советы

Традиционный способ сделать это - взять экспортированную версию кода и зарегистрировать ее в своем собственном хранилище. Если в коде есть обновления, вы объединяете их в своем репо. Вы можете помочь слиянию путем умного ветвления (поиск веток поставщиков). Пометьте код в своем репо в соответствии с версиями экспортированного кода, который вы зарегистрировали.

Я понимаю, что SVK может сделать это исключительно в среде Subversion (я использовал это для чего-то подобного несколько лет назад). Однако, если вы хотите попробовать Git, то git-svn может быть даже лучшим выбором. Это то, что я бы использовал сегодня.

Однако, одно предостережение: если вы используете Windows, могут возникнуть проблемы с работой git-svn . Я имел ограниченный успех в этой области и не использую git-svn в Windows из-за этого.

С помощью svnsync вы можете сохранить копию хранилища svn, но с момента изменения локальной копии вы не сможете продолжить синхронизацию.

Я бы предложил использовать git для вашей последней повседневной работы. Сохраните локальную рабочую копию хранилища svn и поместите ее под контроль git. Это будет мастер Git. Клонируйте этот репозиторий в другом месте, мастер ветки и работайте там, применяя ваши патчи непосредственно к ветке.

Регулярно обновляйте свой svn wc и вставляйте его в свой git-репозиторий как master. Затем объедините мастер со своей веткой.

Смущает то, что у вас будет «два пользователя git», один будет рабочей копией локального репозитория SVN, а другой - ваша пропатченная ветвь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top