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

Comments (10) -

2/7/2010 4:44:44 AM

Vadim

В .svn метаданные, он и не должен был их удалять Smile Там md5 хеши всех твоих файлов + информация о версии.

Vadim

2/7/2010 5:35:28 AM

Alexey Raga

Там и копии самих файлов, кстати. Судя по размеру.
По поводу "не должен удалять" - у меня другое мнение. Он не должен был их делать. 21-й век, блин, а они папки с точками по всем дискам размазывают, смех один. Казалось бы - сделай себе нормальный репозиторий - и храни в нём всё...
Удаляют тебя - спроси, хочет ли пользователь, чтобы твои "метаданные" остались, или ему не нужны эти гигабайты мусора, которые, в отсутствие самой программы, уже никакие вовсе и не "метаданные", а мусор и есть. Если не нужен - снеси свой репозиторий нафиг, не заставляй человека копаться и разбираться, что у тебя где и почему оно ВЕЗДЕ.

Как-то так Smile

Alexey Raga Australia

2/7/2010 9:12:06 AM

Vadim

Я согласен, но в этом не svn виноват Smile Он-то все правильно сделал.
Посмотрел, точно копии файлов. Интересненько...

Vadim

2/7/2010 10:32:35 AM

Alexey Raga

Копии, конечно, а как же ему ещё восстановление делать.
А про "виноват-не виноват", то я думаю, что SVN (либо допускаю, что его клон/настройка для данной поделки) сделан так, что вообще не знает, где у него репозиторий, работая по принципу "где нагадил не знаю, но если зайду - увижу". То есть, при обращении к file system entry он просто смотрит "а нет ли тут рядом папки с именем .svn?".
В этом плане даже кот умнее, кот всегда знает, где напортачил Smile
Соответственно, при деинсталляции оно просто не может удалить собственные репозитории. Ибо они везде и единственный способ узнать где конкретно - просканировать всю файловую систему.
В этом, возможно, и есть свои плюсы. Но вот мне лично пришлось столкнуться с минусами Smile

Alexey Raga Australia

2/7/2010 11:29:31 AM

Vadim

История и предыдущие версии у него на сервере хранятся, в виде DB вроде как, на клиенте только текущая версия, эти копии (видимо чтобы знать что изменилось), и собственно линк к серверу.

Удалять их при деинсталляции он мог бы конечно, но Word с таким же успехом мог бы все свои документы находить и удалять, пользы столько же Smile
Все-таки SVN не для версионирования всего диска ничего не подозревающего пользователя задумывался, а для версионирования кода. Удалять метаданные там довольно глупо Smile

А TFS где свои данные хранит, в реестре что ли?

Vadim

2/9/2010 2:10:40 PM

Alexey Raga

С вордом сравнение некорректное, так как документы - это то, с чем работаю я, а не ворд. Но не суть.
А у TFS есть репозиторий в базе данных на SQL Server. Я никогда не пробовал удалять TFS, не знаю, грохнет ли о н базу. Но её удалять легко по крайней мере Smile

Alexey Raga Australia

2/9/2010 2:35:21 PM

Vadim

Не, Леха, репозиторий-то у SVN тоже грохать легко, в крайнем случае это отдельная папка, но вроде как по умолчанию все-таки база.
Но твои файлы с точкой на ноуте - это же клиентская часть, это как код у тебя на девелоперской машине. Он же на диске лежит и где-то рядом с ним должны лежать метаданные, версия например или ссылка на репозиторий, чтобы клиент знал, как до сервера достучаться. TFS, зная, что он всегда на Windows и NTFS может их прятать в NTFS потоках или в реестре, я его никогда не видел, так что не знаю. Но где-то эти данные должны быть. Ты, наверное, туда explorer'ом не ходишь, а там могут быть тоже файлы с точкой, не показываемые студией Smile

С вордом да, не совсем корректное сравнение, но у svn есть как минимум 5 разных клиентов, удалять метаданные которые вообще-то могут использоваться другим клиентом, мне это кажется просто свинством.

А вот писатели аддона могли бы и удалить, знали же, что файлы создадутся и останутся. Но поленились. А svn тут совсем не причем Smile

Vadim

2/11/2010 12:17:37 PM

Alexey Raga

