Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/devel/git/gitnotes ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

Оглавление документа

Создание на git.alt репозитория пакета


Цель: создать на git.alt репозиторий пакета


$ mkdir package.git
$ cd package.git
$ git-init 

$ touch .empty 

$ git-add .
$ git-commit -m "Initial commit" 

$ git-checkout -b upstream
$ cp ~/tmp/opensc-0.11.4.tar.gz ./
$ tar zxvf opensc-0.11.4.tar.gz
$ mv opensc-0.11.4 opensc
$ rm opensc-0.11.4.tar.gz
$ find opensc -type d -empty
opensc/doc/api/*
$ touch opensc/doc/api/*/.directory_holder_git
$ git-add .
$ git-commit -m "Upstream tree import." 

$ git-tag -m 'upstream 0.11.4' -s opensc-0.11.4 0ed04a782a89f01227f732be93edf85772d4d2c6 

$ git-checkout -b patches
$ stg init
$ stg new -m "opensc-0.11.4.rutoken-0.1.0.diff" opensc-0.11.4.rutoken-0.1.0.diff 
(приложить вручную патч patch -p1 --no-backup-if-mismatch < ../opensc-0.11.4.rutoken-test1.diff)
$ stg refresh
(посмотреть не создает ли патч новых файлов\каталогов (stg status) если есть такие добавить их (stg add opensc && stg refresh) )
$ stg commit 

$ git-checkout master
$ git-pull -s ours . patches 


$ git-tag -m 'patches for 0.11.4-alt1' -s 0.11.4-alt1 6696acb85daba30649343ab6a37950726d77f647 

$ git-add .gear-rules
$ git-add opensc.spec
$ git-add readme.alt
$ gear-update-tag --all
$ gear --commit --rpmbuild -- rpm -ba 

copy: readme.alt
diff: @name@-@version@:opensc @version@-@release@:opensc name=@name@-@version@-@release@-super.patch
tar: @name@-@version@:opensc name=@name@-@version@ 

$ git commit -a -m "Package opensc-0.11.4-alt1"
$ git-repack -a -d
$ git-push --all git.alt:/people/stanv/packages/opensc_current.git
$ git-push --tags git.alt:/people/stanv/packages/opensc_current.git 

Обновляем пакет

Припустим апстрим выпустил новую версию продукта.


$ git clone git.alt:/people/stanv/packages/openct_current.git
$ cd openct_current 

$ git checkout -b upstream origin/upstream 

$ gear-update 

Заметки





git.alt from raorn

Задача

Я узнал что у меня есть огромная семья... Кто-то нашептал, что в git лежит новая сборка пакета N. У меня есть дополнения к этому пакету. Хотелось бы склонировать чужой git-репозитарий, внести правки и отослать это мантейнеру. Как?


Далее пакет N == ocsinventory-server

Поиск git-репозитария на git.alt

ssh git.alt find-package ocsinventory-server
/people/raorn/packages/ocsinventory-server.git 

Создание клона репозитария на git.alt

Теперь я создам себе клон raorn'овского репозитария на git.alt

ssh git.alt clone /people/raorn/packages/ocsinventory-server ocsinventory-server 

Проверяю

ssh git.alt ls /people/barabashka/packages/ocsinventory-server.git
total 20
-rw-r--r-- 1   23 Apr 14 19:36 HEAD
-rw-r--r-- 1   66 Apr 14 19:36 config
-rw-r--r-- 1   29 Apr 14 19:36 description
-rw------- 1    0 Apr 14 19:36 git-daemon-export-ok
lrwxrwxrwx 1   22 Apr 14 19:36 hooks -> /usr/share/girar/hooks
drwxr-sr-x 4 4096 Apr 14 18:00 objects
drwxr-sr-x 4 4096 Apr 14 19:36 refs 


Получение git-репозитария на локальную машину с git.alt

