= Руководство для разработчика по работе с git = Любой разработчик может вносить изменения в репозиторий, поэтому нам необходимы правила, которые: * помогут ориентироваться в исправлениях в ветках * позволят узнать, кто является ответственным за исправления. == Соглашения == Для исключения неоднозначных толкований необходимо определиться с условными обозначениями, которые далее будут применяться в этом руководстве. '''${src_dir}''': Каталог, в котором находятся исходные тексты Midnight Commander. В этом каталоге должен присутствовать подкаталог {{{.git}}}[[BR]] Расположение этого каталога в файловой системе может быть в любом месте, которое вам понравится. Это может быть {{{/home//src/mc}}}; {{{/usr/src/mc}}} или любой другой. == Получение репозитория == Прежде всего, необходимо получить копию репозитория: {{{ $ git clone ssh://midnight-commander.org:22/git/mc.git }}} == Персональная настройка git == Перед началом работы необходимо указать вашему git некоторые данные о себе: {{{ cd ${src_dir} git config 'user.name' 'ваше имя' git config 'user.email' 'ваш e-mail' }}} Обязательно укажите эти данные. Не стесняйтесь указать реальный e-mail адрес - он необходим для связи с вами при решении вопросов, связанных с ревизиями. После выполнения этих команд ваша персональная информация будет занесена в файл {{{${src_dir}/.git/config}}}. Это означает, что ваши персональные данные будут использоваться при работе только с этим репозиторием. Чтобы ваше имя и ваш e-mail использовались при работе с любым репозиторием, выполните команды: {{{ git config --global 'user.name' 'ваше имя' git config --global 'user.email' 'ваш e-mail' }}} В этом случа изменения сохранятся в файле {{{~/.gitconfig}}} == Работа с git == Сейчас вы готовы продолжить работу с репозиторием. Далее будут описаны типичные сценарии работы с репозиторием. === Выполнение операции "просмотр тикета с веткой" === На [http://www.midnight-commander.org/report/9 странице] списка тикетов, которые необходимо пересмотреть, выбирайте любой тикет. Статус тикета 'accepted' (принят) обозначает, что у тикета существует ветка, название которой начинается с номера тикета. например, вы выбрали тикет 'XXX. Some my thoughts'; статус тикета 'accepted'. Представим, что XXX - это какой-то номер. Выполните команду: {{{ git remote prune origin }}} чтобы обновить список веток которые возможно уже приняты в основной ствол и удалены на сервере. Далее выполните: {{{ git branch -r }}} Вы увидите список веток, которые присутствуют в родительском git. Одна из веток будет называться, например: 'origin/XXX_some_my_thoughts': {{{ origin/10_fish_stalls_on_symlink origin/125-allocate-and-free-memory-via-wrapper origin/135_drop_bundled_libintl origin/140_move_docs_and_contrib origin/145_update_m4_files origin/147_escaping origin/148_fancy_tab_handling origin/155_remove_WANT_WIDGETS origin/155_want_widgets_METUX origin/158_message_codes origin/161_drop_bundled_slang origin/162_syntax_namerle origin/166_syntax_minor_fixes origin/167_locale_german origin/XXX_some_my_thinks origin/174_4.6_mandriva_pty_closeonexec origin/199_slang_1x origin/200_drop_ncurses origin/204_mkdir_autofills_name origin/50_history_section_names origin/HACK_autoconf origin/HACK_install_dirs origin/HACK_memory_management origin/HACK_mvfs origin/HEAD origin/master origin/mc-4.6 origin/mc-ru-fork origin/utf-8 }}} Теперь убедитесь, что у вас нет локальной ветки с таким же названием. Выполните команду: {{{ git branch }}} Эта команда покажет список ваших локальных веток. Например: {{{ * master }}} Звездочка перед названием обозначает, что ветка является текущей. Если в этом списке нет 'XXX_some_my_thinks', то вам нужно выполнить следующую команду: {{{ git checkout -b XXX_some_my_thoughts origin/XXX_some_my_thoughts }}} После успешного завершения команды вы увидите следующее: {{{ Branch XXX_some_my_thoughts set up to track remote branch refs/remotes/origin/XXX_some_my_thoughts. Switched to a new branch "XXX_some_my_thoughts" }}} ''ВНИМАНИЕ'': При выполнении этой команды git может выдать помощь по использованию команды git-checkout. Это означает, что вам не помешало бы обновить ваш git до более новой версии. Вы теперь создали новую локальную ветку на основе ветки из родительского репозитория. ''ПРИМЕЧАНИЕ'': Если локальная ветка ранее уже была создана, то просто переключитесь на неё командой: {{{ git checkout XXX_some_my_thoughts }}} Можно также проверить, является ли ветка 'XXX_some_my_thoughts' текущей. Выполните команду: {{{ git-branch }}} Вы теперь увидите следующее: {{{ master * XXX_some_my_thoughts }}} Звездочка перед названием ветки, как уже было сказано, обозначает текущую ветку. Теперь вы можете протестировать изменения или исправления, внесенные в эту ветку (и описанные в связанном тикете). == Дополнительные материалы == [http://hades.name/blog/2009/05/23/the-git-parable-ru/ Басня о Git] расскажет о создании системы, похожей на Git с нуля.