Отслеживание большого проекта, который переключился с SVN на GIT - PullRequest
2 голосов
/ 25 сентября 2010

Я отслеживаю проект, который недавно перешел из svn в git.Я получил последний svn-код и хочу начать использовать код из git.Есть ли способ сделать это, который не включает повторную загрузку довольно большой кодовой базы по медленному соединению?По сути, я хочу иметь возможность сказать «начните отсюда (старый svn-код) и просто получите изменения из git».

Ответы [ 4 ]

1 голос
/ 25 сентября 2010

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

Просто начните с нового и сделайте клон. Даже для больших проектов, таких как ядро ​​Linux, Git очень быстро клонирует.

Вы также можете использовать опцию --depth, чтобы ускорить процесс:

- глубина Создайте клон shallow с историей, усеченной до указанное количество ревизий. Мелкий репозиторий имеет количество ограничений (вы не можете клонировать или получить из это, ни толкать, ни в это), но адекватно, если вы интересует только недавняя история большого проекта с длинной историей, и хотел бы отправить исправления как патчи.

Источник: http://git -scm.com / docs / git-clone

Вот пример, который проверяет самую последнюю версию репозитория:

git clone git://source.winehq.org/git/wine.git ~/wine-git --depth 1

Источник: http://mortalpowers.com/news/speed-up-git-clone-with-shallow-clones

Позже вы можете использовать опцию --depth с git pull:

- глубина = Углубить историю мелкого хранилища, созданного git clone с опцией --depth = на указанное количество коммитов.

Источник: http://kernel.org/pub/software/scm/git/docs/git-pull.html

Возможно, если вы поместите достаточно большое число (или, может быть, -1?) Для глубины, чтобы вытащить всю историю хранилища, тогда у вас будут все функциональные возможности обычного хранилища, например, возможность клонировать или извлекать из него, или толкать или в него.

Если нет, вы можете просто клонировать его как обычно в отдельном месте (возможно, когда у вас более быстрое соединение) и использовать git format-patch и git apply для перемещения ваших коммитов из мелкого хранилища в новое.

Мэтт

1 голос
/ 25 сентября 2010

Проблема в этом случае заключается в том, что git сохраняет не только последнюю проверку, но и всю историю программы (все коммиты, теги, ветви и т. Д.), Поэтому вы можете легко переключаться между различными оборотами.Таким образом, последняя проверка нигде не сохраняется - она ​​просто генерируется на основе данных.

Но если вы хотите сохранить пропускную способность, AFAIK есть возможность просто загрузить все объекты, начиная с определенной даты, простоGoogle немного или поиск так, чтобы узнать имя (я забыл его).Очевидным недостатком этого является то, что никакой истории до этого момента нет.Но для простого отслеживания этого может быть достаточно.

1 голос
/ 25 сентября 2010

Я думаю, вам все равно нужно клонировать проект

0 голосов
/ 25 сентября 2010

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

Если вы создадите новый репозиторий git и добавите в него свою проверку subversion, то в этом репозитории должно быть много объектов, которые в противном случае были бы загружены.Затем вы можете клонировать вышестоящий репозиторий git, используя ваш новый репозиторий в качестве ссылки:

git clone --reference /local/reference/repo git://remote/upstream/repo

Обратите внимание, что новый клонированный репо будет зависеть от наличия вашего взломанного репо для объектов;Вы можете обойти это, повторно клонировав локальный репозиторий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...