Я отношусь к той редкой породе линуксовых пользователей, которая не испытывает особой радости от пользования командной строкой. Не потому что не умею, но просто мой рабочий 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
qewerty
23.04.08 10:05
Поставил deb, который там предлагался, ничего не заработало (Ubuntu 8.04). Cкопировал скрипты из /usr/lib/nautilus/extensions-1.0/python в /usr/lib/nautilus/extensions-2.0/python. Заработало. Может быть пакет рассчитывался на Ubuntu 7.10 и Debian, у меня нет возможности проверить.
qewerty
23.04.08 10:07
Так оно и есть =) - http://groups.google.com/group/nautilussvn/browse_thread/thread/16a462f23f8d2bb0
http://vehq.ru/about/
23.04.08 10:49
Спасибо, давно хотел аналог TortoiseSVN,
теперь бы увидеть NautilusHG :)
За Meld большое спасибо, давно хотел заменить KDE`шный Kompare
P.S. Заметил, жду :)
Александр Соловьёв
23.04.08 11:47
А мне meld не понравился... :-( Там по-моему до сих пор без мышки не обойтись, да?
Иван Сагалаев
23.04.08 12:27
У меня как-то не возникало даже желания пользоваться им клавиатурой... Зачем? Я открываю его даблкликом в списке файлов в окне NautilusSVN, а значит мышка у меня в этот момент в руках.
Ведь не бывает универсально удобных инструментов. Инструмент должен подходить под рабочую среду и рабочий процесс. Если ты хочешь пользоваться клавиатурой, то meld тебе не нужен, тебе нужно что-то типа
svn diff > /tmp/tmp.diff && vim /tmp/tmp.diff.http://grssnake.ru/
23.04.08 12:55
вот спасибо! взял совок, пошел копать :)
Гриша-Саид
23.04.08 13:06
Эх, месяц назад сам начал такое писать, только остановился на коммите и апдейте :-)
Вопрос не по теме: а как вы тестируете сайты в убунту без IE? Попробовал IE4Linux, что-то этот совсем глючный IE какой-то...
Александр Соловьёв
23.04.08 13:48
Затем, что нажимать C-1/C-2/C-3, для выбора нужного куска для мержа в KDiff3, куда удобнее, чем мышкой возить налево-направо в мелде.
Ну это тоже довольно плохой вариант, но речь не об этом. Интерфейс может быть одновременно и гуишным, и не без-хоткейным. ;-)
Иван Сагалаев
23.04.08 14:18
Мержить я, кстати, еще не пробовал там ничего... Посмотрим при случае :-)
tonnzor
23.04.08 14:38
Несколько месяцев назад долго искал что-то пристойное для работы с SVN. Самое адекватное - этот самый NautilusSVN. Аналоги отдыхают.
Единственное, что расстроило - огромные тормоза при открытии наутилусом SVN папки. При открытии папки в новом окне тормоза снова повторяются... Пришлось вернуться в командную строку. :(
А у Вас не тормозит?
Иван Сагалаев
23.04.08 14:51
Хм... Да нет, не замечал... С другой стороны, в папках проектов у меня сейчас максимум десятка три файлов бывает. Может на большим количестве и тормозило бы.
Kapishin
23.04.08 16:51
tonnzor, не только у вас тормоза. Но не такие уж и огромные. Файлов - под сотню.
MockSoul
24.04.08 07:09
Личный эдвайс - smartsvn. Это вообще первая программа для ЭВМ за которую я по собственному согласию заплатил денег, даже без необходимости функционала в PRO-версии (собственно я им и сейчас почти не пользуюсь). Ко всему прочему мой личный топ - это лучшая программа на Java из всех которые мне доводилось видеть. Перед тем как орать на яву - посмотрите всё же, своими глазами. У меня складывается впечатление что его пишут исключительно умные и адекватные люди, и проблемы языка программирования здесь практически не всплывают. Минус один и вполне очевидный - memory usage. В пиках (если в проекте порядка 1млн файлов - т.е. отрытый / а не /trunk или не одна из веток) - 100-130мб, что опять же - уникально для Java (ибо для Java это совсем мало!!). Остальной функционал в стадии "бляха муха, я бы и сам так написал, если бы догадался".
MockSoul
24.04.08 07:11
"1млн файлов" заменить на "несколько тысяч". В голове вертелось "1млн строк" на самом деле, сорри.
Николай
25.04.08 13:41
Не пробовали использовать распределенные системы контроля версий? Например, bazaar или mercurial?
Иван Сагалаев
25.04.08 14:36
Работал с bazaar'ом. Хорошая штука.
suvit
25.04.08 20:29
Ответ не по теме: Похоже никак, например, секции кода в этом блоге невозможно читать в IE7, потому что убираются пробелы в начале строки.
хотя такого не происходит в FF или Opera`е :)).
например
рисуется так же как
tonnzor
29.04.08 00:06
поправка: только если много файлов (например, как у меня - trunk + бранчи = ~ 5000 файлов + ~ 50 папок)
http://blog.sasnyk.name/
9.05.08 16:28
Иван, а как вы решаете проблему с кодировкою по умолчанию в Python?
Потому как прописывание в sitecustomize.py setdefaultencoding как то некошерно для меня выглядит, потому как влияет на все програмы которые используют данную инсталяцию, разве что держать по несколько екземпляров питона, или пробовать подсовывать ему на каждую програму отдельное окружение с site-packages.
Иван Сагалаев
9.05.08 20:51
Решаю тем, что конвертацию строк в юникод и обратно всегда делаю с явным указанием кодировке.
P.S. Поскольку это не имеет ровно никакого отношения к NautilusSVN, то вместо комментариев, напишите мне лучше почтой, если вопросы появятся: Maniac@SoftwareManiacs.Org