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

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

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

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

Сообщение Bonart » 29.06.2007 13:12:09

У меня есть скачанные исходники версии 2.1.4
Для них требуется обновление из-за сломанных WideString в этой версии.
Есть ли способ обновиться с SVN, не перекачивая оттуда кучу лишнего?
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40

Сообщение Alexx2000 » 29.06.2007 14:52:22

Судя по всему нет.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение shade » 29.06.2007 21:57:45

можно взять у кого-нибудь рабочую копию... но это может оказаться сложнее чем просто выкачать :) ведь еще нужно найти человека который живет в вашем городе и имеет рабочую копию
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Sergei I. Gorelkin » 29.06.2007 23:14:56

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

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

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

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

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

Сообщение HikeR » 24.07.2007 06:20:19

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кб, ну и служебный траф.

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

Сообщение Sergei I. Gorelkin » 24.07.2007 09:49:50

Все дерево перекачиваться не будет - только измененные файлы.
И, например, у меня TortoiseSVN жмет трафик в полный рост - испытал на файле math.pp, два раза по 53 кБ, а трафик составил около 40 кБ.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение HikeR » 24.07.2007 11:05:28

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

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

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

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

ну или просить кого-то делать патчи ;)
HikeR
новенький
 
Сообщения: 24
Зарегистрирован: 24.07.2007 05:52:49

Сообщение shade » 24.07.2007 12:48:06

Можно просто получить конкретный файл:
svn cat -r N URL > file
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение HikeR » 24.07.2007 12:59:02

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

Сообщение Sergei I. Gorelkin » 24.07.2007 13:43:18

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

Сообщение HikeR » 24.07.2007 14:06:50

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

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

Сообщение Bonart » 24.07.2007 16:44:02

Кстати, трафик с публичным сервером SVN FreePascal неплохо сжимается toonel.net и т.п. программами. В результате полное скачивание рабочей копии оказывается лишь на треть затратнее снапшота (31 Мб против 24).
Так что голые исходники, если планируется хоть какое-то их обновление, качать смысла нет.
Bonart
новенький
 
Сообщения: 81
Зарегистрирован: 29.06.2007 11:47:40


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru