Я отношусь к той редкой породе линуксовых пользователей, которая не испытывает особой радости от пользования командной строкой. Не потому что не умею, но просто мой рабочий 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
Поставил deb, который там предлагался, ничего не заработало (Ubuntu 8.04). Cкопировал скрипты из /usr/lib/nautilus/extensions-1.0/python в /usr/lib/nautilus/extensions-2.0/python. Заработало. Может быть пакет рассчитывался на Ubuntu 7.10 и Debian, у меня нет возможности проверить.
Так оно и есть =) - http://groups.google.com/group/nautilussvn/browse_thread/thread/16a462f23f8d2bb0
Спасибо, давно хотел аналог TortoiseSVN,
теперь бы увидеть NautilusHG :)
За Meld большое спасибо, давно хотел заменить KDE`шный Kompare
P.S. Заметил, жду :)
А мне meld не понравился... :-( Там по-моему до сих пор без мышки не обойтись, да?
У меня как-то не возникало даже желания пользоваться им клавиатурой... Зачем? Я открываю его даблкликом в списке файлов в окне NautilusSVN, а значит мышка у меня в этот момент в руках.
Ведь не бывает универсально удобных инструментов. Инструмент должен подходить под рабочую среду и рабочий процесс. Если ты хочешь пользоваться клавиатурой, то meld тебе не нужен, тебе нужно что-то типа
svn diff > /tmp/tmp.diff && vim /tmp/tmp.diff
.вот спасибо! взял совок, пошел копать :)
Эх, месяц назад сам начал такое писать, только остановился на коммите и апдейте :-)
Вопрос не по теме: а как вы тестируете сайты в убунту без IE? Попробовал IE4Linux, что-то этот совсем глючный IE какой-то...
Затем, что нажимать C-1/C-2/C-3, для выбора нужного куска для мержа в KDiff3, куда удобнее, чем мышкой возить налево-направо в мелде.