victor_sudakov: (Default)
Даже некоторые админы не понимают принципиального отличия архива (возможность отката данных на какое-то предыдущее состояние) от бэкапа (резервного копирования на случай отказа железа или софта). Вот история с башорга, которая эту разницу прекрасно иллюстрирует: http://bash.im/quote/446116

Между прочим, с распространением файловых систем, поддерживающих снапшоты (ZFS, NTFS), архив стал очень дешев. Роль архива способна выполнять и VCS.

А полноценный бэкап (особенно off site) по-прежнему дорог. А который с приемлемой скоростью восстановления - бешено дорог.
victor_sudakov: (Default)
Как сделать сабж таким образом, чтобы коммит-логи (в кодировке koi8-r) нормально перенеслись в hg? Возможно что-то надо написать в .hgrc, но что именно?

Гугление не очень помогло. Есть намеки, что cvsps можно пропустить через pipe, но не понял как.

UPD

Пришлось перекодировать весь CVS репозиторий в UTF-8, выставить локале ru_RU.UTF-8 и после этого уже запускать "hg convert". А потом перекодировать файлы в рабочей копии обратно в KOI8-R и коммитить это как изменение.

UPD2

https://bz.mercurial-scm.org/show_bug.cgi?id=5597

UPD2

Один японец написал hook, который проблему решает: https://bitbucket.org/foozy/hghook-cvslog-transcoder/overview Я проверил - работает.

husky

May. 25th, 2017 09:09 am
victor_sudakov: (Default)
Pavel Gulchouck 2:463/68 выложил сабж на github:

Все модули проекта конвертнул и выложил на github (с историей и ветками): https://github.com/pgul/husky Решил не объединять их все в один репозиторий, а сделать сабмодулями. Впрочем, объединить всегда можно, если это покажется удобным. История при этом не потеряется, но ветки и тэги в этом случае будут. относиться ко всему проекту husky - собственно, из-за этого я и не стал их объединить. Получить всё можно так:

git clone git@github.com:pgul/husky.git
cd husky
git submodule update --init --recursive

Потом обновлять можно командой
git pull --recurse-submodules
victor_sudakov: (Default)
rsync -av husky.cvs.sourceforge.net::cvsroot/husky/ husky/

Началась какая-то поспешная кампания по переносу husky под git. Насколько я понял, репозиторий сконвертировали без сохранения истории, с выкидыванием части модулей... Лучше я сохраню себе локально на ноду то, что есть в CVS на husky.sourceforge.net, чтобы потом локти не кусать.
victor_sudakov: (Default)
$ svnadmin dump repos/test1 |\
    svndumpfilter --drop-empty-revs \
    include /path/to/file1.txt /path/to/file2.txt > test1.svn
$ svnadmin create test2
$ svn mkdir --parents file://$PWD/test2/path/to
$ svnadmin load test2 < test1.svn


Без "svn mkdir" при импорте возникнет ошибка:

<<< Started new transaction, based on original revision 540
     * editing path : path/to/file1.txt ...svnadmin: E160013:
     * File not found: transaction '0-0', path
     * '/path/to/file2.txt'
victor_sudakov: (Default)
У программистов очень развита культура работы с текстом. Патчи, диффы, системы контроля версий. Публикация патчей, перенос изменений из ветки в ветку или в другой проект, хранение и просмотр истории изменений, разрешение конфликтов - для всего этого придуманы инструменты.

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

В Microsoft Word встроена система контроля версий и даже есть нечто вроде visual diff, можно сливать документы, выбирая, какие отличия ты принимаешь, а какие отклоняешь. Но какой процент конторских работников об этой возможности знает? И получив от контрагента договор с правками, будет сличать свой и исправленный вариант не глазами, рискуя просмотреть подвох, а инструментами "Сравнить" и "Объединить"?

В Excel всё гораздо хуже. В нём даже нет элементарного аналога diff. А как полезно было бы иметь возможность сравнить таблицы и выделить отличающиеся ячейки, к примеру, цветом?

Если есть офисные пакеты, в которых есть искомое, или я просмотрел diff в составе Excel - дайте знать!
victor_sudakov: (Default)
Спасибо Eugene Grosbein, очень полезно http://dadv.livejournal.com/181057.html

UPD Впрочем уже не очень актуально, так как есть net/svnup http://jcm.dsl.visi.com/freebsd/svnup/
victor_sudakov: (Default)
Завел себе аккаунт на https://bitbucket.org/victor_sudakov и выложил туда пробный репозиторий, сконвертированный из svn в hg. Приятно удивило, что с отображением русских букв не возникло проблем, в отличие от github.

