Svndump с версией репозитория - PullRequest
0 голосов
/ 05 ноября 2011

Мне нужно создать скрипт резервного копирования (как в пакетном режиме, так и в bash), который я хочу сделать в автоматическом svndump, который создает дамп имени файла <repository_name>_<repository_rev>.zip.

Пример: Мой репозиторий зовут MySplice, и это на rev. 234 (что я не знаю, и я не хочу проверять внутри пути к хранилищу), поэтому я хочу запустить скрипт backup.bat или backup.sh, и он создает файл mysplice_r234.zip, который является дампом моего хранилища .

Итак, как я могу это сделать? Спасибо.

Ответы [ 4 ]

5 голосов
/ 05 ноября 2011

В Linux вы можете сделать это следующим образом:

REPO=/path/to/repository
r=$(svnlook youngest "$REPO")
name=$(basename "$REPO")-r$r
svnadmin dump "$REPO" > "$name.svndump"
zip "$name.zip" "$name.svndump"

Обратите внимание: я думаю, что zip-файл не очень подходит для хранилища, потому что дамп всегда будет одним файлом, а не группой файлов. Поэтому, пожалуйста, рассмотрите возможность использования gzip или bzip2.

2 голосов
/ 05 ноября 2011

Это правильное решение (когда-либо AH downvote ответ на -1 ):

 $ rev=`svn info file:///srv/svn/proj | sed -n '/Last Changed Rev:/{s=.*: ==;p;q;}'`
 $ svnadmin dump /srv/svn/proj >proj-r$rev.dump

Доказательство для AH , что он пропустил:

desktop+bash# svnadmin.exe create g
desktop+bash# svn co file://$PWD/g w
Checked out revision 0.
desktop+bash# cd w
/home/user/tmp/gg/w
desktop+bash# echo XXX >>README
desktop+bash# svn add README
A         README
desktop+bash# svn ci -m up
Adding         README
Transmitting file data .
Committed revision 1.
desktop+bash# cd ..
desktop+bash# svn info file://$PWD/g
Path: g
URL: file:///home/user/tmp/gg/g
Repository Root: file:///home/user/tmp/gg/g
Repository UUID: 38434ae0-ea0a-41ac-9891-55099858d224
Revision: 1
Node Kind: directory
Last Changed Author: user
Last Changed Rev: 1
Last Changed Date: 2011-11-05 16:30:27 +0200 (Сб, 05 ноя 2011)
1 голос
/ 06 ноября 2011

Спасибо всем за ваши ответы. Я решил использовать следующий скрипт, основанный на @ A.H. Решение:

#backup_repos.sh
#!/usr/bin/bash
export REPO=$1
export r=$(svnlook youngest "$REPO")
export name=$(basename "$REPO")-r$r-`date +%Y.%m.%d`

svnadmin dump "$REPO" > "$name-dump"
gzip -f "$name-dump"
0 голосов
/ 05 ноября 2011

SubWCRev (только для Windows, из TSVN) может извлечь RevisionInfo из WC , записать его в файл (используя некоторые макросы).Вы можете иметь шаблон bat-файла , который SubWCRev преобразует в окончательный вариант bat-файла и запустить этот файл .

Iиспользуйте этот метод для экспорта (WC) в dir с меткой revision-time в имени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...