Я отношусь к той редкой породе линуксовых пользователей, которая не испытывает особой радости от пользования командной строкой. Не потому что не умею, но просто мой рабочий 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, куда удобнее, чем мышкой возить налево-направо в мелде.
Ну это тоже довольно плохой вариант, но речь не об этом. Интерфейс может быть одновременно и гуишным, и не без-хоткейным. ;-)
Мержить я, кстати, еще не пробовал там ничего... Посмотрим при случае :-)
Несколько месяцев назад долго искал что-то пристойное для работы с SVN. Самое адекватное - этот самый NautilusSVN. Аналоги отдыхают.
Единственное, что расстроило - огромные тормоза при открытии наутилусом SVN папки. При открытии папки в новом окне тормоза снова повторяются... Пришлось вернуться в командную строку. :(
А у Вас не тормозит?
Хм... Да нет, не замечал... С другой стороны, в папках проектов у меня сейчас максимум десятка три файлов бывает. Может на большим количестве и тормозило бы.
tonnzor, не только у вас тормоза. Но не такие уж и огромные. Файлов - под сотню.
Личный эдвайс - smartsvn. Это вообще первая программа для ЭВМ за которую я по собственному согласию заплатил денег, даже без необходимости функционала в PRO-версии (собственно я им и сейчас почти не пользуюсь). Ко всему прочему мой личный топ - это лучшая программа на Java из всех которые мне доводилось видеть. Перед тем как орать на яву - посмотрите всё же, своими глазами. У меня складывается впечатление что его пишут исключительно умные и адекватные люди, и проблемы языка программирования здесь практически не всплывают. Минус один и вполне очевидный - memory usage. В пиках (если в проекте порядка 1млн файлов - т.е. отрытый / а не /trunk или не одна из веток) - 100-130мб, что опять же - уникально для Java (ибо для Java это совсем мало!!). Остальной функционал в стадии "бляха муха, я бы и сам так написал, если бы догадался".
"1млн файлов" заменить на "несколько тысяч". В голове вертелось "1млн строк" на самом деле, сорри.
Не пробовали использовать распределенные системы контроля версий? Например, bazaar или mercurial?
Работал с bazaar'ом. Хорошая штука.
Ответ не по теме: Похоже никак, например, секции кода в этом блоге невозможно читать в IE7, потому что убираются пробелы в начале строки.
хотя такого не происходит в FF или Opera`е :)).
например
рисуется так же как
aaaa bbbb
поправка: только если много файлов (например, как у меня - trunk + бранчи = ~ 5000 файлов + ~ 50 папок)
Иван, а как вы решаете проблему с кодировкою по умолчанию в Python?
Потому как прописывание в sitecustomize.py setdefaultencoding как то некошерно для меня выглядит, потому как влияет на все програмы которые используют данную инсталяцию, разве что держать по несколько екземпляров питона, или пробовать подсовывать ему на каждую програму отдельное окружение с site-packages.
Решаю тем, что конвертацию строк в юникод и обратно всегда делаю с явным указанием кодировке.
P.S. Поскольку это не имеет ровно никакого отношения к NautilusSVN, то вместо комментариев, напишите мне лучше почтой, если вопросы появятся: Maniac@SoftwareManiacs.Org
Вторая строка - провокация. Люди пользуются командной строкой не потому что она менее/более удобна а потому что в конкретной ситуации средства быстрее и надёжнее нет.
Если редактор интегрирован со средой разработки - это в 90% случаев упрощает работу.
На втором месте по удобству и скорости работы (но сложнее в изучении) - средства с кучей key-bindings - привязок клавиш на все случаи жизни.
Медленее всего работать (но легче всего освоить) программы чисто виндомышового типа - вот NautilusSVN IMO похож именно на такую.
Сам работаю посредством Emacs через psvn. Наблюдаю программеров вокруг (и они меня) - лучшего средства пока не придумали. 90% задач по SVN делается в psvn, остальное в в командной строке - быстрее.
Ставку делаю на эффективность, даже если вначале надо потратить время на изучение тулзы (emacs, key bindings).
Я так и не понял, добавился ли мой предыдущий комментарий или нет, я хотел узнать, чем менее удачной является система контроля версий bzr, написанная полностью на python + gtk привязки к ней.
http://bazaar-vcs.org/bzr-gtk
Заранее благодарю за ответ ;)
Скажите, как из статьи про NautilusSVN можно заключить, что я считаю bzr "менее удачной"?
Дедукция ;) Мы пользуемся удобными нам инструментами. Если мы чем-то не пользуемся — значит это нам не удобно.
На самом деле я просто хотел узнать ваше отношение к системе контроля версий, написанной на питоне. Я уверен, что вы не могли пропустить её ;)
К сожалению более удачного топика найти не мог — я вообще не могу найти поиск тут... Более того, авторизация по openid (вернее, её попытки) отобрали у меня уже три версии этого комментария.
Все так. Но вы заключаете дальше, что использование одного удобного инструмента отрицает использование других удобных. А это уже неверно. Другими словами, системы контроля версий — не религия, можно использовать несколько одновременно.
Собственно, да. Bzr я полюбил, пару раз попользовавшись. Мне нравится направление и скорость, с которой он развивается. Однако сейчас из-за всеобщей влюбленности в git может оказаться, что "выиграет" именно последний. Просто из-за большего размера коммьюнити.
Даже если бы поиск и был... Комментарии в блог — не самое удачное место задать автору произвольный вопрос, потому что они комментируют статью. Пишите лучше почтой :-). Частнько посты в блоге у меня появляются после дискуссий в почте, если тема общеинтересна.
К сожалению, с этим я пока ничего не могу сделать :-(
Иван, большое спасибо за ответ! Я учёл замечания и больше не буду столь беспардонным ;)
Кстати, вот ответ в тему статьи. Есть ещё один неплохой визуальный diff-tool для Ubuntu. К сожалению не опенсорс, но полностью бесплатный. Мне лично понравился больше, чем meld.
http://sourcegear.com/diffmerge/downloads.html
Иван спасибо, за то что делишься своими открытиями! Жалко, что NautilusSVN не умеет читать property, давно ввел bugtraq у себя в команде и как-то не удобно перед ребятами, они вводят номера багов к commit'ам в TortoiseSVN, а я лидер - нет.
Иван, не удержался и поделился в habr этим открытием, надеюсь я не один такой темный и о NautilusSVN не знал :)
Сделал 2 ссылки со своей статьи на эту и одну на твой блог :) Надеюсь ты не проив :)
И ещё спер твою картинку, это от лени, если что пиши, заменю на свою.
Может ето поможет: http://people.ubuntu.com/~ianc/talks/dvcs-why-and-how.pdf
Не знал, что в Gnome такие "проблемы" в использовании svn. В KDE утилита kdesvn вполне хорошо встраивается в Konqueror - соответственно работать с svn можно в стиле TortoiseSVN.
P.S. Речь идет о третьих кедах, в четвертых сейчас толком не припомню о такой фичи, но скорее всего тоже есть встраивание kdesvn в dolphin.
Подскажите плиз как читать или как применить патч который приведен в статье.
А под мою Kubuntu NautilusSVN вообще не установился. Никакой ошибки не выдал: просто в контекстном меню не появился. Не знаю что с этим делать.