У меня большой активный SVN-репозиторий (более 40 ГБ, более 35 000 версий).Он имеет нестандартную компоновку, тысячи веток и регулярно накапливает новые ветки.
У меня есть вторичный git-репозиторий, который я пытаюсь синхронизировать с SVN-репозиторием.Git-репозиторий существует ТОЛЬКО для поддержки точной копии истории изменений из SVN.Git-репозиторий никогда не используется в интерактивном режиме и никогда не накапливает контент, кроме SVN-репозитория.
Кажется очевидным, что многократный вызов «git svn fetch» в конечном итоге будет делать то, что я хочу.Однако - хотя «git svn fetch» ничего не создает заново из SVN - который уже присутствует в git - внутренне, «git svn fetch» занимает очень много времени, чтобы выяснить, что сделано и где он остановился.
Я смотрел .git / svn / .metadata - и вижу, что "git svn fetch" работает через всю историю изменений SVN, чтобы выяснить, где он остановился.Для большого репозитория, такого как мой - «git svn fetch» требуется много часов, чтобы вернуться к месту, где остановка выборки - после чего он возобновляет процесс переноса контента из SVN в репозиторий git.
Когда я пытаюсьчтобы найти более быстрые способы обновить git-репо новым контентом из SVN - я иногда вижу ссылки, предлагающие использовать «git svn rebase».Однако - если бы «git svn rebase» сделал то, что мне нужно, команда «git svn fetch» была бы излишней (возможно, после получения начальной версии SVN для подготовки к загрузке?).Использование «rebase» также похоже на то, что оно находится в контексте рабочего состояния git.
Я должен ошибаться в некоторых важных отношениях об относительной функции «git svn fetch» и «git svn».перебазироваться».Чем отличаются эти операции?