Я отношусь к той редкой породе линуксовых пользователей, которая не испытывает особой радости от пользования командной строкой. Не потому что не умею, но просто мой рабочий 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 антиспам... Пост скоро напишу :-).

Комментарии: 33

  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. Vooon

    Спасибо, давно хотел аналог 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. Stoune

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

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

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

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

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

  21. alex v. koval

    Вторая строка - провокация. Люди пользуются командной строкой не потому что она менее/более удобна а потому что в конкретной ситуации средства быстрее и надёжнее нет.

    Если редактор интегрирован со средой разработки - это в 90% случаев упрощает работу.

    На втором месте по удобству и скорости работы (но сложнее в изучении) - средства с кучей key-bindings - привязок клавиш на все случаи жизни.

    Медленее всего работать (но легче всего освоить) программы чисто виндомышового типа - вот NautilusSVN IMO похож именно на такую.

    Сам работаю посредством Emacs через psvn. Наблюдаю программеров вокруг (и они меня) - лучшего средства пока не придумали. 90% задач по SVN делается в psvn, остальное в в командной строке - быстрее.

    Ставку делаю на эффективность, даже если вначале надо потратить время на изучение тулзы (emacs, key bindings).

  22. Trou Macacq

    Я так и не понял, добавился ли мой предыдущий комментарий или нет, я хотел узнать, чем менее удачной является система контроля версий bzr, написанная полностью на python + gtk привязки к ней.

    http://bazaar-vcs.org/bzr-gtk

    Заранее благодарю за ответ ;)

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

    Скажите, как из статьи про NautilusSVN можно заключить, что я считаю bzr "менее удачной"?

  24. Trou Macacq

    Дедукция ;) Мы пользуемся удобными нам инструментами. Если мы чем-то не пользуемся — значит это нам не удобно.

    На самом деле я просто хотел узнать ваше отношение к системе контроля версий, написанной на питоне. Я уверен, что вы не могли пропустить её ;)

    К сожалению более удачного топика найти не мог — я вообще не могу найти поиск тут... Более того, авторизация по openid (вернее, её попытки) отобрали у меня уже три версии этого комментария.

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

    Дедукция ;) Мы пользуемся удобными нам инструментами. Если мы чем-то не пользуемся — значит это нам не удобно.

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

    Собственно, да. Bzr я полюбил, пару раз попользовавшись. Мне нравится направление и скорость, с которой он развивается. Однако сейчас из-за всеобщей влюбленности в git может оказаться, что "выиграет" именно последний. Просто из-за большего размера коммьюнити.

    К сожалению более удачного топика найти не мог — я вообще не могу найти поиск тут...

    Даже если бы поиск и был... Комментарии в блог — не самое удачное место задать автору произвольный вопрос, потому что они комментируют статью. Пишите лучше почтой :-). Частнько посты в блоге у меня появляются после дискуссий в почте, если тема общеинтересна.

    Более того, авторизация по openid (вернее, её попытки) отобрали у меня уже три версии этого комментария.

    К сожалению, с этим я пока ничего не могу сделать :-(

  26. Trou Macacq

    Иван, большое спасибо за ответ! Я учёл замечания и больше не буду столь беспардонным ;)

  27. Trou Macacq

    Кстати, вот ответ в тему статьи. Есть ещё один неплохой визуальный diff-tool для Ubuntu. К сожалению не опенсорс, но полностью бесплатный. Мне лично понравился больше, чем meld.

    http://sourcegear.com/diffmerge/downloads.html

  28. Артур Дудник

    Иван спасибо, за то что делишься своими открытиями! Жалко, что NautilusSVN не умеет читать property, давно ввел bugtraq у себя в команде и как-то не удобно перед ребятами, они вводят номера багов к commit'ам в TortoiseSVN, а я лидер - нет.

  29. Артур Дудник

    Иван, не удержался и поделился в habr этим открытием, надеюсь я не один такой темный и о NautilusSVN не знал :)

    Сделал 2 ссылки со своей статьи на эту и одну на твой блог :) Надеюсь ты не проив :)

    И ещё спер твою картинку, это от лени, если что пиши, заменю на свою.

  30. Vadim P.

    Я так и не понял, добавился ли мой предыдущий комментарий или нет, я
    хотел узнать, чем менее удачной является система контроля версий bzr

    Может ето поможет: http://people.ubuntu.com/~ianc/talks/dvcs-why-and-how.pdf

  31. Alexander Wolf

    Не знал, что в Gnome такие "проблемы" в использовании svn. В KDE утилита kdesvn вполне хорошо встраивается в Konqueror - соответственно работать с svn можно в стиле TortoiseSVN.

    P.S. Речь идет о третьих кедах, в четвертых сейчас толком не припомню о такой фичи, но скорее всего тоже есть встраивание kdesvn в dolphin.

  32. Васек

    Подскажите плиз как читать или как применить патч который приведен в статье.

  33. Gena

    А под мою Kubuntu NautilusSVN вообще не установился. Никакой ошибки не выдал: просто в контекстном меню не появился. Не знаю что с этим делать.

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