Как сохранить локально измененную копию внешнего хранилища SVN
-
22-07-2019 - |
Вопрос
Я проверил внешний репозиторий 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, а другой - ваша пропатченная ветвь.