Обновление с SVN, если есть только исходники

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Bonart
новенький
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Обновление с SVN, если есть только исходники

Сообщение Bonart »

У меня есть скачанные исходники версии 2.1.4
Для них требуется обновление из-за сломанных WideString в этой версии.
Есть ли способ обновиться с SVN, не перекачивая оттуда кучу лишнего?
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

Судя по всему нет.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

можно взять у кого-нибудь рабочую копию... но это может оказаться сложнее чем просто выкачать :) ведь еще нужно найти человека который живет в вашем городе и имеет рабочую копию
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

SVN может все! С помощью TortoiseSVN это делается примерно так:

1. Делаем checkout прямо в папку с исходниками, поставив галку Only check out top folder. При этом содержимое папки не выкачивается.

2. Кликаем правой кнопкой на папке и выбираем Show log. Получив лог, нажимаем Ctrl и выделяем ту ревизию, от которой исходники, и ту, до которой нужно обновиться. Опять кликаем правой кнопкой и выбираем Show differences as unified log.

3. В результате имеем патч, который накладываем на исходники обычным порядком (patch -p0 < file.diff)

Некоторый трафик при этом возникает, но он минимальный из всех возможных. Кроме того, нужно знать путь в репозитарии и номер ревизии, который соответствует исходникам, иначе получится ерунда.
HikeR
новенький
Сообщения: 24
Зарегистрирован: 24.07.2007 05:52:49

Сообщение HikeR »

1. Делаем checkout прямо в папку с исходниками

прямо в папку не получится, ибо там makefile.* лежат и svn ругнется по этому поводу. можно просто в пустую папку чекаут сделать.

Некоторый трафик при этом возникает, но он минимальный из всех возможных.

честно говоря, какой-то он немаленький совсем. я делал вот так:

Код: Выделить всё

svn diff -r 4479:4480 http://svn.freepascal.org/svn/fpc/trunk

получить 25 строк диффа и 165 кб входящего траффика.
глянул на файлы, имелись ввиду ncgmem.pas и nmem.pas, один 35кб, другой 30кб. итого 65кб
у меня такое подозрение, что они оба скачались в старой и новой версиях, то есть дважы, получается 130кб, ну и служебный траф.

поэтому как-то боязно дважды перекачивать все дерево исходников для получения диффа.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Все дерево перекачиваться не будет - только измененные файлы.
И, например, у меня TortoiseSVN жмет трафик в полный рост - испытал на файле math.pp, два раза по 53 кБ, а трафик составил около 40 кБ.
HikeR
новенький
Сообщения: 24
Зарегистрирован: 24.07.2007 05:52:49

Сообщение HikeR »

проверил.
* чекаут только папки installer из release_2_0_4:
полезный размер - 156кб, скачано - 93кб
переключение на release_2_1_4 и обновление - еще 30кб.
итого 123кб

* дифф между этими двумя ревизиями:
полезный размер (дифф) - 32кб, скачано 381кб.
плюс нужно еще скачать где-то оригинал +156кб
итого 537кб

получается, выгоды вообще никакой нет. хотя возможно, что просто именно этот сервер так плохо себя ведет, то есть заставляет делать дифф клиента, а не сам.
имеющиеся файлы практически подключить и использовать для снижения траффика нельзя :(

имхо, если обновляться только по выходу новых бет и релизов, то выгоднее качать снапшоты или готовые архивы, так как сжатие там намного лучше, чем у svn.

ну или просить кого-то делать патчи ;)
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Можно просто получить конкретный файл:
svn cat -r N URL > file
HikeR
новенький
Сообщения: 24
Зарегистрирован: 24.07.2007 05:52:49

Сообщение HikeR »

дык речь не об одном файле, а о всем пакете.
очень часто бывает, что имея снапшот хочется его обновить. но кроме как полным чекаутом это, увы, не сделать.
дифф, конечно, сделать можно, применить его тоже можно, однако полноценную рабочую копию сделать не получиться. поэтому только
shade писал(а):нужно найти человека который живет в вашем городе и имеет рабочую копию
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Странно, вообще-то, что серв не делает дифф у себя. Возможно, надо просто пойти еще раз вкурить документацию...
HikeR
новенький
Сообщения: 24
Зарегистрирован: 24.07.2007 05:52:49

Сообщение HikeR »

судя по логам, разрабы общаются с репозиторием по svn+ssh:, а для обычных юзеров предлагается http: (webdav).
проверил сейчас другой репозиторий, который на svn: сидит. дифф за пару ревизий буквально копейки траффика жрет.
вот так...

add:
наврал. проверил на других рабочих копиях, даже если я обновлялся почти каждый день при диффе один фиг качается примерно двойной объем интересующего файла :(
Bonart
новенький
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение Bonart »

Кстати, трафик с публичным сервером SVN FreePascal неплохо сжимается toonel.net и т.п. программами. В результате полное скачивание рабочей копии оказывается лишь на треть затратнее снапшота (31 Мб против 24).
Так что голые исходники, если планируется хоть какое-то их обновление, качать смысла нет.
Ответить