А свой аккаунт на github я удалю. Так и не смог подружиться с Git.

UPD В mercurial и keyword substitution работающий есть!
victor_sudakov: (Default)
Отменить все изменения в рабочей копии, в том числе удаления и переименования файлов

svn revert -R .
victor_sudakov: (Default)
Чтобы восстановить удаленный файл, его нужно сначала найти, и вот тут поможет "svn log --verbose" и искать по /^ +D/
victor_sudakov: (Default)
Чтобы сабж раскрывался в ascii (без кириллицы, к тому же в unicode), единственный способ - выставить LC_TIME=C перед "svn co". Дурость, но в git и hg вообще нет keyword expansion, кроме как внешними костылями.
victor_sudakov: (Default)
Описание настройки KDC не входит в задачи данного документа. Предполагается, что у вас уже есть работающий Kerberos (например, у вас работает CVS gserver или GSSAPIAuthentication в sshd).

1. Устанавливаем ports/devel/subversion с включенной поддержкой SASL2. Не забываем поставить security/cyrus-sasl2-gssapi.

2. В /usr/local/lib/sasl2/svn.conf пишем

sasldb_path: /home/svn/svn.sasldb
keytab: /home/svn/svn.keytab
mech_list: gssapi digest-md5 anonymous

Если предполагается Kerberos only окружение (аутентификация в svn с запросом логина и пароля не нужна), можно исключить упоминание о sasldb и убрать digest-md5 из списка механизмов.

Тут есть одна засада, но о ней позже, чтобы сохранялась интрига.

3. Создаем пользователя svn. Удобнее создать его с полноценным шеллом, потом пригодится для работы с svnadmin.

pw useradd svn -g svn -m -s /bin/tcsh -c 'Subversion server'

4. Создаем kerberos principal для svnserve.

su -l svn
ktutil -k /home/svn/svn.keytab get -p root/admin svn/`hostname`
ktutil -k /home/svn/svn.keytab list

5. Создаем репозиторий
su -l svn
mkdir /home/svn/repos
svnadmin create /home/svn/repos/myproject

6. В /home/svn/repos/myproject/conf/svnserve.conf раскомментируем следующие строки

[general]
anon-access = read
auth-access = write
realm = YOUR.DOMAIN.RU # тут должен быть ваш Kerberos realm

[sasl]
use-sasl = true

7. Вносим в /etc/rc.conf.local
svnserve_enable="YES"
svnserve_data="/home/svn/repos"

и запускаем сервер
/usr/local/etc/rc.d/svnserve start

8. Пробуем с клиентской машины
svn mkdir -m 'test dir ' svn://server.your.domain.ru/myproject/test44
и получаем ошибку:

svn: Authentication error from server: SASL(-1): generic failure:
GSSAPI Error: No credentials were supplied, or the credentials were
unavailable or inaccessible. (unknown mech-code 0 for mech unknown)

Очень информативно, правда?

9. Начинаем материться, читать рассылки, смотреть ktrace и приходим к выводу, что опция keytab: в /usr/local/lib/sasl2/svn.conf не работает (not implemented), и svnserve пытается искать свои ключи в системном /etc/krb5.keytab, естественно юзеру svn не хватает прав прочитать этот файл, и возникает ошибка GSSAPI. Зато есть переменная среды KRB5_KTNAME и libkrb5 в неё смотрит.

10. Начинаем думать, как задать эту переменную среды при старте svnserve. Обнаруживаем, что через login class задать не получается. Зато можно например задать ее в /etc/rc.local и потом оттуда же стартовать

su -l svn -c '/usr/local/bin/svnserve -d --listen-port=3690 --listen-host 0.0.0.0 -r /home/svn/repos'

11. Можно также положить скрипт /etc/rc.conf.d/svnserve вот с таким содержимым
KRB5_KTNAME=/home/svn/svn.keytab ; export KRB5_KTNAME

12. Вот теперь всё хорошо:
svn mkdir -m 'test dir ' svn://server.your.domain.ru/myproject/test44
Committed revision 1.

(с) 2010 Виктор Судаков

Profile

victor_sudakov: (Default)
Виктор Судаков

September 2017

S M T W T F S
     12
34 56789
10 111213 141516
17181920212223
24252627282930

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 24th, 2017 04:45 am
Powered by Dreamwidth Studios