Участник:Andrey Kruglov/Основы работы с исходным кодом OpenCorpora через git: различия между версиями

Материал из OpenCorpora
Перейти к навигации Перейти к поиску
мНет описания правки
 
Строка 117: Строка 117:
</pre>
</pre>


=== Ссылки ===
== Ссылки ==
* http://dev.iu7.bmstu.ru/trac/corporate_docs/wiki/Git
* http://dev.iu7.bmstu.ru/trac/corporate_docs/wiki/Git

Текущая версия от 13:47, 18 апреля 2015


Это мои черновые записки по повод того, как надо работать с исходниками проекта на github'е.

Лично мне это нужно было потому что я работал с разными системами версионного контроля, но навыки работы с гит - практически нулевые (что-то слышал, сам не сталкивался).

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

В качестве небольшого введения

Ранее (до весны 2014 года) разработка велась на базе code.google, сейчас ведётся на базе гитхаб.

Часть разработчиков работает по модели «общего репозитория» (имеет доступ на запись в репозиторий OpenCorpora/opencorpora) -- в основном те, кто уже давно в проекте.

Себе я выбрал модель «Fork + Pull» (в принципе, можно делать и pull request без fork), форкнув OpenCorpora/opencorpora -> akmetainfo/opencorpora, очень удобно:

Модель «Fork + Pull» позволяет любому склонировать (fork) существующий репозиторий и сливать изменения в свой личный fork без необходимости иметь доступ к оригинальному репозиторию. Затем, изменения должны быть включены в исходный репозиторий его хозяином. Эта модель уменьшает количество телодвижений для новых contributors и популярна для open source проектов, так как позволяет людям работать независимо, без единого координирования.

Собственно, всё что ниже -- набор типовых сценариев по этой выбранной модели.

Первоначальная настройка

Выполняем (разово!) настройку:

git config --global user.name "akmetainfo"
git config --global user.email "myEmailAddress"

cd /var/www/html

git clone https://github.com/akmetainfo/opencorpora.git .

git remote add upstream https://github.com/OpenCorpora/opencorpora.git

git fetch upstream

git remote set-url origin https://[email protected]/akmetainfo/opencorpora.git

Что получилось в итоге? У нас есть upstream (репозиторий OpenCorpora/opencorpora, из которого мы можем забирать себе текущие исходники) и origin (репозиторий akmetainfo/opencorpora, в котором можно работать и периодически делать pull request в upstream). По-моему, очень красиво и удобно, хоть и несколько непривычно после TFS.


Типовая работа над фичей

Создали новую ветку и переключились на неё:

git checkout -b FirefoxSearchSherlockPlugin

Поработали, добавляем новые файлы:

git add ./dict_search.php

git add ./templates/static/dict_search.tpl

git add ./dict-quicksearch.src

Делаем коммит:

git commit -m "Firefox quicksearch via Sherlock"

Отправляем коммит на гитхаб в origin:

git push origin FirefoxSearchSherlockPlugin


Забрать себе изменения из OpenCorpora/opencorpora

Забирает изменения из upstream (OpenCorpora/opencorpora) ветку master (а там других и нет обычно) и merge'ит с тем, что есть локально:

git pull upstream master


Самые полезные команды git

Список всех текущих веток:

git branch

Текущий статус:

git status

Переключение между ветками:

git checkout master

git checkout YaMetrikaSettings

Откат файла в исходное состояние:

git checkout ./migrations/initial_schema.sql

Rebase

См. тут очень толковое описание: http://tonyganch.com/git/rebase/

git rebase -i HEAD~3

pick 3a6d8dc Selective backup
f af97205 Unused sql-settings for selective backup removed
f d25fc23 Selective backup migrations and scripts

И, если что-то мимо - то помнить, что можно откатить последний push --force следующим образом: http://tonyganch.com/git/reset/

git reset --hard a1a1a1
git push -f origin SqlSelectiveBackup

Ссылки