Что не так в TFS.

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

Сразу отмечу, что я в основном использовал в своей работе CVS и Subversion, а также немного потыкал палочкой VSS, чтобы убедиться, что он и правда мертв, посему некоторые приколы, которые я упоминаю, могут быть и не проблемами вовсе. Так, дело привычки.

Ну, обо всем по порядку.

  1. Get latest version. Это не то же самое, что и чекаут. Тому, кто это придумал, нужно памятник поставить при жизни. Закопать по пояс и покрасить краской-серебрянкой. Какие грабли это способно вызвать, мне даже описывать страшно – например, какой-то файл редактируется извне студии и ни дай бог забыть ему сделать чекаут! У меня несколько раз получалась ситуация, когда такой измененный файл затолкать назад в репозиторий удавалось только при помощи dijereedo (шаманский бубен не помогал)
  2. Отличная, великолепная интеграция со Студией. Настолько шикарная, что работать с лепрозо, ой, репозитарием без студии не получится. Настолько великолепная, что при проблемах с соединением с TFS сервером она, интеграция, весело и намертво вешает Студию. Очень, очень удобно.
  3. Продолжение пункта 2 – эта интеграция по юзабилити почти сравнивается с вечно сырым Subversion-плагином для студии AnkhSVN. С TortoiseSVN не сравниваю намеренно, ибо это совершенно разные весовые категории, Студия тут даже не курит в коридоре, а скорее тихо писается в памперс.
  4. Встроенный стандартный diff позволяет M$ полностью подавить всех соперников в конкурсе “Обосравшиеся года” и взять первое, второе прочие места до десятого. Включать ТАКОЕ в состав якобы профессионального продукта, продающегося за большие бабки, в 21 веке могут себе позволить только наиболее отъявленные художники-авангардисты. Я к подобному искусству отношусь прохладно.
  5. Бранчи. Я так и не понял, есть ли это там, и, если есть, как этим пользоваться. Впрочем,то же самое можно сказать и про CVS, царствие ему небесное, но в SVN бранчинг тупой как пробка. Наверное, поэтому и работает. Впрочем, чтение гугла наводит на мысль, что брани там таки похожи на SVN-овские, но меня по традиции терзают смутные сомнения.
  6. Теги ревизий. Ну, знаете, бывает очень удобно – закоммитил изменения, и присвоил ревизии тег “Build 1.2.3.222-fucking-bug-fixed”. Не надо через полгода ломать голову, как вытащить код, предшествующий починке этого факин бага. Можно ли это сделать в TFS и если можно, то как, остается по сей день для меня вопросом номер два.
  7. Вопрос номер один же – какой альтернативно одаренный товарищ придумал shelves? Ребята, это, по сути, аналог временной папки где-то на диске, куда Вася Пупкин может временно скинуть свое художество, если боится, что за коммит этого в основное дерево коллеги оторвут ему все выступающие части тела. Так вот – подобной хуйни в системе контроля версий в принципе быть не должно! Ибо провоцирует на неправильное использование оной. Как это должно выглядить в нормальном мире – Васисуалий Пупкинофф проводит глобальный рефакторинг части ядра системы. Естетственно, коммитить промежуточные результаты в основную ветвь означает провоцировать разные веселые дискуссии с другими программистами, не разделяющими Васиного оптимизма по поводу грядущих изменений в ядре, посему Вася, не мудрствуя глюкаво, заводит себе отдельную ветку aka бранч и тихо сам с собою или с другими маньяками ведет себе рефакторинг там. В определенный момент измененное ядро полностью проходит все функциональные и юнит тесты и принимается решение о слиянии альтернативной ветки с основной. Даже в SVN это делается достаточно просто.
    В TFS же народ просто провоцируется на использование полок. “Сань, посмотри, я тут придумал хрень такую” – “Положи в shelf” – “Ок” и понеслось. Дело в том, что эти полки не предназначены для работы с кодом – это именно свалка всякой фигни без признаков версионности, но основная опасность состоит в том, что если эти ребята в определенный момент захотят код, пролежавший на полке, включить в основную ветку, то их с очень большой вероятностью ждет очень большой сюрприз – сделать это средствами TFS окажется решительно невозможно – либо будут постоянные сообщения вроде “This project already contains pending changes” либо еще что-то совсем малопонятное. Я наступил на такие грабли, и в итоге файлы пришлось добавлять в лепрозорий через весьма ректальные обходные пути.
  8. Куча всяких вроде бы мелочей, но мелочей таких, без которых коммерческий продукт подобного плана сегодня не имеет права на существование. Например, в случае обломанного check-in комментарий безвозвратно теряется. Ребята, и Черепашка и AnkhSVN не просто запоминают последний введенный комментарий, и услужливо подставляют его на место при следующем коммите после облома, но еще и ведут историю комментариев! Неужели это было так сложно сделать? Лучше бы не делали эти дурацкие полки, честное слово!
  9. Определенна, и очень забавная особенность – вот открыт у меня солюшен в студии. Известный нам по предудущим пунктам Васисуалий внял мольбам и зачекинил свои изменения, проигнорировав полки. Я храбро кликаю правой кнопкой мыши (ненавижу гуевую мышевозню, честное слово! svn update – наше все!) и командую “Latest version! Get!”. Студия, не выдержав такой наглости, начинает задавать вопросы вроде “Тут Вася проект в солюшен добавил. Его качать?”. Блядь, какого ответа они ожидают? Какие тут вообще могут быть варианты, а? Если это солюшен, то мне нужны все проекты из него!
  10. В предыдущем случае отмечено, что несмотря на положительный ответ на многозначительный вопрос о скачивании ненужных проектов, добавленных в безнадежное “решение”, Студия или ее хваленая “интеграция” норовит порой скачать только сами файлы проектов. Да, оставив все исходники на сервере. В итоге сама же и обламывается при попытке открыть такой проект.

