23.04.08 02:17

Инструменты

Я отношусь к той редкой породе линуксовых пользователей, которая не испытывает особой радости от пользования командной строкой. Не потому что не умею, но просто мой рабочий workflow таков, что частенько мне это неудобно. Поэтому у меня нет такого, что постоянно под руками какое-то открытое терминальное окно, и в процессе программирования часто так случается, что единственное, зачем мне нужно открывать это самое терминальное окно -- это для пользования subversion'ом. Потому что никакими IDE со встроенной поддержкой его я тоже не пользуюсь.

Зная это, вы можете представить, что я был крайне рад совершенно случайно набрести на NautilusSVN.

Да! Это клон того самого знаменитого subversion-клиента для Windows TortoiseSVN! Причем, в отличие от некоторых других попыток подружить гномовый файл-менеджер с subversion, он не только прилично выглядит, но и работает!

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

Потому что написан на Питоне :-). И если мне чего-то очень будет не хватать, я таки буду дописывать это и посылать автору патчи. К чему и остальных заинтересованных призываю!

Собственно, один патчик уже пришлось сделать. Автор -- человек из ascii-мира, поэтому он наступил на традиционные грабли работы с разными языками (пытался записывать в файл чистый unicode). Патчик получился очень маленький, поэтому пишу его прямо здесь:

--- Desktop/SvnCommit.py    2008-04-17 00:51:11.000000000 +0400
+++ /usr/lib/nautilus/extensions-1.0/python/nautilussvn_0.11-1/SvnCommit.py 2008-04-21 03:57:50.000000000 +0400
@@ -206,7 +206,6 @@
 if app.commitMessage:
    msg = app.commitMessage
    paths = app.paths
-   del app

    # Sort out the current time string
    t = time.strftime( "%H:%M:%S %d.%m.%Y" )
