Git/SomeDestReposViaBranches
Материал из ALT Linux Wiki
Строка 31: | Строка 31: | ||
$ git commit -m 'Initial commit' | $ git commit -m 'Initial commit' | ||
| | | | ||
- | + | [[Image:0.png]] | |
|- | |- | ||
| | | | ||
Строка 40: | Строка 40: | ||
$ git branch srpm-4.0 | $ git branch srpm-4.0 | ||
| | | | ||
- | + | [[Image:1.png]] | |
|- | |- | ||
| | | | ||
Строка 54: | Строка 54: | ||
$ git tag ser2net-2.3 | $ git tag ser2net-2.3 | ||
| | | | ||
- | + | [[Image:2.png]] | |
|- | |- | ||
| | | | ||
Строка 65: | Строка 65: | ||
$ git commit -m 'Initial spec and initscript' | $ git commit -m 'Initial spec and initscript' | ||
| | | | ||
- | + | [[Image:3.png]] | |
|- | |- | ||
| | | | ||
Строка 81: | Строка 81: | ||
$ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.3-alt1.src.rpm devel:/incoming/Sisyphus/ | $ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.3-alt1.src.rpm devel:/incoming/Sisyphus/ | ||
| | | | ||
- | + | [[Image:4.png]] | |
|- | |- | ||
| | | | ||
Строка 97: | Строка 97: | ||
$ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.3-alt0.M40.src.rpm devel:/incoming/updates/4.0/ | $ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.3-alt0.M40.src.rpm devel:/incoming/updates/4.0/ | ||
| | | | ||
- | + | [[Image:5.png]] | |
|- | |- | ||
| | | | ||
Строка 107: | Строка 107: | ||
$ git tag ser2net-2.4 | $ git tag ser2net-2.4 | ||
| | | | ||
- | + | [[Image:6.png]] | |
|- | |- | ||
| | | | ||
Строка 123: | Строка 123: | ||
$ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.4-alt1.src.rpm devel:/incoming/Sisyphus/ | $ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.4-alt1.src.rpm devel:/incoming/Sisyphus/ | ||
| | | | ||
- | + | [[Image:7.png]] | |
|- | |- | ||
| | | | ||
Строка 139: | Строка 139: | ||
$ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.4-alt0.M40.src.rpm devel:/incoming/updates/4.0/ | $ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.4-alt0.M40.src.rpm devel:/incoming/updates/4.0/ | ||
| | | | ||
- | + | [[Image:8.png]] | |
|} | |} | ||
Если вы сделали коммит, о котором потом пожалели, можно откатиться с помощью git reset --hard HEAD^. Если --hard заменить на --soft, то изменения, сделанные в удаленном коммите, останутся в файлах, но окажутся незакоммиченными. Аналогично вместо HEAD^ можно указать другой коммит, явно или косвенно. | Если вы сделали коммит, о котором потом пожалели, можно откатиться с помощью git reset --hard HEAD^. Если --hard заменить на --soft, то изменения, сделанные в удаленном коммите, останутся в файлах, но окажутся незакоммиченными. Аналогично вместо HEAD^ можно указать другой коммит, явно или косвенно. |
Версия 01:30, 21 августа 2008
Поддержка пакета для нескольких apt-репозитариев с помощью бранчей git в картинках
Действия |
Команды |
Результат в gitk --all |
Создание репозитария |
$ mkdir ser2net $ cd ser2net $ git init-db | |
Создание и сохранение в бранче master файла .gear/rules, описывающего правила построения srpm |
$ mkdir .gear $ echo 'copy: *.init tar: ser2net' > .gear/rules $ git add . $ git commit -m 'Initial commit' | |
Создание дополнительных бранчей |
$ git branch upstream $ git branch srpm $ git branch srpm-4.0 | |
Загрузка исходного кода в бранч upstream |
$ git checkout upstream $ cp /download/ser2net-2.3.tar.gz . $ tar -zxf ser2net-2.3.tar.gz $ rm -f ser2net-2.3.tar.gz $ mv ser2net-2.3 ser2net $ git add . $ git commit -m 'Upstream initial commit' $ git tag ser2net-2.3 | |
Создание спека и инитскрипта в бранче srpm |
$ git checkout srpm $ vim ser2net.init $ vim ser2net.spec $ git add . $ git commit -m 'Initial spec and initscript' | |
Объединение бранчей srpm и upstream, правка спека, создание пакета для Sisyphus |
$ git checkout srpm $ git merge ser2net-2.3 $ vim ser2net.spec # меняем release $ add_changelog ser2net.spec $ vim ser2net.spec # пишем changelog $ gear --commit --hasher -- hsh # тестируем $ git commit -a -m 'First build for Sisyphus' $ git tag srpm-ser2net-2.3 $ gear --rpmbuild -- rpm -bs --sign --nodeps $ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.3-alt1.src.rpm devel:/incoming/Sisyphus/ | |
Объединение бранчей srpm-4.0 и srpm, правка спека, создание пакета для branch/4.0 |
$ git checkout srpm-4.0 $ git merge srpm-ser2net-2.3 $ vim ser2net.spec # меняем release $ add_changelog ser2net.spec $ vim ser2net.spec # пишем changelog $ gear --commit --hasher -- hsh # тестируем $ git commit -a -m 'Backport to branch/4.0' $ git tag srpm-4.0-ser2net-2.3 $ gear --rpmbuild -- rpm -bs --sign --nodeps $ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.3-alt0.M40.src.rpm devel:/incoming/updates/4.0/ | |
Обновление исходного кода из апстрима |
$ git checkout upstream $ gear-update /download/ser2net-2.4.tar.gz ser2net $ git commit -a -m 'Upstream update' $ git tag ser2net-2.4 | |
Объединение бранчей srpm и upstream, правка спека, создание новой версии пакета для Sisyphus |
$ git checkout srpm $ git merge ser2net-2.4 $ vim ser2net.spec # меняем release $ add_changelog ser2net.spec $ vim ser2net.spec # пишем changelog $ gear --commit --hasher -- hsh # тестируем $ git commit -a -m 'new version' $ git tag srpm-ser2net-2.4 $ gear --rpmbuild -- rpm -bs --sign --nodeps $ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.4-alt1.src.rpm devel:/incoming/Sisyphus/ | |
Объединение бранчей srpm и upstream, правка спека, создание новой версии пакета для branch/4.0 |
$ git checkout srpm-4.0 $ git merge srpm-ser2net-2.4 $ vim ser2net.spec # меняем release $ add_changelog ser2net.spec $ vim ser2net.spec # пишем changelog $ gear --commit --hasher -- hsh # тестируем $ git commit -a -m 'new backport to branch/4.0' $ git tag srpm-4.0-ser2net-2.4 $ gear --rpmbuild -- rpm -bs --sign --nodeps $ rsync -va --partial --stats --delete-after -e ssh /RPM/SRPMS/ser2net-2.4-alt0.M40.src.rpm devel:/incoming/updates/4.0/ |
Если вы сделали коммит, о котором потом пожалели, можно откатиться с помощью git reset --hard HEAD^. Если --hard заменить на --soft, то изменения, сделанные в удаленном коммите, останутся в файлах, но окажутся незакоммиченными. Аналогично вместо HEAD^ можно указать другой коммит, явно или косвенно.