wiki:ru/GitGuideLines

Version 3 (modified by iNode, 13 years ago) (diff)

--

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

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

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

Соглашения

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

${src_dir}:

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

Получение репозитория

Прежде всего, необходимо получить копию репозитория:

$ git clone ssh://midnight-commander.org:2222/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, с нуля.