@@ -214,9 +213,9 @@
    # Store the commit message for later
    f = open( os.path.join( GetHomeFolder(), "previous_log_messages" ), "a+" )
    s = """\
--- %(t)s --
-%(msg)s
-"""%( locals() )
+-- %s --
+%s
+"""%( t, msg.encode('utf-8') )

    f.write( s )
    f.close()

А еще с NautilusSVN связана другая приятная находка. В качестве тулзы для просмотра diff'ов он рекомендует некий meld, который оказался очень неплохой программой. Я, вообще, пробовал раньше лениво искать хороший графический diff для Гнома, но как-то на него не натыкался.

P.S. Внимательные читатели заметили, что я прикрутил к Cicero антиспам... Пост скоро напишу :-).

Комментарии: 20 (feed)

  1. qewerty

    Поставил deb, который там предлагался, ничего не заработало (Ubuntu 8.04). Cкопировал скрипты из /usr/lib/nautilus/extensions-1.0/python в /usr/lib/nautilus/extensions-2.0/python. Заработало. Может быть пакет рассчитывался на Ubuntu 7.10 и Debian, у меня нет возможности проверить.

  2. qewerty

  3. http://vehq.ru/about/

    Спасибо, давно хотел аналог TortoiseSVN,
    теперь бы увидеть NautilusHG :)

    За Meld большое спасибо, давно хотел заменить KDE`шный Kompare

    P.S. Заметил, жду :)

  4. Александр Соловьёв

    А мне meld не понравился... :-( Там по-моему до сих пор без мышки не обойтись, да?

  5. Иван Сагалаев

    У меня как-то не возникало даже желания пользоваться им клавиатурой... Зачем? Я открываю его даблкликом в списке файлов в окне NautilusSVN, а значит мышка у меня в этот момент в руках.

    Ведь не бывает универсально удобных инструментов. Инструмент должен подходить под рабочую среду и рабочий процесс. Если ты хочешь пользоваться клавиатурой, то meld тебе не нужен, тебе нужно что-то типа svn diff > /tmp/tmp.diff && vim /tmp/tmp.diff.

  6. http://grssnake.ru/

    вот спасибо! взял совок, пошел копать :)

  7. Гриша-Саид

    Эх, месяц назад сам начал такое писать, только остановился на коммите и апдейте :-)

    Вопрос не по теме: а как вы тестируете сайты в убунту без IE? Попробовал IE4Linux, что-то этот совсем глючный IE какой-то...

  8. Александр Соловьёв

    У меня как-то не возникало даже желания пользоваться им клавиатурой… Зачем?

    Затем, что нажимать C-1/C-2/C-3, для выбора нужного куска для мержа в KDiff3, куда удобнее, чем мышкой возить налево-направо в мелде.

    тебе нужно что-то типа svn diff > /tmp/tmp.diff && vim /tmp/tmp.diff

    Ну это тоже довольно плохой вариант, но речь не об этом. Интерфейс может быть одновременно и гуишным, и не без-хоткейным. ;-)

  9. Иван Сагалаев

    Мержить я, кстати, еще не пробовал там ничего... Посмотрим при случае :-)

  10. tonnzor

    Несколько месяцев назад долго искал что-то пристойное для работы с SVN. Самое адекватное - этот самый NautilusSVN. Аналоги отдыхают.

    Единственное, что расстроило - огромные тормоза при открытии наутилусом SVN папки. При открытии папки в новом окне тормоза снова повторяются... Пришлось вернуться в командную строку. :(

    А у Вас не тормозит?

  11. Иван Сагалаев

    Хм... Да нет, не замечал... С другой стороны, в папках проектов у меня сейчас максимум десятка три файлов бывает. Может на большим количестве и тормозило бы.

  12. Kapishin

    tonnzor, не только у вас тормоза. Но не такие уж и огромные. Файлов - под сотню.

  13. MockSoul

    Личный эдвайс - smartsvn. Это вообще первая программа для ЭВМ за которую я по собственному согласию заплатил денег, даже без необходимости функционала в PRO-версии (собственно я им и сейчас почти не пользуюсь). Ко всему прочему мой личный топ - это лучшая программа на Java из всех которые мне доводилось видеть. Перед тем как орать на яву - посмотрите всё же, своими глазами. У меня складывается впечатление что его пишут исключительно умные и адекватные люди, и проблемы языка программирования здесь практически не всплывают. Минус один и вполне очевидный - memory usage. В пиках (если в проекте порядка 1млн файлов - т.е. отрытый / а не /trunk или не одна из веток) - 100-130мб, что опять же - уникально для Java (ибо для Java это совсем мало!!). Остальной функционал в стадии "бляха муха, я бы и сам так написал, если бы догадался".

  14. MockSoul

    "1млн файлов" заменить на "несколько тысяч". В голове вертелось "1млн строк" на самом деле, сорри.

  15. Николай

    Не пробовали использовать распределенные системы контроля версий? Например, bazaar или mercurial?

  16. Иван Сагалаев

    Работал с bazaar'ом. Хорошая штука.

  17. suvit

    Вопрос не по теме: а как вы тестируете сайты в убунту без IE? >Попробовал IE4Linux, что-то этот совсем глючный IE какой-то…

    Ответ не по теме: Похоже никак, например, секции кода в этом блоге невозможно читать в IE7, потому что убираются пробелы в начале строки.
    хотя такого не происходит в FF или Opera`е :)).

    например

    аааа
        bbbb
    

    рисуется так же как

    aaaa
    bbbb
    
  18. tonnzor

    единственное, что расстроило - огромные тормоза при открытии наутилусом SVN папки

    поправка: только если много файлов (например, как у меня - trunk + бранчи = ~ 5000 файлов + ~ 50 папок)

  19. http://blog.sasnyk.name/

    Иван, а как вы решаете проблему с кодировкою по умолчанию в Python?
    Потому как прописывание в sitecustomize.py setdefaultencoding как то некошерно для меня выглядит, потому как влияет на все програмы которые используют данную инсталяцию, разве что держать по несколько екземпляров питона, или пробовать подсовывать ему на каждую програму отдельное окружение с site-packages.

  20. Иван Сагалаев

    Иван, а как вы решаете проблему с кодировкою по умолчанию в Python?

    Решаю тем, что конвертацию строк в юникод и обратно всегда делаю с явным указанием кодировке.

    P.S. Поскольку это не имеет ровно никакого отношения к NautilusSVN, то вместо комментариев, напишите мне лучше почтой, если вопросы появятся: Maniac@SoftwareManiacs.Org

Добавить комментарий

Вы можете подписать комментарий своим OpenID-логином или именем с EMail'ом.

OpenID

Имя и EMail

Текст через пустую строку превращается в отдельные абзацы, цитата отделяется символами > слева, списка состоит из пунктов с дефисом слева, курсив выделяется * с каждой стороны, жирный - двойными **, блоки кода отступают слева на 4 пробела