Скотт Чакон - Pro Git
- Название:Pro Git
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Скотт Чакон - Pro Git краткое содержание
В книге рассматриваются следующие темы: основы Git;
ветвление в Git;
Git на сервере;
распределённый Git;
GitHub;
инструменты Git;
настройка Git;
Git и другие системы контроля версий.
Pro Git - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
$/tmp/fast-export/hg-fast-export.sh -r /tmp/hg-repo -A /tmp/authors
Loaded 4 authors
master: Exporting full revision 1/22208 with 13/0/0 added/changed/removed files
master: Exporting simple delta revision 2/22208 with 1/1/0 added/changed/removed files
master: Exporting simple delta revision 3/22208 with 0/1/0 added/changed/removed files
[…]
master: Exporting simple delta revision 22206/22208 with 0/4/0 added/changed/removed files
master: Exporting simple delta revision 22207/22208 with 0/2/0 added/changed/removed files
master: Exporting thorough delta revision 22208/22208 with 3/213/0 added/changed/removed files
Exporting tag [0.4c] at [hg r9] [git :10]
Exporting tag [0.4d] at [hg r16] [git :17]
[…]
Exporting tag [3.1-rc] at [hg r21926] [git :21927]
Exporting tag [3.1] at [hg r21973] [git :21974]
Issued 22315 commands
git-fast-import statistics:
---------------------------------------------------------------------
Alloc'd objects: 120000
Total objects: 115032 ( 208171 duplicates )
blobs : 40504 ( 205320 duplicates 26117 deltas of 39602 attempts)
trees : 52320 ( 2851 duplicates 47467 deltas of 47599 attempts)
commits: 22208 ( 0 duplicates 0 deltas of 0 attempts)
tags : 0 ( 0 duplicates 0 deltas of 0 attempts)
Total branches: 109 ( 2 loads )
marks: 1048576 ( 22208 unique )
atoms: 1952
Memory total: 7860 KiB
pools: 2235 KiB
objects: 5625 KiB
---------------------------------------------------------------------
pack_report: getpagesize() = 4096
pack_report: core.packedGitWindowSize = 1073741824
pack_report: core.packedGitLimit = 8589934592
pack_report: pack_used_ctr = 90430
pack_report: pack_mmap_calls = 46771
pack_report: pack_open_windows = 1 / 1
pack_report: pack_mapped = 340852700 / 340852700
---------------------------------------------------------------------
$git shortlog -sn
369 Bob Jones
365 Joe Smith
Вот, собственно, и всё. Все Mercurial метки были преобразованы в метки Git, а ветки и закладки — в ветки Git. Теперь можно отправить репозиторий на новый Git сервер:
$git remote add origin git@my-git-server:myrepository.git
$git push origin --all
Bazaar
Bazaar это ДСКВ очень похожая на Git, поэтому репозиторий Bazaar достаточно легко сконвертировать в репозиторий Git. Для этого вам необходимо подключить плагин bzr-fastimport.
Установка плагина bzr-fastimport
Для UNIX подобных систем и Windows процедура установки плагина отличается. В первом случае, самый простой способ это установить пакет bzr-fastimport, вместе с которым будут установлены все необходимые зависимости.
Например, для Debian и подобных, следует выполнить:
$sudo apt-get install bzr-fastimport
Для RHEL выполните следующую команду:
$sudo yum install bzr-fastimport
Для Fedora, начиная с версии 22, новый менеджер пакетов dnf:
$sudo dnf install bzr-fastimport
Если пакет отсутствует в репозитории для вашего дистрибутива, то вы можете установить его как плагин, используя следующие команды:
$mkdir --parents ~/.bazaar/plugins # создаст необходимые директории для плагинов
$cd ~/.bazaar/plugins
$bzr branch lp:bzr-fastimport fastimport # импортирует плагин fastimport
$cd fastimport
$sudo python setup.py install --record=files.txt # установит плагин
Чтобы плагин заработал, вам понадобится модуль Python fastimport. Проверить наличие и установить его можно следующими командами:
$python -c "import fastimport"
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named fastimport
$pip install fastimport
Если модуль недоступен, то его можно скачать по адресу https://pypi.python.org/pypi/fastimport/.
Во втором случае (в Windows), bzr-fastimport устанавливается автоматически при стандартной установке (все галочки отмечены). В таком случае дальнейших действий не требуется.
Процесс импорта Bazaar репозитория отличается в зависимости от того одна ветка в вашем репозитории или несколько.
Проект с одной веткой
Войдите в директорию, содержащую ваш Bazaar репозиторий и проинициализируйте Git репозиторий:
$cd /path/to/the/bzr/repository
$git init
Теперь, просто экспортируйте свой Bazaar репозиторий и сконвертируйте его в Git репозиторий используя следующую команду:
$bzr fast-export --plain . | git fast-import
В зависимости от размера проекта, Git репозиторий будет готов через несколько секунд или минут.
Проект с основной и рабочей ветками
Вы так же можете импортировать Bazaar репозиторий с несколькими ветками. Предположим, что в вашем репозитории две ветки: одна является основной веткой проекта (myProject.trunk), другая - рабочей (myProject.work).
$ls
myProject.trunk myProject.work
Проинициализируйте Git репозиторий и войдите в его директорию:
$git init git-repo
$cd git-repo
Импортируйте в Git основную ветку с помощью команды:
$bzr fast-export --export-marks=../marks.bzr ../myProject.trunk | \
git fast-import --export-marks=../marks.git
Импортируйте в Git рабочую ветку с помощью команды:
$bzr fast-export --marks=../marks.bzr --git-branch=work ../myProject.work | \
git fast-import --import-marks=../marks.git --export-marks=../marks.git
Теперь, команда git branch покажет вам две ветки: master и work. Проверьте логи чтобы убедиться в отсутствии ошибок, после этого можно удалять файлы marks.bzr и marks.git.
Синхронизация индекса
Вне зависимости от количества веток и выбранного метода импорта, индекс не синхронизируется с HEAD, а при импорте нескольких веток - так же не синхронизируется рабочая директория. Эту ситуацию можно легко исправить следующей командой:
$git reset --hard HEAD
Игнорирование файлов из .bzrignore
Теперь давайте посмотрим на файлы, которые следует игнорировать. Первое, что нужно сделать - это переименовать .bzrignore в .gitignore. Если файл .bzrignore содержит одну или несколько строк начинающихся с "!!" или "RE:", нужно их изменить и, возможно, создать несколько файлов .gitignore, чтобы заставить Git игнорировать точно те же файлы, которые игнорируются Bazaar.
Наконец, создайте коммит со всеми изменениями, внесенными во время миграции:
$git mv .bzrignore .gitignore
$ # modify .gitignore if needed
$git commit -am 'Migration from Bazaar to Git'
Отправка репозитория на сервер
Вот и всё! Теперь вы можете отправить репозиторий на сервер в его новый дом:
$git remote add origin git@my-git-server:mygitrepository.git
$git push origin --all
$git push origin --tags
Ваш Git репозиторий готов к использованию.
Perforce
Следующей системой из которой мы импортируем репозиторий станет Perforce. Вы уже знаете, что существует два способа подружить Git и Perforce: git-p4 и Git Fusion.
Perforce Git Fusion
Git Fusion делает процесс переноса вполне безболезненным. Просто настройте проект, соответствия между пользователями и ветки в конфигурационном файле как показано в Git Fusion и клонируйте репозиторий. В результате вы получите настоящий Git репозиторий, который, при желании, можно сразу же отправлять на удалённый Git сервер. Вы даже можете использовать Perforce в качестве такового.
Git-p4
git-p4 также можно использовать для переноса репозитория. В качестве примера мы импортируем проект "Jam" из публичного депо Perforce.
Вначале нужно указать адрес депо в переменной окружения P4PORT.
$export P4PORT=public.perforce.com:1666
Для дальнейших экспериментов вам понадобится доступ к Perforce депо. Мы используем общедоступное депо на public.perforce.com, но вы можете взять любое другое, к которому у вас есть доступ.
Читать дальшеИнтервал:
Закладка: