wiki:ru/GitGuideLines
Last modified 15 years ago Last modified on 11/29/09 15:16:44

Руководство для разработчика по работе с git

Любой разработчик может вносить изменения в репозиторий, поэтому нам необходимы правила, которые:

  • помогут ориентироваться в исправлениях в ветках
  • позволят узнать, кто является ответственным за исправления.

Соглашения

Для исключения неоднозначных толкований необходимо определиться с условными обозначениями, которые далее будут применяться в этом руководстве.

${src_dir}:

Каталог, в котором находятся исходные тексты Midnight Commander. В этом каталоге должен присутствовать подкаталог .git
Расположение этого каталога в файловой системе может быть в любом месте, которое вам понравится. Это может быть /home/<yournick>/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

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

Выполнение операции "просмотр тикета с веткой"

На странице списка тикетов, которые необходимо пересмотреть, выбирайте любой тикет. Статус тикета '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

Звездочка перед названием ветки, как уже было сказано, обозначает текущую ветку.

Теперь вы можете протестировать изменения или исправления, внесенные в эту ветку (и описанные в связанном тикете).

Дополнительные материалы

Басня о Git расскажет о создании системы, похожей на Git, с нуля.