Вадим, TFS не хранит нигде на дивелоперской машине дубликатов файлов. Я не только эксплорером туда хожу, я хожу туда тем, что показывает мне и скрытые файлы тоже. Дубликатов нет.
А если то, о чём ты говоришь верно, то тогда получается, что в случае с SVN мы имеем три копии файлов - рабочую, в папке с точкой и в репозитории. То есть, оно троекратно у меня отжирает место _для тех файлов, которые я вообще не трогаю_.
Это плохо. Это очень плохо Smile
Да, и в случае TFS нет скрытых папок по всему дереву. Есть пара файлов рядом с файлом солюшна, в которых описывается всякая служебная фигня. Но она только для вижл студии нужна, для солюшна/проекта. То есть, если я захочу просто закоммитить файл или папку в каталог, без студии и солюшна - то вообще никакого мусора не будет. Даже настройки воркспейсов (какой проект мапится в какую или какие папки на локальном диске) хранятся не на клиенте, а в самом TFS.
То есть, оно не работает по принципу "я зашел в папку, увидел, что я тут нагадил - значит тут у меня туалет" Smile Оно заранее знает, где он, и туда идёт Smile

Alexey Raga Australia

2/11/2010 12:32:42 PM

Vadim

А, понятно, он по read only атрибутам работает Smile

Но я все равно не верю, что путь к проектам на *каждой* клиентской машине лежит на сервере. В любом случае клиентская машина же должна знать, где сервер находится, чтобы спросить у него, куда там get latest делать Smile И работа с двумя разными TFS серверами становится немного сложнее, мне кажется.

Да, svn хранит много-много копий, по одной простой причине, у него нет checkout. Ты просто меняешь файлы когда хочешь, а потом их спокойно загоняешь на сервер. Локальные копии соответственно используются для определения, поменялся файл или нет и для создания patch файла, который и пойдет на сервер. (Я бы на их месте, конечно, файл на куски побил и хеш вычислил, чтобы сократить объем метаданных, но видимо им так проще было.)
Честно тебе скажу, так гораздо удобнее. Я, на самом деле, думал, что и TFS перешел на такой способ работы с файлами, но судя по твоим постам, там все еще надо делать check out. Надеюсь, хоть нескольким людям одновременно check out теперь можно делать? Smile

В любом случае, для проектов эти файлы с точкой абсолютно не мешаются и удаляются только вместе со всем деревом кода Smile Отвязать код от репозитория - это наверное самая редкая в мире операция над кодом Smile

Vadim

2/11/2010 1:05:47 PM

Alexey Raga

Checkout можно делать и одиночно, и всем вместе, да и всегда можно было. А можно сделать эксклюзивный checkout. Если хочется. Можно (и по умолчанию так) делать автоматический чекаут при попытке изменить файл в студии. И студия не даст его менять, если кто-то зачекаутил файл эксклюзивно.
Можно работать в offline mode, когда нет связи с репозиторием, это та же работа "без чекаута". Это всё можно.
Папка и на самом деле не знает в каком репозитории она находится. И файл не знает. Думаю, папка поэтому может находиться в репозиториях на нескольких серверах, если надо. Хотя сам не пробовал. Солюшн и проект в студии - тот знает, но это, опять же, чисто проектные штуки.

В TFS есть концепция Workspaces. Workspace - это просто связь двух путей: серверного и локального. То есть, $/MyProject -> C:\development\projects\my super project.
И заходя в меню Workspaces на TFS я вижу, что $/MyProject на такой-то рабочей машине имеет такой-то воркспейс, на ноуте - другой и т.д, для одного и того же пользователя.

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

Возможно, эта информация кешируется где-то и у соурс-контрол провайдера локально, но это - копейки байт.. Опять же, я могу из дома сказать, что воркспейс на рабочей машине не такой, а вот такой вот.. И оно будет работать, так что не знаю, на счёт локального кеша.

Но файлы совершенно точно не дублируются. Даже в режиме offline mode, когда ты правишь код, атрибуты все эти снимаются и т.д, без чекаута. Думаю, на этот случай TFS всё же имеет хеш-суммы файлов, и сверяет их при переходе в online mode обратно... Не знаю, как это работает точно. Но ни мусора, ни дубляжей точно нет.

Alexey Raga Australia

Comments are closed

Powered by BlogEngine.NET 2.5.0.6

About the author

Alexey Raga Alexey Raga
.NET software developer.

E-mail me Send mail

Twitter


Recent posts

Archive

Disclaimer

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

© Copyright 2012

Sign in