shoorick: (Рыжий)
Решил как-то добавить древние файлы в систему контроля версий, да не смог:
$ svn st | grep -e '^\?' | cut -c9-999 | xargs svn add
A         noframe.html.en
svn: E000013: Can't create temporary file from template '/usr/local/www/path/to/svn-XXXXXX': Permission denied

Оказалось, не имел права писать во временный каталог Subversion .svn/tmp где-то выше. Изменил права, повторяю попытку добавления — фиг:
$ svn st | grep -e '^\?' | cut -c9-999 | xargs svn add
svn: E155037: Previous operation has not finished; run 'cleanup' if it was interrupted

Команда svn cleanup тоже не помогла
$ svn cleanup
svn: E155010: The node '/usr/local/www/path/to/af_0011.html.ru' was not found.

Гугление с чтением форумов не особо помогло — пришлось ковырять базу данных, где Subversion хранит состояние рабочей копии — это файл .svn/wc.db, для работы с которым нужен SQLite. Будете ковырять — не забудьте сделать резервную копию!
$ sqlite3 wc.db

sqlite> SELECT * FROM LOCK;
sqlite> SELECT * FROM WC_LOCK;
1|path/to|-1
sqlite> DELETE FROM WC_LOCK;
sqlite> SELECT * FROM WORK_QUEUE;
26|(sync-file-flags path/to/af_0011.html.ru)
sqlite> DELETE FROM WORK_QUEUE;

В моём случае сработало.

http://shoorick.ru/2016/09/07/e155010/
shoorick: (Рыжий)
Пробую очередной текстовый редактор — Atom. Поначалу не удавалось его запустить — на сайте выложена версия для архитектуры amd64, а собрать из исходников не получилось (не очень-то и хотелось), однако нашёлся вариант для ленивых — PPA с поддержкой 32-битных версий убунты.

Проверка синтаксиса в редакторе Atom

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

http://shoorick.ru/2015/11/02/atom-editor/
shoorick: (Default)
Жизнь под Убунтой, где принято ставить программы уже готовыми, а не собирать их из исходников самому, как это практикуется в некоторых других юникосоподобных ОС, усиливает лень. Вот, например, вышла Subversion 1.8 (и сменила формат данных в рабочих копиях) — вроде, надо обновить, а фиг: в репозиториях хранилищах программ нет свежих версий — есть лишь 1.7.9.

На форуме askubuntu.com предлагают какой вариант:
sudo sh -c 'echo "# WANdisco Open Source Repo" >> /etc/apt/sources.list.d/WANdisco.list'
sudo sh -c 'echo "deb http://opensource.wandisco.com/ubuntu precise svn18" >> /etc/apt/sources.list.d/WANdisco.list'
wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- | sudo apt-key add -
sudo apt-get update

С последующим apt-get upgrade либо apt-get install subversion. Хоть рецепт содержит слово precise, что намекает на Ubuntu 12.04 LTS, он работает и в 13.10.
shoorick: (Рыжий)
Когда получаешь файл с именем, например, Тема-испр-дубль2.docx, очередной раз понимаешь, что системы контроля версий — это хорошо.
shoorick: (Default)
Кажется, я нашёл баг в subversion — он не хочет работать с каталогом по имени diff, ни с командной строки, ни через графический интерфейс (Scripts в Nautilus).
svn: Commit failed (details follow):
svn: Server sent unexpected return value (405 Method Not Allowed) in response to MKCOL request for '/svn/!svn/wrk/hexadecimal-numbers/path/to/diff'
Погуглил методы обхода, но пока не нашёл.


upd/12.10.2011: Оказалось — сам дурак: пытался добавить существующий каталог.

Perlburg

Apr. 2nd, 2011 11:42 pm
shoorick: (Default)
Второй Перлбург прошёл. Жаль, докладов и докладчиков было меньше, чем год назад: прекрасно выступившие год назад Анатолий [livejournal.com profile] sharifulin, Алексей [livejournal.com profile] quappa и Андрей shitov сегодня не приехали (и, наверное, не планировали) — свердловчане справлялись своими силами, ну и я за компанию рассказал немного студентам о командной работе при написании перлопроектов — дал несколько очевидных, вроде бы, советов (в том числе и неперловых), которые, надеюсь, всё равно им пригодятся. Послушал другие доклады, понравились доклады про тестирование и обфускацию: надо бы в этом направлении прокачать скилл развить навыки и умения. Обсудили с организаторами и докладчиками результаты конференции, сошлись во мнении, что расписание составлять надо не в последнюю неделю, а значительно раньше, и кроме того, желательно увеличить количество докладов, интересных не только студентам, но и взрослым разработчикам. Посмотрим, что получится на следующем, третьем Перлбурге.

Хоть конференцию передвинули с февраля на апрель, уральская весна расслабляться не даёт — в Екатеринбурге была могучая метель. Но, к счастью, недолгая.