Вот так. Это только малая толика того, что меня лично в TFS здорово напрягает. Конечно, другие системы отнюдь тоже не без проблем, но в SVN, по крайней мере, все прозрачно – если я сказал svn update, то будет именно update без закидонов, глупых вопросов с одним вариантом ответа и забытых файлов.

Leave a comment

12 Comments.

  1. по поводу полок меня терзают смутные сомнения что это они так пытались опошлить прекрасную идею spikes

  2. О нет, Ненененене, Девид Блейн, не-не-не-не.
    Какие еще spikes, вротмненоги? :)

  3. Слушай, а чего ты этот AnkhSVN не к ночи будь он помянут поминаеш? Есть жыж VisualSVN.

  4. Есть жыж VisualSVN.

    Я его один раз поставить пытался, а он взял и упал зачем-то.

  5. Есть свои плюсы есть свои минусы, Вы привыкли рабоать с SVN, к его логике работы, в TFS логика другая, из за этого все проблемы. Большинство описанных проблем решается настройкой.

  6. в TFS логика другая, из за этого все проблемы

    В TFS нет логики. Совсем.
    Тут на днях ребята бранч делали. Стоя и в гамаке, я даже и спрашивать не стал, зачем нужны были такие приседания.

  7. Anonymous, содержательно :)

  8. Хочу сказать свое … слово. В TFS если запихать много файлов (объемом больше 100 Мб) не исходников, а например тестовых данных доков и т.п. То все начинает настолько тормозить, что слов нету. Точнее есть, но они все нецензурные. При переименовании, перемещении файлов внутри может пройти 10 минут, а при закачивании новых больших файлов и ЧАСЫ !!! Причем что самое интересное тормозит вообще вся сетка когда комитишь их. Ну и конечно остальные с репозиторием работать не могут. Самое интересное, что в SVN таких диких тормозов нет. Я в инете читал, что некие деятели – разработчики игрушки пытались весь контент запихать в TFS. B он ууумер, воообще, после того как они туда Гиг втромбовали. Вообще на… умер. В общем пока мелкомягким еще работать и работать … над системой контроля версий. Наверное TFS, лучше чем SourceSafe. Но все равно …-няс…

  9. Subversion + Trotoise SVN + VisualSVN мне кажется лучшая комбинация. VisualSVN супер штука ваще !!! Только всегда бэкапы системы контроля версий делайте, много раз видел накрывались разные репозитории и CVS, и SVN, b SourceSafe … Правда в SVN БД накрывалась и чинилась руками на Linux. Без потерь данных.

  10. Я бы предпочел, если бы мелкомягкие перестали пыжиться в области, в которой они ничего не понимают. Что их системы контроля версий, что MSTest фреймворк – какашки те еще.

  11. Да логики в TFS нет совсем

    SVN построен на красивой концепции “файл считается измененным если изменился его контент” это красиво и логично
    А сраный TFS определяет изменения на основе некоего состояния файла записанного где то в воркспейсе, из-за этого все грабли
    Эти залоченые файлы и все это дерьмо

Leave a Reply

Yandex Mail.ru Google LiveJournal myOpenId Flickr claimId Blogger Wordpress OpenID Yahoo Technorati Vidoop Verisign AOL


[ Ctrl + Enter ]

Trackbacks and Pingbacks:

10 visitors online now
10 guests, 0 members
Max visitors today: 11 at 07:38 am MST
This month: 23 at 05-03-2012 08:23 am MST
This year: 29 at 01-23-2012 02:50 am MST
All time: 45 at 02-23-2011 09:11 am MST