2/11/2010 12:07:42 PM

Вышли релиз-кандидаты Visual Studio 2010 и TFS 2010. Поставил, смотрю…

Про “студию” могу сказать пока только то, что работать стала существенно быстрее, чем прошлая Beta2. Предыдущая версия своей производительностью, признаться, наводила на мысль о том, не пошло ли использование WPF в ущерб. Однако, теперь этого ощущения нет. Работает не медленнее 2008-й – это точно.

А вот TFS стоит отметить отдельно. Устанавливать его теперь гораздо приятнее, чем его 2008-го предка, с которым ещё намучаешься устанавливая, да и немало (помню, как в Алкателе сидел до 10 вечера, выполняя установочные инструкции по шагам).
Установка же 2010-й версии проста и даже примитивна. Два этапа: собственно, установка, которая занимает всего пару минут, и конфигурация в визарде, что тоже занимает примерно столько же времени.
Сразу скажу, что я пробовал только Basic конфигурацию (там есть ещё пара вариантов), так как устанавливал на локальную машину. Приятно, что в Basic-варианте работает и билд сервис, и даже web access, и при этом ему не нужно ничего, что начинается с “Sharepoint”. И работает даже с SQL Server Express.
Поставил – и работай. Просто, удобно, как и хотелось.

Много всяких интересных штук там, в TFS 2010, но я хочу отметить две:

  1. Билд-сервисы:
    • На одной машине можно без хаков иметь несколько build-агентов, что не может не радовать;
    • Билд-скрипт, который был раньше MSBuild-проектом, теперь представляет собой Workflow. Редактировать его в Workflow-дизайнере, добавлять и даже создавать свои собственные задачи теперь гораздо удобнее и приятнее.
  2. Gated Check-Ins.
    Здесь я, признаться, в замешательстве. Поясню: Gated check-in – это когда разработчик делает check-in в репозиторий, при этом выполняется build, если хотите – прогон unit test’ов, и если что-то пошло не так, то внесённое изменение отвергается и не попадает в систему контроля версий. А если всё прошло как надо, то изменение попадает в соурс контрол, конечно. Соответственно, в соурс контроле мы имеем ветку, которая никогда не будет сломана и всегда будет как минимум компилироваться, а как максимум – зависит от вашего покрытия юнит тестами.

Так вот, Gated Check-Ins работают в TFS2010 замечательно, билд никогда не ломается и всё такое. Но есть у меня одно недопонимание, одна фича, которую, как я надеялся, исправят после Beta2, но она осталась…

Выглядит это так:

  1. Я изменяю код и делаю check-in.
  2. Поскольку мои изменения, пока не прошла валидация, де-факто не попадают в репозиторий, я всё ещё вижу изменённые файлы как checked-out.
  3. Билд и юнит-тесты проходят успешно, код попадает в репозиторий.
  4. Здесь я ожидаю, что файлы станут checked-in, если я их больше не трогал. Онако, этого не происходит.
  5. Я пытаюсь делать Get Latest Version или Check In снова, не важно что из этого.
  6. TFS, внимание, заявляет, что у меня локально присутствует версия файла #7, а в репозитории она уже #9 (очевидно, #8-это мой промежуточный check-in, #9 – финальный после валидации).
  7. Мне необходимо сделать merge версий 7 и 9! Хотя, ежу понятно, что они одинаковы, ибо это изменение делал я, только я и никто больше!
  8. Я признаю, что merge в VS2010 и в VS2008 – вещи очень и очень разные в пользу VS2010, там надо нажать ровно одну кнопку, даже никаких всплывающих окон, но сам факт… И так, делаю auto merge, всё проходит отлично, так как нет разницы, но файлы-то остаются в состоянии checked out!
  9. Я должен снова сделать check-in, и тогда оно мне скажет: изменений нет. И пометит файлы как checked in, чего мне и хотелось.

Звучит, возможно, сложнее, чем есть на деле, но вы попробуйте :)

Я понимаю, что это, наверное, достаточно сложно – отследить, что я действительно не менял файлов пока шла валидация, поэтому нельзя просто сделать их checked out когда она закончена.. Ну, вдруг я менял.
Я понимаю, что в общем случае при таком вот “отложенном” check-in может возникнуть automerge от нескольких разработчиков и в этом случае нужно просить делать merge…
Но я не понимаю, разве нельзя было ввести ещё один статус “в процессе валидации" для файлов в солюшн эксплорере? И “сбрасывать” его обратно в “checked out” если я меняю эти файлы? Пусть даже и на основе read-only атрибута в файловой системе?
Разве нельзя отследить, что во всём этом процессе вот для этого конкретного файла не было никакого автоматического merge’а сделано на уровне TFS? И не просить меня делать merge если файл не меняли ни локально, ни в TFS?
Во всех остальных случаях – спрашивайте, пожалуйста, я только рад буду и буду делать merge с удовольствием!