Билет на автобус подорожал: теперь проезд на рейсах 550 (через аэропорт Кольцово) и 589 (напрямик) стóит не 350 рублей, как зимой, а 397. Сортиры на северном автовокзале Екатеринбурга платные для всех, в том числе и для пассажиров с билетами. Время в пути (и туда, и обратно) — 4 часа, средняя скорость — около 50 км/ч, максимальная — 110 км/ч. Дорога за зиму стала хуже: трясёт сильнее.
shoorick: (Default)
Показывал не владеющей командной строкой сотруднице, как работать с Subversion: поставил nautilus-script-collection-svn и выяснил, что ничего не изменилось. Оказывается, надо его включать:
nautilus-script-manager enable Subversion
shoorick: (Default)
Перенёс накопленное в траке со своей машины в редмайн на боевом сервере. Переношу subversion в том же направлении и задумался об оптимизации серверной части.

Svnserve, конечно, быстрый, но вводить пароли при доступе через svn+ssh:// задолбало, да и по непонятной причине он игнорирует ключ -r, а длинные URL типа svn+ssh://name.of.server/many/many/dirs/before/repo/project/trunk как-то плохо выглядят.

Раскочегаривать апач только лишь для Subversion как-то расточительно. Хотя да, такой вариант будет работать и он же и рекомендован в книге для серьёзных случаев (в том числе и для таких, когда захочется использовать какой-нибудь необычный метод авторизации).

Nginx не все методы поддерживает и, следовательно, на роль обработчика запросов к svn как-то не очень годится — разве что воткнуть его прокси-сервером (а смысл?)

Думал поставить к редмайну пару модулей — redmine_webdav и нужный для него redmine_http_auth (как обычно, пришлось дорабатывать напильником, добавляя перевод на русский). Поставил, почитал документацию внимательнее: им тоже нужен апач (фактически, они позволяют, вроде бы, авторизоваться через редмайновую базу). Если никакого апача не ставить, а запустив сервер webrick, обращаться к нему — он не пускает, но при этом спрашивает пароль.

Продолжаю гуглить...

upd/00:45: Надоело гуглить, воткнул апач, спрятал за нгинксом (just for lulz) — работает. Надо снести ненужные модули и лечь спать.
shoorick: (Default)
Обновил trac 0.11.5 → 0.11.6. Нечаянно. Специально, помня предыдущий апдейт, я его бы обновлять не стал. Как всегда, всё сломалось. Пока пытался починить, выяснил, что в системе одновременно было установлено три питона: python24-2.4.5_4, python25-2.5.4_2, python26-2.6.4. Апач пытался найти трак среди приложений питона 2.5, при том, что основным был питон 2.6.

Починить удалось путём отсечения Змею двух голов из трёх замены двух старых версий питона на одну новую (portuprgade -o lang/python26 lang/python25; env FORCE_PKG_REGISTER=1 portuprgade -o lang/python26 lang/python25) и последующей пересборкой апачного mod_python.

