Среда, 26 Март 2008
codeville: первый взгляд
Случайно наткнулся на очередную scm: codeville.
В debian’е она оказалась, причем свежей версии, так что рассказ пойдет про нее.
Первым делом я зашел на сайт в раздел Docs, где меня встретила стандартная страница MionMion’а, как выяснилось проблема была из-за русской локали, и в wiki что-то даже есть.
Во время установки поразило что мне добавили в сервер этой scm, да еще прописали на автоматический старт. Странно.
Начало использования
После
cdv init
оказывается что надо обозвать себя, путем присвоение переменной user какого значения
cdv set user catap
вместо имени пользователя рекомендуют ставить email, что бы не пересекаться с другими людьми.
Моё кощунство в лице работы в репозитории, путь до которого имеет русские буквы система пережила. Она даже смогла добавить такой вот файл:
cdv add файл
Но на этом я не остановился, и при
cdv commit
решил указать русский комментарий. Молодцы, все прошло отлично, даже удалось лог посмотреть. Правда вместо log’а тут
cdv history
сокращение команд до
cdv hi
вполне работает, что приятно
Несколько разработчиков говорите, да?
В начале я попытался сделать clone, но мне сказали что такой команды нет (о ужас!). Потом я полез смотреть документацию и оказалось, что единственный способ «расшарить» свой репозиторий это выложить его на сервер. Ну раз мне поставили сервер, будем его настраивать.
В начале надо привезти /etc/cdvserver.conf к нормальному виду или написать свой конфиг. Я не долго думая получил (да, я люблю /tmp, ибо оно самоочищаемое);
[control]
datadir=/tmp/cdvserver/
pidfile=/tmp/cdvserver.pid
logfile=/tmp/cdvserver.log
backup=False
port=6601
user=catap
После этого надо создать datadir. Если запустить сейчас cdvserver нам вывалится трейс, который гласит что не хватает файла с паролями. Окей, создаем:
cdvpasswd -f /tmp/cdvserver/passwd add catap
Вместо add можно сделать set (заменить пароль) и delete для его удаления.
На этом приключения не заканчиваются, надо сделать инициализацию путем запуска его с ключом -i
cdvserver -i
После успешной инициализации можно запускать его просто:
cdvserver
Теперь надо установить для нашего репозитория ссылку на удаленный репозиторий:
cdv set repository cdv://localhost/repo1
И сделать commit, в наш commit войдут все наши файлы, помеченные как новые, т.к. мы добавляем их в удаленный репозиторий.
Для получения изменений из удаленого репозиторий надо использовать
cdv update
Если мы будем пытаться комитить изменения, которые будут конфликтовать с изменениями в удаленном репозитории, нас попросят сделать update и исправить, ручками, все конфликты.
Что бы получить изменения из репозитория с другого сервера (не того что мы прописали) надо указывать его конкретно:
cdv -R cdv://localhost/repo2 update
Что бы послать изменения в другой репозитарий, его надо указать при commit’е:
cdv -R cdv://localhost/repo2 commit
Branches
Как таковых branches тут нет, зато работа с ними происходит через другие репозитории, наверное это удобно.
Итоги
Минусы
- Не умеет протоколы отличные от своего
- В ToDo написано «support for binaries» (в разделе larger features)
- Неочевидная настройка
- Неудобно, что нельзя прописать часть опций глобально
- Нельзя сделать cdv clone url, т.е. надо инициализировать руками и руками прописать настройки. Для версии 0.1 я бы это простил, но для 0.8.0 извините.
- Не умеет всякие мелочи (игнорирование файлов и многое другое, что привычно из «больших» scm)
Плюсы
- Простая и прозрачная работа с удаленными репозиториями
- Тупая как валенок, что приятно, ибо, наверное, удобно будет хакать (по sloccount’у ~9 тысяч строк кода).
- Есть man-page в которой описано все что она умеет.
Очередная scm. Сильно напомнила мне svn. Интересная идея с убиранием веток как таковых и представлением их как отдельный репозиторий (напоминает мне tla, darcs и компанию).
Комментарии
Кроме как “ну и зачем ещё одно” ничего не напрашивается. Учитывая что ничего нового я не вижу.
Они писали что фишка у них супер merge. Как я понял вся фишка их merge, что ты можешь сделать update c многих источников и потом сделать merge.
Спорная фишка, имхо.
Хм, а я вот даже не проверял — что будет в mercurial если сделать merge на несколько апдейтов. Наверно последние два обработаются. Фишка может и интересная — только наверно на практике такая ситуация редкость и можно обойтись откатами а затем последовательными объединениями.
Форма комментирования для «codeville: первый взгляд»
Мне вот не совсем понятно, зачем это нужно.