Короче, тут можно, конечно задать вопрос “Вам шашечки или ехать?”, и утверждать, что целостность билда важнее всех этих мелких неудобств.. Но ведь хочется, чтобы и их не было… :)

В общем, пока как-то так…

2/7/2010 3:23:00 AM

Пришлось использовать, так сказать, по назначению. Точнее, по одному из – восстановить “умирающую” машину.

Что-то я сделал такое нехорошее со своим ноутбуком – толи удалил что-то, толи поставил, толи выключил его неподобающим образом (4-секундной задержкой кнопки выключения, бывает такое), но факт в том, что система “заболела”. IE не открывался совсем, Windows Installer отказывался работать, заявляя, что части его нет, GTalk рисовал окошко но упорно в нём ничего не показывал, и т.д.

Мысль о переустановке windows меня угнетала (хотя, было время, любил я это делать, глупый был), а мысль о восстановлении системы вводила в замешательство по двум причинам: у меня на ноутбуке нет DVD-привода и как быть с установленными обновлениями?

Вот тут-то и пригодился WHS, ежедневно делающий backup компьютеров.

Сделал загрузочную флешку из WHS Restore CD (ну, так как DVD-привода-то нет), воткнул и стал ждать (медленная флешка у меня).

WiFi он, конечно, не нашёл, да я и не ждал. Ничего, воткнул кабель от роутера. Удивительно, но сетевой карты он не нашёл тоже. Но зато предложил вставить диск либо флешку с драйверами.

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

Ничего, подумал я. И полез с другого компьютера на WHS, чтобы открыть там бекап, залезть в папку Windows и, может быть, отыскать там нужный драйвер.

Однако, всё оказалось куда проще. В самом бекапе, оказывается, лежит папочка с говорящим названием и файлом readme, в котором написано: “вот тут все драйверы, которые могут понадобиться при восстановлении из бекапа”.

Скопировал их на флешку, воткнул – всё нашлось, заработало. Мастер восстановления только спросил, какой из домашних PC будем восстанавливать, и бекап от какого дня использовать. Я выбрал “позавчера”. Восстанавливал только раздел с Windows.

Через двадцать минут я получил “позавчерашнюю” машину, целёхонькую и отлично работающую. Только некоторые неважные файлы из папки Downloads потерял – она у меня запрещена для бекапа, ибо важные файлы качаются напрямую на WHS.

Оказалось очень удобно.

А ещё я нашёл такое дополнение для WHS, называется Time Traveler. Судя по аннотации оно обеспечивает версионность файлов, хранимых на WHS. Ну, то есть, если что-то нечаянно удалил, или перезаписал – можно откатить.

Дополнение платное, поэтому я его даже купил. И поставил. Сказал, чтобы следил за версионностью раз в сутки в 3 часа ночи. А в 11 утра обратил внимание, что он всё ещё “следит”. Что же оно делает, возник у меня вопрос.

Полез я смотреть и обнаружил, что эта штука поставила мне на систему SVN (или какого-то клона SVN) и пытается сделать check in всех папок, которые я разрешил для мониторинга версий. Конечно, я разрешил папку с фотографиями, которых я даже не знаю сколько. Гигабайт 300, может быть.

В общем, такой подход мне очень не понравился. Если бы я хотел SVN – я бы поставил SVN, простой скрипт, делающий check in раз в день, я бы тоже написать сподобился. И не надо мне парить мозги и разводить на деньги.

Отправил заявку на money back.

P.S. А оно ещё очень странно устроено. Судя по монитору процессов, оно вызывает svn.exe очень часто и в один поток. Пофайлово, чтоли, делают… Ужас какой.

P.P.S. А SVN тот ещё… Наделал во всех каталогах и подкаталогах своего мусора своих папок, начинающихся с точки, а убирать за собой и не подумал. Сижу, смотрю, как PowerShell чистит это <нехорошее слово>.

Tags:

Live | Other

Powered by BlogEngine.NET 1.6.0.0

About the author

Alexey Raga Alexey Raga
.NET software developer.

E-mail me Send mail

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010

Sign in