[devel] Опыт использования git-svn

Eugene Prokopiev =?iso-8859-1?q?enp_=CE=C1_altlinux=2Eorg?=
Чт Окт 2 11:26:25 MSD 2008


Здравствуйте!

Хочу поделиться опытом использования git-svn. Эту тему я уже поднимал,
но сейчас в голове стало немного яснее. Возможны 2 сценария:

1) Нужен только один бранч из svn - тогда при создании репозитария я
говорю нечто в духе git-svn init
http://svn.callweaver.org/callweaver/branches/rel/1.2 и получаю:

$ git-branch -a
...
  git-svn
$ git-show-ref
...
857071fff59b6af1054a1c10b3e4c3c6c7dc6cd7 refs/remotes/git-svn

Соответственно, в .gear/rules я добываю тарболл с оригинальными
исходниками так - tar:  git-svn:. Никакие дополнительные тэги для
этого мне не нужны. В том бранче, в котором у меня лежит спек, я теги
тоже не ставлю, ибо коммитов немного, каждому соответствует запись в
changelog - потеряться в них трудно, а зачем еще нужны тэги я
придумать не могу, разве что когда-нибудь по тэгам будут принимать
пакеты ;)

2) Нужно несколько бранчей (теоретически это правильнее, т.к. может
потребоваться переехать на другой бранч из svn, да и git-svn ругается
меньше, если история нелинейная) - тогда говорю git-svn init -s
git-svn init -s svn://radlinux.org/radlinux/ и получаю:

$ git-branch -a
...
  0.4.4
  0.4.4-lau
  0.4.5
  0.4.6
  0.4.7
  editorial
  editorial на 771
  tags/0.4.0
  tags/0.4.1
  tags/0.4.2
  tags/0.4.3
  trunk
$ git-show-ref
...
d0c3b1656f2927d80824c754f134acd19f86581b refs/remotes/0.4.4
d916c887d3c94bb20a979e560f44a01fc9e73b9f refs/remotes/0.4.4-lau
038eb9326683cf70d0739238bb7817c56aca41fd refs/remotes/0.4.5
477275c16d4845fee9c200d4a4339805e2748f91 refs/remotes/0.4.6
521792b3e51d9aa4c88b747b93777388d3666f95 refs/remotes/0.4.7
c19726d9789c723649f87aa7ee4fc37770903a49 refs/remotes/editorial
569154dddf2e4aa1cfeaa1417468583048f92edd refs/remotes/editorial на 771
ae1c9775ed67a4e47e65aae56f38db11a43a7eb1 refs/remotes/tags/0.4.0
c8e0783e380c7d38cac8c98106df0299599886b5 refs/remotes/tags/0.4.1
0ac2d9119d90f15118eef82f3a07f33df674cd46 refs/remotes/tags/0.4.2
f4c72ef5b28661d476c8a336b31a225f69407719 refs/remotes/tags/0.4.3
d9dbc6ce04247aad510a28a7e26a3cf46834947f refs/remotes/trunk

Тарболл добываю аналогично - tar:  0.4.6:. Для того, чтобы узнать
номер последней ревизии в бранче 0.4.6 (он нужен для формирования
Release в спеке), делаю git-checkout 0.4.6 и git-log. В первом
сценарии этот номер легко определялся по выводу git-svn fetch.

Спек и .gear/* у меня живут в отдельном бранче srpm, исходники я
пришиваю к ним с помощью git-merge -s ours {upstream branch} и
обновляю тэги для gear посредством gear-update-tag -ac.

О том, как изготавливать патчи к апстримным исходникам посредством
gear, уже писали на wiki, поэтому не буду повторяться, скажу только,
что модифицированные исходники живут еще в одном бранче.

-- 
С уважением,
Прокопьев Евгений


Подробная информация о списке рассылки Devel