LINUX.ORG.RU

svn «нетотальный» update

 


0

1

примерная проблема («все имена вымышлшены и не имеют ничего общего с ныне живущими»):
у меня есть дерево каталогов ./tree, в котором есть файлы f1.c, f2.c, f3.c, etc

коммитил только «по-файлово» и ревизии были
f1.c - 23
f2.c - 18
f3.c - 18
f4.c - 20

а когда сделал 'svn up ./tree' получил

$ svn up tree/
Updating 'tree/net':
At revision 25.


т.е. ничего нового не пришло, но ривизии _все_ файлов стали равны 25 :-\

вот и вопрос, можно ли как-то убедить svn не обновлять ревизию файла «на пустом месте»?

p.s. или я, наверное, хочу странного? %)

или я, наверное, хочу странного?

This. В свн ревизии они не пофайлово, оно на все файлы. Новый коммит - новая ревизия. И коммитить нужно не пофайлово а по фичам.

goingUp ★★★★★ ()
Ответ на: комментарий от goingUp

обидно... значит прийдется написать скрипт, какой-нить svnfup, который будет рекурсивно гулять по каталогу и апдейтить только *.[ch] %)

metawishmaster ★★★★ ()
Последнее исправление: metawishmaster (всего исправлений: 1)
Ответ на: комментарий от metawishmaster

А чего так уныленько? Если уж сходить с ума, то каждому файлу свой репозиторий!

Возможно тебе нужен svn log filename

goingUp ★★★★★ ()

вот и вопрос, можно ли как-то убедить svn не обновлять ревизию файла «на пустом месте»?

svn не обновляет ревизию файла при svn up. Обновляется рабочая копия. Если вы сделаете svn info для своего файла (скажем, svn info f1.c), то вы увидите что-то вроде:

...
Revision: 25
...
Last Changed Rev: 23
...
Вот значение Last Changed Rev и указывает, когда изменялся сам файл. А Revision указывает ревизию, которая была в репозитории при последнем svn up.

И зачем вам нужно делать update для отдельных файлов?

eao197 ★★★★★ ()
Ответ на: комментарий от goingUp

ну вот с svn log да, косяк

заморочка из-за того, что в самописном драйвере заказчик хочет номер ревизии, а сейчас у меня из-за выходок svn'a номера скачут сами по себе

metawishmaster ★★★★ ()
Ответ на: комментарий от metawishmaster

Ну если драйвер из одного файла, то уже выше подсказали, а если нет, то можно действительно отдельный репозиторий и подключить его в основное дерево через svn:externals

goingUp ★★★★★ ()
Ответ на: комментарий от eao197

спасибо за наводку! :)

update для отдельных файлов я делал чтобы ревизия оставалась той что нужно, но благодаря Вашей информации этот богомерзкий «update для отдельных файлов» будет не нужен :)

metawishmaster ★★★★ ()
Ответ на: комментарий от metawishmaster

А в чем проблема? Поменяли f1.c в коммите 20, f2.c в коммите 21, все вместе «выпустилось» под номером ревизии 25 (в котором, например, можно ченджлог коммитить). В итоге ревизия всего драйвера - 25.

micronekodesu ★★ ()
Ответ на: комментарий от goingUp

можно действительно отдельный репозиторий и подключить его в основное дерево через svn:externals

можно и так подумать...

спасибо :)

metawishmaster ★★★★ ()
Ответ на: комментарий от micronekodesu

тут такое дело... не готов не только драйвер, но и сам девайс %)
и там не один, а три драйвера (один для phy и два для MAC'ов)

metawishmaster ★★★★ ()
Ответ на: комментарий от metawishmaster

в самописном драйвере заказчик хочет номер ревизии

Так он хочет иметь номер ревизии или использовать SVN? Так-то можно номер ревизии даже вручную назначать.

anonymous ()
Ответ на: комментарий от anonymous

можно и вручную, но это геморно :)
так-то мне уже подсказали, мне нужно было только в Makefile поменять Revision на 'Last Changed Rev', и все заработало :)

2 eao197: еще раз спасибо! :)

metawishmaster ★★★★ ()

В *.c файлах можно вставить svn keyword, например, $Id$ или $Revision$, который будет заменяться на эту самую Last Changed Rev. Например, сделать из этого значения строковую константу и выдавать по требованию.

Если заставить компилятор не выбрасывать такие константы при линковке, то потом можно натравить на бинарник, например, strings и получать ревизии всех вкомпилированных файлов.

E ★★★ ()
Ответ на: комментарий от metawishmaster

можно и вручную, но это геморно :)

По-моему, пользоваться SVN куда геморнее, но каждому свое.

anonymous ()
Ответ на: комментарий от E

у меня в мейкфайле создаются хидеры, в которых продефайнены версии ревизий SVN, а значения дефайнов добавляются строкой к MODULE_DESCRIPTION

metawishmaster ★★★★ ()
Ответ на: комментарий от anonymous

ну кому как удобнее, но сменить версию руками можно и забыть, а у меня автоматом при сборке

metawishmaster ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.