2012-06-26 2 views
0

Я использую следующую команду, чтобы экспортировать свой репозиторий в локальный путь:Экспорт SVN репозитория через FTP на удаленный сервер

svn export --force svn://localhost/repo_name /share/Web/projects/project_name 

Есть ли, довольно легко (Linux новичку здесь) способ сделать то же самое по протоколу FTP, для экспорта репозитория на удаленный сервер?

Последний параметр svn export AFAIK должен быть локальный путь и AFAIK эта команда не поддерживает предоставление путей в виде URL,, как, например:

ftp://user:[email protected]:path/ 

Итак, я вещь, должен быть какой-то сценарий нанят здесь, чтобы выполнить эту работу.

Я просил некоторых людей об этом и был предупрежден, что самый простой способ - экспортировать репозиторий на локальный путь, перенести его на FTP-сервер и затем очистить локальный путь. К сожалению, я потерпел неудачу после первого шага (извлечение на локальный путь! :) Итак, вопрос поддержки заключается в том, можно ли это сделать «на лету» или действительно нужно разбить на два этапа: export + ftp transfer?

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

BTW: Я использую QNAP TS-210, простое устройство NAS, с очень ограниченным Linux на борту. Таким образом, многие команды командной строки, такие как GUI, недоступны мне.

EDIT: Это второй вопрос в моей «цепочке». Даже если вы поможете мне преуспеть здесь, я не смогу автоматизировать эту работу (как я желаю) без вашей помощи в вопросе «SVN: Force svn daemon to run under different user». Может ли кто-нибудь посмотреть туда, пожалуйста? Спасибо!

+2

Вы упоминаете SVN Export как команду, в которой вы работаете ... Экспорт принимает либо последнюю версию главы или ревизию, которую вы вводите, и отправляет на диск ... Мой вопрос: Вы пытаетесь создать резервную копию репо, переместить его или просто взять в него файлы и скопировать их в другое место? В зависимости от того, какой SVN Dump будет работать как для резервного копирования, так и для перемещения, SVNAdmin Hotcopy также будет работать как для резервного копирования, так и для перемещения, а экспорт svn будет работать, если вы просто копируете файлы ... – TiernanO

+0

@TiernanO: Третий вариант - m пытается экспортировать только файлы и папки (без метаданных SVN) с сервера разработки на указанный путь на производственный сервер клиента (клиенты предпочитают делать тесты на своей машине вместо входа в dev-сервер). – trejder

+0

грандиозная работа. будет корректировать мой ответ ... – TiernanO

ответ

3

Ну, если вы используете Linux, вы должны быть в состоянии смонтировать ftpfs. Я считаю, что для этого в ядре Linux был модуль. Тогда я думаю, вам также понадобится FUSE.

В принципе, если вы можете смонтировать ftpfs, вы можете написать свой экспорт Svn непосредственно в смонтированном папку.

+0

Спасибо! Но гора очень неустойчива на моем NAS. Я экспериментировал с монтированием удаленного Samba share (локального сетевого компьютера под управлением Windows 7) как cifs и smbfs. Оба решения отлично работали в течение нескольких дней, а затем внезапно перестали работать. Даже если ftpfs будет работать здесь (я даю ему попробовать, если найду какое-то время), я довольно обеспокоен, если это достаточно стабильное решение, которое я искал? – trejder

+0

Ну, лучшим решением, скорее всего, будет использование ssh. – carlspring

3

не уверен в FTP, но SSH будет намного проще и должен иметь лучшее сжатие.Пример отправки репо через SSH может выглядеть следующим образом:

svnadmin свалка/путь/к/репозитарий | SSH -C имя_пользователя @ ServerName 'svnadmin -q нагрузки/путь/к/хранилище/на/сервере'

URL я обнаружил, что информация была на Martin Ankerl's site

[обновление]

на основе комментарий от @trejder на вопрос, чтобы сделать экспорт через SSH, моя рекомендация будет выглядеть следующим образом:

экспорт СВН в папку локально, а затем использовать следующую команду:

кд & & деготь czv ЦСИ | ssh example.com 'tar xz'

где src - это папка, в которую вы экспортировали, а example.com - это сервер.

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

+0

+1: Да, делать это через SSH будет намного, намного лучше! – carlspring

+0

Спасибо! Могу ли я обменять «example.com» на «ftp: // user: pass @ server: path /» - т. Е. Предоставить всю необходимую информацию: пароль пользователя, пароль и сервер? Должно ли это работать? – trejder

+1

должен делать, да. Удачи! сообщите нам, если это сработает! – TiernanO

1

я это написал некоторое время назад - возможно, это пригодится здесь: exup

Смежные вопросы