git clone git.alt:/people/barabashka/packages/ocsinventory-server.git
Initialized empty Git repository in /home/lsv/Projects/OCS/ocsinventory-server/.git/
remote: Generating pack...
remote: Done counting 3384 objects.
remote: Deltifying 3384 objects...
remote:  100% (3384/3384) done
remote: Total 3384 (delta 2377), reused 3384 (delta 2377)
Receiving objects: 100% (3384/3384), 11.24 MiB | 661 KiB/s, done. 

Надо заметить, что я клонирую с git.alt не raorn'овский, а свой. Чтобы original-refs смотрели на мой репозитарий, а не на raorn'овский.

Подключение удаленного репозитария с git.alt

Теперь подключаю raorn'овский репозитарий как удаленный к себе на локальную машину

git remote add alt-raorn-ocs git.alt:/people/raorn/packages/ocsinventory-server.git 


Получение удаленного репозитария raorn'а

git fetch alt-raorn-ocs
From git.alt:/people/raorn/packages/ocsinventory-server
 * [new branch]      master     -> alt-raorn-ocs/master
 * [new branch]      stable_1_0_1 -> alt-raorn-ocs/stable_1_0_1 


Синхронизация branch'ей

git fetch alt-raorn-ocs 'refs/heads/*:refs/heads/*'
From git.alt:/people/raorn/packages/ocsinventory-server
 * [new branch]      stable_1_0_1 -> stable_1_0_1
 * [new branch]      upstream   -> upstream 


Итого

git status
# On branch master
nothing to commit (working directory clean)

git branch
* master
  stable_1_0_1
  upstream

git branch -r
  alt-raorn-ocs/master
  alt-raorn-ocs/stable_1_0_1
  alt-raorn-ocs/upstream
  origin/HEAD
  origin/master
  origin/stable_1_0_1
  origin/upstream 

Внесение изменений и отправка изменений к себе на git.alt

Далее вносятся изменения в локальные файлы, все это дело commit'ется.


Теперь можно отправлять их к себе в git-репозитарий на git.alt

git push
Counting objects: 13, done.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 1.99 KiB, done.
Total 8 (delta 6), reused 0 (delta 0)
girar-update: email notification about `refs/heads/master' update sent.
refs/heads/master: 742e85f3e1ace767197aa3b8bc9a7a1fd09bdc13 -> 99721cfb940326175087a5100ff61463cf8b06ba
To git.alt:/people/barabashka/packages/ocsinventory-server.git
   742e85f..99721cf  master -> master
Pack pack-1e0859e3d4c1c011cef2f2a9e8222d1e136c84df created.
Removing unused objects 100%...
Done. 

UPDATE PACKAGE .alt4->.alt5 (new patch)

$ git checkout -b patches origin/patches
$ stg init
$ stg uncommit opensc_patch -n 2 (opensc_patch – префикс для патчей)
$ stg applied
opensc_patch1
opensc_patch2
$ stg series
+ opensc_patch1

> opensc_patch2

$ stg delete
$ stg new -m “opensc-0.11.4–0.11.4.rutoken-0.3.2.diff” rutoken
Копируем новый патч:


$ cp /RPM/opensc/SOURCES/opensc-0.11.4–0.11.4.rutoken-0.3.2.diff opensc/
$ cd opensc/
$ stg import opensc-0.11.4–0.11.4.rutoken-0.3.2.diff
$ stg status
$stg refresh -m “opensc-0.11.4–0.11.4.rutoken-0.3.2.diff” (применим патч как коммит для git)
$ git-checkout master
$ git-pull -s ours . patches
$ vim opensc.spec
$ gear-update-tag --all
$ gear --commit --rpmbuild — rpm -ba
$ git-repack -a -d
$ git-push --all git.alt:/people/stanv/packages/opensc_current.git
$ git-push --tags git.alt:/people/stanv/packages/opensc_current.git
готово


Happy end


http://www.freesource.info/wiki/BranchInGit


Если есть вопросы – обращайтесь.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]