Я отслеживаю проект, который недавно перешел из svn в git. У меня самый последний svn-код и я хочу начать использовать код из git. Есть ли способ сделать это, что не требует повторной загрузки довольно большой базы кода по медленному соединению? По сути, я хочу сказать: «Начните отсюда (старый код svn) и просто получите изменения от git».Отслеживание большого проекта, который переключился с svn на git
ответ
SVN & Git может показаться похожим, потому что они оба являются инструментами SCM, но под капотом они реализованы очень разными, то есть Git is way better.
Просто начните с свежего и git-клонирования. Даже для крупных проектов, таких как ядро Linux, Git очень быстро клонирует.
Вы также можете использовать опцию --depth
, чтобы ускорить процесс:
--depth < глубина > Создать неглубокую клон с историей усечен до указанного количества изменений. Неглубокий репозиторий имеет количество ограничений (вы не можете клонировать или извлекать из его, а также не нажимать и не вводить его), но достаточно, если вы интересуетесь только недавней историей большого проекта с длинной историей, и хотел бы отправить исправления в качестве патчей.
Источник: 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
:
--depth = < глубины > Углубление истории репозитория неглубоко созданного мерзавца клона с --depth = < глубины > варианта по указанному номеру фиксаций.
Источник: http://kernel.org/pub/software/scm/git/docs/git-pull.html
Может быть, если вы поставите достаточно большое количество (? Или, может быть, -1) на глубину так, чтобы потянуть за всю историю репозитория, то вы будете иметь все функциональность обычного репозитория, например, способность клонировать или извлекать из него или нажимать на него или в него.
Если нет, вы можете просто клонировать его в отдельном месте (возможно, когда у вас есть более быстрое соединение) и используйте git format-patch
и git apply
, чтобы переместить свои коммиты из неглубокого хранилища в новый.
Мэтт
Я думаю, что вам нужно клонировать проект в любом случае
Вы можете сэкономить время, заранее высева репозиторий Git с тем, что у вас есть уже - вы, вероятно, все равно придется скачать довольно много (и я не уверен, насколько он умрет при разработке минимального необходимого), но это может помочь.
Если вы создадите новый репозиторий git и добавите к нему свою проверку subversion, этот репозиторий должен иметь много объектов, которые в противном случае были бы загружены. Затем можно клонировать в восходящем репозиторий с использованием нового хранилища в качестве ссылки:
git clone --reference /local/reference/repo git://remote/upstream/repo
Обратите внимание, что новый клонированный репо будет зависеть от существования Вашего взломан один для объектов; вы можете обойти это путем повторного клонирования локального репозитория.
Проблема в этом случае заключается в том, что git не только сохраняет последнюю версию, но и всю историю программы (все фиксации, теги, ветки, что угодно), поэтому вы можете легко переключаться между разными оборотами. Таким образом, последняя проверка не сохраняется нигде - она просто создается из данных.
Но если вы хотите сохранить полосу пропускания, AFAIK есть возможность просто загрузить все объекты, начинающиеся с заданной даты, просто пойдите в Google или найдите SO, чтобы узнать имя (я его забыл). Очевидным недостатком этого является то, что любая история до этого момента недоступна. Но для простого отслеживания этого может быть достаточно.
Theres также экспериментальное ленивое клонирование в списке рассылки. – alternative
- 1. Перенос большого SVN-репо на git
- 2. Перемещение большого проекта Java Legacy для Git
- 3. Импорт большого проекта в Eclipse (SVN, Maven)
- 4. git как начать отслеживание существующего проекта
- 5. SVN: проверка большого проекта по медленному соединению
- 6. Создание подпроектов большого проекта в SVN
- 7. Отслеживание ветвей на Git?
- 8. Git-Tf Перемещение частей большого проекта Tfs
- 9. Клон Git-svn/hgsubversion переименованного проекта
- 10. SVN на Git проблему импорта с помощью «Git SVN клон»
- 11. Объединить подпапку SVN и изменения проекта git
- 12. Использовать git-svn с существующим репо без .git/svn/
- 13. Использование git-svn с существующим проектом svn
- 14. Клонирование нестандартного хранилища Svn с Git-Svn
- 15. Перенос SVN на git с очисткой
- 16. Миграция большого, отклоняющегося проекта команды TFS на Git
- 17. Как нажать на удаленный репозиторий SVN ... что я отслеживание
- 18. Как построить проект svn, который зависит от другого проекта svn
- 19. Миграция SVN на Git
- 20. где git-svn git-svn TAG?
- 21. Как клонировать svn repo с git svn и уметь фиксировать как git, так и svn?
- 22. git workflow с основным хранилищем svn с использованием git-svn
- 23. Отслеживание констант отладки с git
- 24. Миграция ветки git-svn на ветку git
- 25. Отслеживание изменений svn вверх по течению с помощью git-svn и github?
- 26. Лучший способ эмуляции git-подмодулей в svn
- 27. Git и SVN на Windows
- 28. Репозиторий svn, который я импортировал в git с помощью git-svn, переместился
- 29. git-svn-rebase отправляется на тег SVN
- 30. Как я могу сделать репозитории git-svn для большого количества проектов в том же репозитории SVN?
Этот вариант не предполагает, что '/ local/reference/repo' является git repo тоже? – fuz
Да, это репо, которое вы только что создали, проверив содержимое вашей проверки subversion. –