Вопрос

У меня несколько интересная ситуация с развитием событий.Клиент и сервер развертывания находятся внутри брандмауэра без доступа к серверу Subversion.Но разработчики находятся за пределами брандмауэра и могут использовать сервер Subversion.Прямо сейчас решение, которое я разработал, состоит в том, чтобы обновить мою локальную копию кода, а затем извлечь самые последние обновленные файлы с помощью UnleashIT.

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

Я не беспокоюсь о попытках изменить настройки брандмауэра или попытаться найти более простой способ добраться до сервера Subversion изнутри брандмауэра.Меня просто интересует способ получить частичный экспорт из репозитория самых последних измененных файлов.

Есть ли какие-либо другие предложения?

Ответ найден:В дополнение к ответу, который я пометил как Answer, я также нашел здесь следующее, чтобы иметь возможность сделать это из TortoiseSVN:

От http://svn.haxx.se/tsvn/archive-2006-08/0051.shtml

* select the two revisions
* right-click, "compare revisions"
* select all files in the list
* right-click, choose "export to..." 
Это было полезно?

Решение

Я нашел rsync чрезвычайно полезен для синхронизации деревьев каталогов в нескольких системах.Если у вас есть доступ командной строки к вашему серверу с рабочей станции разработчика, вы можете регулярно проверять код локально и запускать rsync, который будет передавать на сервер только те файлы, которые были изменены.

(Это предполагает наличие Unix-подобной среды на ваших рабочих станциях разработчиков.Cygwin будет работать нормально.)

cd deploy
svn update
rsync -a . server:webdir/

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

  -r [--revision] arg      : ARG (some commands also take ARG1:ARG2 range)
                             A revision argument can be one of:
                                NUMBER       revision number
                                '{' DATE '}' revision at start of the date
                                'HEAD'       latest in repository
                                'BASE'       base rev of item's working copy
                                'COMMITTED'  last commit at or before BASE
                                'PREV'       revision just before COMMITTED

Вам нужно будет отслеживать, какую последнюю версию вы скопировали на сервер.Предполагая, что это SVN-версия xxxx:

svn export -r xxxx:HEAD http://svn/

Затем просто скопируйте содержимое развернуть каталог на вашем сервере поверх существующих файлов.

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

Другие советы

svn export не принимает диапазон версий, попробуйте это.

Возможным решением является получение списка измененных файлов с помощью:

svn diff --summarize -rXXX http://svn/...

а затем экспортируйте каждый из них.

Итак, если я правильно понимаю...

Допустим, у вас есть репозиторий, который выглядит следующим образом:

/
|+-DIR1
|   |- FILEa
|   |- FILEb
|+-DIR2
|   |- FILEc
|   |- FILEd
|- FILEe
|- FILEf

И допустим, вы обновляете файлы FILEa, FILEc, и FILEf и зафиксируйте их обратно в хранилище.Затем то, что вы хотите экспортировать из репозитория, - это структура, которая выглядит следующим образом:

/
|+-DIR1
|   |- FILEa
|+-DIR2
|   |- FILEc
|- FILEf

Это правда?

Крючки Subversion выглядят так, как будто у них многообещающие возможности.Но, будучи относительно неосведомленным о том, как создать скрипт для перехвата, как бы я извлек файлы, которые были зафиксированы, и передал их по FTP куда-нибудь, сохраняя структуру каталогов?

Если бы я мог это сделать, то кто-то внутри брандмауэра мог бы перенести файлы на сервер развертывания, и все было бы в порядке.

Вы могли бы попробовать поиграть с дамп svnadmin команда, которая поставляется вместе с двоичными файлами Subversion.Вы можете использовать эту команду, чтобы выгрузить весь репозиторий в файл, только определенную ревизию или диапазон ревизий.Затем используйте загрузка svnadmin чтобы загрузить дамп-файл в новый, чистый репозиторий.

Не идеальное решение, поскольку оно работает с точки зрения репозитория, а не отдельных файлов.

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

Не могли бы вы написать скрипт подключения svn который использует какой-либо метод (возможно, scp или ftp) для отправки файлов в удаленное местоположение в момент их фиксации?

Если вы пометите изменения тегами, это может помочь github svn-разница-экспорт

Вы не предоставляете информацию о том, что разрешено через брандмауэр.Я не знаком с UnleashIT.

Я думаю, у вас мог бы быть скрипт, который экспортирует из SVN в папку на сервере SVN.Затем скрипт заархивирует экспортированные файлы.Затем вы можете перенести ZIP-файл любым удобным для вас способом и извлечь на сервер развертывания.

TortoiseSVN поддерживает прокси-серверы, чтобы вы могли использовать один из них на стороне клиента?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top