Есть ли преимущество в использовании --no-metadata в git svn clone?
Я делаю односторонний конвертер из репозитория SVN в репозиторий Git, используя git svn clone
. В большинстве примеров это с флагом --no-metadata
- есть ли преимущество в использовании этого флага?
Я понимаю, что флаг удаляет номера версий SVN. Я могу придумать причины, по которым может быть полезно сохранить их (например, ссылаясь на конкретные коммиты, упомянутые в программном обеспечении отслеживания ошибок).
Каковы аргументы для с помощью флага --no-metadata
? Есть ли какая-либо польза, кроме ощущения нарушения всех связей?
Ответы
Ответ 1
На самом деле это не рекомендуется:
Этот параметр НЕ рекомендуется, так как он затрудняет отслеживание старые ссылки на номера версий SVN в существующей документации, ошибка отчетов и архивов. Если вы планируете в конечном итоге перейти от SVN к git и уверены в том, что вы сбросите историю SVN, рассмотрите git - фильтр-ветвь (1). фильтр-ветвь также позволяет переформатировать метаданных для упрощения чтения и переписывания информации об авторстве для пользователи не "svn.authorsFile".
Ответ 2
Один аргумент для использования --no-metadata
заключается в том, что он не изменяет ваши сообщения фиксации. Поэтому, даже если вы выберете из разных мест, сообщения фиксации будут одинаковыми, и, таким образом, хеширование будет одинаковым.
В качестве примера, если я git svn init
репо из локального URL file:
, а затем вытащить из URL https:
, каждая фиксация в репо будет дублироваться, так как все коммиты с git-svn-id: file:///
... будет выбрана как git-svn-id: https:///
... и закодирована с новыми SHA1.
Если я укажу --no-metadata
, тогда сообщение фиксации и этот sha1 будут одинаковыми, и я могу получить их из локальной файловой системы или сервера subversion, потому что будет только одна копия любого заданного svn commit в git repo.
Лично я бы предпочел, если бы был минимальный вариант метаданных, в котором был зарегистрирован идентификатор ревизии subversion, но не полные метаданные, но без беспорядка с git-filter-branch
мы застряли со всеми или ничего.