On Wed, 2 Dec 2009 09:34:37 +0300 "Dmitry E. Oboukhov" <[email protected]> wrote:
> >>>> однако при попытке сделать git push --tags в другой репозитарий
> >>>> эти метки игнорируются.
> AGG>>> потому что это не локальные рефы, а удаленные. Добейся,
> AGG>>> вначале, чтобы у тебя были обычные тэги, которые отображаются
> AGG>>> командой git tag и потом уже пуш.
> >>
> >> так в том то и вопрос: как этого добиться?
>
> AGG> Ну смотри, у тебя есть некоторые ref'ы грубо говоря в другом
> AGG> неймспейсе. refs/remotes/tags/tag1
> AGG> Нормальные tag'и должны быть в refs/tags
> AGG> При чем сделано это вполне понятно почему: в svn нету тэгов, а
> AGG> есть только копии поддеревьев. То есть, в лучшем случае то, что
> AGG> подразумевается под тегом в svn, на самом деле такая ветка,
> AGG> которую просто по-договоренности не принято изменять. Опять же
> AGG> это вполне конкретный коммит с коммит логом.
>
> AGG> Если ты хочешь, чтобы на соответствующие вершины указывали
> AGG> гитовские тэги, то создай их руками. Например так:
>
> AGG> for tag in $(git branch -r | grep tags/);do
> AGG> git tag $(basename $tag) $tag
> AGG> done
>
> я так делал (в первом письме писал), вебгуй после этого показывает
> список тагов, но в листе коммитов их (такие таги) не распознает.
>
> я с этого собственно и начал.
> после такой команды создаются refs/tags/release_0.1.10 которые по
> show-ref имеют _тот_ же commit-id. я полагаю что чтобы в вебгуе это
> распознавалось как таги, надо чтобы это был не тот же, а предыдущий.
На предыдущий - это просто:
for tag in $(git branch -r | grep tags/);do
if git diff $tag $tag'^';then
git tag $(basename $tag) $tag'^'
else
echo "Warning: $tag differs from $tag'^', taggin $tag."
git tag $(basename $tag) $tag
fi
done
Вот только так ты потеряешь коммит-обжекты соответствующие тэгам, а в
них могут содержаться комментарии. Хотя как раз комментарии можно
вытащить и засунуть внутрь tag object, если делать тэги не простыми
рефами, а annotated тэгами. Что-то вроде
for tag in $(git branch -r | grep tags/);do
if git diff $tag $tag'^';then
git tag -a -m \
"$(git show remotes/tags/tag1|grep -v '^commit' | grep -v \
'^\s*git-svn-id:')" $(basename $tag) $tag'^'
else
echo "Warning: $tag differs from $tag'^', taggin $tag."
git tag $(basename $tag) $tag
fi
done
--
Best regards,
Alexander GQ Gerasiov
Contacts:
e-mail: [email protected] Jabber: [email protected]
Homepage: http://gq.net.ru ICQ: 7272757
PGP fingerprint: 04B5 9D90 DF7C C2AB CD49 BAEA CA87 E9E8 2AAC 33F1
signature.asc
Description: PGP signature