Попутно, раз уж взялся налаживать trac, всё-таки настроил автоматическое приписывание комментариев к тикетам — трак может, встретив в комментарии к коммиту ссылку на тикет (например, вида re #123), добавить в этот тикет комментарий, а в некоторых случаях (fix #456)— и закрыть его.

Раньше подобный фокус не удавался: на машине используется много хранилищ трака и лишь одно, общее — у subversion; в результате hooks/post-commit всегда получал один и тот же адрес SVN-хранилища, вне зависимости от того, в какой из частей дерева был сделан коммит. Научить скрипт распознавать, в какой части дерева сделаны изменения и, соответственно, к какому траковому проекту обращаться — задача тривиальная; странно, что я не сделал это два года назад. В общем, надо добавить в hooks/post-commit одну строку, и ещё одну — поменять:
PROJECT=`/path/to/svnlook dirs-changed $REPOS -r $REV | head -n 1 | cut -f1 -d/`
TRAC_ENV="/path/to/trac/db/$PROJECT"
shoorick: (Default)
Какой смысл писать на форум, если всё равно никто не отвечает? Каждый сам кузнец, в общем.

Трак на роутере всё-таки удалось запустить, но как-то очень уж неестественным путём. Видимо, придётся всё-таки реанимировать большой компьютер, где стоят FreeBSD, Apache, SVN и Trac (и при этом весьма шустро работают), уносить его на кухню либо в другую комнату, чтобы не утомлял шумом и держать его там круглосуточно работающим.
shoorick: (Default)
Trac на роутере так и не хочет нормально запускаться. Максимум, чего удалось добиться — запускается отдельный сервер, который всё время норовит сдохнуть. Описал процесс на роутерном форуме — может, посоветуют что-нибудь...
shoorick: (Default)
Пытаюсь водрузить на роутер subversion и trac. С переменным успехом. Гугл помогает слабо, на http://wl500g.info/ тема тоже не освещена нифига, на сайте разработчиков трака описаны разные варианты установки, под распространённые линуксы да юниксы, но про установку на роутер — ни слова.

Пока удалось поставить subversion и заставить его работать через svnserve. Trac встал, но сразу работать не захотел: пришлось поставить ещё несколько программ, от которых он зависит. После установки недостающего всё равно не заработал — на роутере криво настроена локаль. После исправления — серверы запускаются, но толку от этого немного: автономный сервер выдаёт не более одной страницы (обычно без картинок и стилевого файла), после чего дохнет, не сообщив причины; если же попытаться запускать trac через lighttpd, то он не в состоянии обратиться к БД SQLite и, как результат, тоже не работает, ругаясь в лог. Так до сих пор и не работает — настройка оказалась куда более сложной, чем под FreeBSD.

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

Когда поставлю и настрою — надо будет написать отдельный пост — и сюда, и на асусовский форум.

upd/20.09.2009:
shoorick: (Default)
Обновил (давно уже) на localhost subversion до 1.5.1 — svn на тестовом сервере стал ругаться на рабочие копии, созданные на localhost.
Обновил вчера на сервере subversion до 1.6.2 — svn на локалхосте стал ругаться...
Обновил на localhost subversion 1.5.1 → 1.6.2 — стал ругаться trac (сегодня утром дошло, что надо было обновить и py-subversion).
Обновил trac 0.11.3 → 0.11.4 — трак совсем загнулся, пробовал чинить, перенацеливал когда-то сделанный симлинк — помогало, но не очень.

Почитал логи, постучал в бубен — не помогло. Ушёл гулять.

Пришёл утром — обновил py-subversion — всё заработало.
shoorick: (Default)
Свежий JOSM 1526 (который работает с запускавшимся три четыре дня API 0.6) перед отправкой изменений на сервер спрашивает у пользователя описание сделанных изменений. Что, в общем-то, правильно — мне после subversion не хватало такой возможности.
shoorick: (Default)
По результатам гугления в попытке решить проблемы с svn, нашёл:
Leolik's blog: Монтирование удаленной папки с помощью sshfs

Проблема: sshfs и svn. И ее решение.

1. При работе с sshfs столкнулся с такой проблемой, что когда пытаешься работать с svn на примонтированной папке, например делать checkout, то получаешь следующую ошибку:
svn: Can't move '.svn/tmp/entries' to '.svn/entries': Operation not permitted
2. Лечится это, добавлением опции workaround=rename при монтировании. Пример:
$ sshfs user@remote.host:/somedir /somemydir -o workaround=rename,uid=1000,gid=1000
Попробовал — помогло. Правда, в моём случае опции uid и gid не нужны.
shoorick: (Default)
  1. 193.233.85.13 — теперь не мой. Я на нём просидел почти 10 лет.
  2. Для подпиливания напильником (с целью перенацелить на новый адрес) существующих рабочих копий (если лень уничтожать старое и создавать новое командой svn co) можно выполнить:
    find . -type f -name entries -exec perl -e 's{/old\.address\.of\.repository/}{/new.one/}' -pi '{}' ';'
shoorick: (Default)
Провожу оптимизацию кода — в кучу файлов тупо вставляю один и тот же код. Потом закоммичу, а потом, когда совсем сурово всё заоптимизурую нафиг, удалю половину этих файлов.

Спрашивается в задаче — почему бы сразу не удалить? Потому что поздно, я уже начал редактирование. А удаление — другая задача.
shoorick: (Default)
Обнаружил у subversion неприятный баг: виндовый клиент (например, TortoiseSVN) не понимает, что бывают не только обычные файлы, но и симлинки, после чего симлинк при ближайшем коммите заменяется файлом, на который этот симлинк ссылается, после чего у svn срывает крышу, каталог блокируется и никак не желает разблокироваться. Попытка заменить проблемный файл его древней версией тоже ни к чему не приводит: хоть файл и меняется, закоммитить его не удаётся (ибо этот файл out of date). С удалением — то же самое.

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

upd/14:30: Решается удалением проблемного файла непосредственно из хранилища:
svn delete URL_to_repo/path/file
shoorick: (Default)
Пробую для написание и отладки скриптов использовать вместо редактора kate монстрообразную kdevelop — полновесную IDE. Загружается и открывает проект долго: несколько секунд. Но работает, вроде, не слишком заторможенно. Понравилось наличие клиента к subversion и поиска по толпе файлов. Поглядим, что там ещё есть...
shoorick: (Default)
Subversion для всех проектов одного репозитория использует сквозную нумерацию коммитов.
Trac — отдельную нумерацию тикетов для каждого проекта.

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 13th, 2025 11:36 pm
Powered by Dreamwidth Studios