Почему Visual SourceSafe просматривается так плохо? [закрытый]

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

одна вещь, которую я рассматриваю, - это склонность перемещать существующий исходный код из SourceSafe (где он в настоящее время проживает) в лучший продукт контроля версий, как Perforce.

У меня был ряд плохих опытов с SourceSafe, вызывающих огромные проблемы, такие как постоянная блокировка файлов и повреждение кода. В одиночку я боюсь, что эти анекдоты звучат так: "я хочу изменить это, потому что мне это не нравится.- Если я собираюсь затронуть эту тему, то хочу, чтобы дело было закрыто.

Итак, каковы эмпирические причины того, что SourceSafe рассматривается как низший продукт?


посмотреть также:

12 ответов


существует длинный список проблем здесь (по общему признанию, с 2002 года, но продукт с тех пор не изменился)

Edit: вот текст из ссылки, в случае, если он исчезнет. Страница лицензирована под CCA3.

Visual SourceSafe: система уничтожения источника Microsoft

Алан де Смет

есть много прекрасных решений для систем контроля версий. SourceSafe не один из них.

Я использовал SourceSafe в течение пяти лет, хотя Весна 2002 . Он последовательно неприятный опыт. Новые версии не смогли улучшить ничего из импорта. Я надеюсь отговорить вас от использования SourceSafe, избавляя тебя от неприятных переживаний, которые у меня были.

Отсутствуют Признаки

SourceSafe не хватает полезной поддержки ветвления

система управления пересмотром должна обеспечить мощное ветвление поддержка. С сильной поддержкой ветвления разработчики могут легко внесите незначительные изменения в старые версии во время работы над следующей основной релиз продолжается. Сильно экспериментальный код можно проверить в филиал, отдельно от основного развития но резервное копирование и предоставление его другим разработчикам. Если проект "заморожен", в то время как веха или окончательный выпуск построен, застройщик может продолжить развитие к следующему версия на ветке. (Или более обыкновенно, новая ветвь может быть создано для замораживания пока общее развитие продолжается на главная ветвь. Когда выпуск закончен, изменения на замороженном ветвь может быть объединена обратно в главную ветвь.) Sourcesafe версии по поддержка ветвления не может эффективно поддерживать все это.

с мощным ветвлением, система управления ревизией должна также обеспечить сильную поддержку слияния для согласования различных ветви. По крайней мере, система должна позволить разработчику к изучите различия между двумя ветвями, измените их на создайте объединенную версию и, когда они будут удовлетворены, проверьте их. Поддержка слияния SourceSafe тесно интегрирована с проверкой в, делающ его трудным рассмотреть разницы и испытать предлагаемое слияние перед проверкой в дереве. С этим слабым уровень поддержки, легко проверить нефункционирующий код в система контроля изменений.

SourceSafe не может быть безопасно продлен

должно быть возможно легко расширить Ваш контроль версий система с дополнительной функциональностью. Возможность отправки электронные письма, резюмирующие регистрации, имеют важное значение. При работе с команда, регулярные сообщения электронной почты список файлов, зарегистрированных и Регистрация сообщений, связанных с ними, действительно помогает сохранить всех последние изменения. Вы также можете добавить фильтры для предотвращения регистрации кода, который не соответствует определенным требования (стандартные заявления об авторских правах или не компилируется). SourceSafe едва поддерживает это. Пока это возможно, каждый клиент должен иметь дополнительные функциональные возможности. Если одному клиенту не хватает расширения, он спокойно не сможет веди себя как положено. (Подробнее см. Автоматизация Visual SourceSafe 6.0. Проверьте раздел " Перехват событий SourceSafe? общее представление.") Вы можете платят даже больше для стороннего решения, но имеет ли это смысл к инвестировать больше денег в принципиально сломанный продукт?

SourceSafe молча оставляет устаревшие файлы в вашей локальной системе

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

SourceSafe плохо обрабатывает медленные сети и общественный интернет

SourceSafe непригоден для медленных сетевых подключений. Это фактически непригоден для использования через общедоступный Интернет. Кроме того, поскольку SourceSafe работает через сетевые ресурсы, если вы делаете Sourcesafe сервер в интернете, вы подвергаете любые недостатки в ваших серверах реализован файлообменник на весь мир. Конечно, если вы готовы вложить больше денег в свою неэффективную ревизию система управления, вы можете купить третью сторону продукт для решения этой проблемы.

управление сторонними модулями сложно с SourceSafe

Это не редкость для разработчика, чтобы использовать третью сторону модули в ваш проект нужно быстро добавить необходимый функционал. Для например, вы можете использовать Xtreme программного обеспечения Codejock Инструментарий. Естественно проверить эти модули третьей стороны в вашу систему контроля версий. Сюда, когда вы шагаете назад во времени, чтобы изучить предыдущую версию, вы можете получить те же версии поддерживающих библиотек и сторонних модулей которые использовались для создания кода в это время.

к сожалению, SourceSafe делает отслеживание модуля третьей стороны чрезвычайно сложный. Первоначально проверка первой версии в это не трудно. Проверка новой версии, требует хорошей памяти и внимание к деталям. Чтобы добавить новую версию, сначала рекурсивно проверьте папку с модулем. Теперь удалите каталог на диске и заменить его новой версией. Регистрация новая версия. Теперь вам нужно определить любые файлы или каталоги добавлены в новой версии. Щелкните правой кнопкой мыши на папка модуля в SourceSafe и использование "Показать разницу" рекурсивно создайте список файлов, которые были добавлены. Отмечать какие каталоги содержат файлы, которые были добавлены, а какие добавлены каталоги. Теперь закройте отчет о различиях (отчет является модальным, предотвращая использование SourceSafe в то время как видимый.) Добавьте новые каталоги, как обычно справочники. Чтобы добавить новые файлы, то посетите каждый каталог новые файлы и использовать File > Add Files, чтобы добавить их. Опять же, используйте Команда "показать разницу" для рекурсивно сгенерировать список файлов которые были удалены. Примечание эти файлы и закройте эти снова сообщение о различиях. Теперь удалите каждый из этих файлов в Sourcesafe версии.

Если вы на самом деле настроили сторонний модуль, SourceSafe не оказывает особой помощи в отслеживании различий и слияние их в новую версию.

(для сравнения, чтобы проверить новую версию третьей стороны модуль с помощью CVS, вы бы просто запустите команду " cvs-q import-M 'импорт Xtreme Toolkit 1.9' xtremetoolkit Codejock XT_1_9". Вот и все. Если вы внесли изменения в модуль, который необходимо интегрировать, вы будет использовать " CVS checkout-j XT_1_8 -j XT_1_9 xtremetoolkit". Это даст вам локальную копию объединенные изменения, которые вы можете немедленно проверить, если удовлетворительный.))

просмотр и извлечение исторических версий чрезвычайно медленно

нет ничего необычного в том, чтобы получить историческую версию исходный код. Возможно, Вам понадобится более старая версия для исследования сообщение об ошибке, или текущий код неисправен, и вам нужно получите функциональную версию. SourceSafe поддерживает это, но это крайне медленно для нетривиальных проектов. Получить историческое версия, вам сначала нужно создать историю для всего проект, который вас интересует. На проекте с сотнями файлы и чуть более одного года истории, это может легко занять более пяти минут (даже если вы ограничиваете фактический поиск последние 48 часов изменений). Как только эта история будет создана, вы укажите версию для получения, выбрав последнюю регистрацию на принимать. Медленная скорость, с которой этот процесс завершен отговаривает разработчиков от изучения предыдущих версий, это во многом противоречит цели системы ревизионного контроля.

трудно поддерживать несколько локальных копий один проект

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

безопасность

sourcesafe с деградирует на крупных проектах

Корпорация Майкрософт рекомендует, чтобы ваша база данных не превышала 5 ГБ. (Источник: Рекомендации Microsoft) Хотя это большая база данных, это не является необоснованным для большого проект, особенно если вы проверяете большие двоичные файлы (например, документ Microsoft Word.)

интеграция SourceSafe может привести к сбою Visual Studio

SourceSafe может зависнуть или сбой, когда ваша система теряет соединение в базу данных SourceSafe. Пока это раздражает для Visual SourceSafe, это может привести к потере работы, когда Visual Studio использование интеграции SourceSafe. Простое управление SourceSafe проект, открытый в Visual Studio, достаточно открыть для себя риск. Чтобы минимизировать этот риск (и ускорить ClassView), я предлагаю вы следовать Указания Microsoft по отключению интеграции SourceSafe.

SourceSafe полагается на опасный файл обмен

SourceSafe на самом деле работает не как сервер, а как набор файлы, общие для SMB. В результате вы полагаетесь на каждого индивидуальный клиент, чтобы не шалить. Один неправильно компьютер может уничтожить базу данных. Проблема в файлообменник реализация в операционной системе может повредить базу данных. Пользователям требуется только чтение доступ к системе управления ревизией необходимо записать доступ к сервер, повышающий риск (требуются Сетевые права для каталогов SourceSafe).

SourceSafe следует сканировать на предмет коррупции еженедельно

конечно, с этим высоким риском коррупции, Корпорация Майкрософт рекомендует запустить программу диагностики Analyze еженедельно. (Источник: Рекомендации Microsoft) Пока Analyze работает, все ваши разработчики заблокированные из системы (Я надеюсь, что все не забыли бросить Sourcesafe с первый!). Мой опыт работы с SourceSafe показывает что система 2 gigabyte под управлением Windows 2000 занимает несколько часы, чтобы проверить, работает ли еженедельно.

SourceSafe плохо обрабатывает несколько часовых поясов

Если у вас есть команды, использующие тот же репозиторий SourceSafe в в разных часовых поясах у вас могут быть проблемы. (посмотреть Сведения Microsoft об ошибке часового пояса.) единственного решения Microsoft предоставляет неверно установить часы компьютеры в одном часовом поясе или для покупки третьей стороны товар.

кроме того, это потенциальная проблема, если клиента компьютеры, использующие SourceSafe, не имеют синхронизированных часов. Разница в несколько минут между компьютерами может вызвать странное поведение от SourceSafe с ним пытается примирить информация, которая, кажется, приходит из будущего.

sourcesafe, которые будет поврежден

ваша система контроля версий должна быть надежной. Ты доверить свою тяжелую работу системе контроля версий. Если ваши данные повреждены, система бесполезна. Sourcesafe, которые по фундаментальный дизайн предполагает, что клиенты заслуживают доверия, всегда функция правильно, и что ничто не мешает связь, вызывающая поврежденные данные. В результате SourceSafe хрупкая и ненадежная. Я работал с SourceSafe на три разные работы. В каждом случае в конечном итоге SourceSafe база данных повреждена. Данные были повреждены, работа были потеряны, время было потрачено на проблему. Говорить с другие разработчики, я узнал, что мой опыт не уникальный.

раздражение

  • незначительные действия, такие как изменение каталога, стирают все содержимое окна вывода, что затрудняет его изучение прошлое действия.

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

  • при получении последней версии файлов из SourceSafe, каждый файл, измененный локально, вызывает диалоговое окно для подтверждения обновление. Действие update полностью останавливается во время диалога ждет вашего ответа. Это особенно раздражает, если вы получите последнюю версию, отойдите от компьютера на некоторое время, затем вернитесь, чтобы обнаружить, что SourceSafe только 10% сделано и жду твоего ответа. Диалог можно запретить вернувшись несколькими способами, но при этом вы получаете нет указание на то, что такие файлы были обнаружены. Так когда ты ... вернитесь к завершенному обновлению, вы понятия не будете, что Sourcesafe с столкнулись с потенциальными проблемами. SourceSafe должен обратите внимание, что эти файлы в окне вывода при обнаружении, что делает его легко сканировать окно вывода для файлов, которые будут исследованы.

вывод

Если вы рассматриваете SourceSafe, рассмотрите что-то еще. Если вы используете SourceSafe сейчас, мигрируйте как можно скорее. Вот только несколько.

Если вы просто должны использовать SourceSafe, определенно возьмите время посмотрите на Microsoft список ошибок в Visual SourceSafe 6.0 и список исправлены ошибки в Visual SourceSafe 6.0 Так что вы знаете, что ожидать. (Эти ссылки были первоначально взяты из страница ошибок Microsoft. Эта страница может быть полезна, если у вас есть другая версия SourceSafe или вышеуказанные ссылки не работают.)


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

Я бы оценил его ниже любого продукта с открытым исходным кодом, такого как CVS или SVN, и я не знаю ни одного продукта, который я бы оценил ниже него, за исключением, возможно, более старой версии VSS.


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

на вашем месте я бы рекомендовал перейти, по крайней мере, на TFS. Интеграция с VisualStudio такая же плотная, она намного быстрее, и идиома почти такая же. У меня не было проблем с ним в течение 4 лет, когда я его использовал. Perforce стоит дорого, и это, вероятно, не то, чтобы бросить на собеседовании.


еще в 2002/2003 на прежней работе я оказался парнем, который должен был нянчиться с нашей установкой VSS.

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

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

примерно два раза в год мне приходилось восстанавливаться из поврежденного репозитория-казалось, что какой-то встроенный лимит на отметке 1G, когда репозиторий вырос намного за 1G, все пошло плохо довольно быстро.

учитывая, что есть лучшие инструменты - с лучшей интеграцией - которые теперь доступны по нулевой стоимости, переключение с VSS (на меня) не является проблемой.


Я согласен, что VSS-ужасная часть программного обеспечения, но, кроме возможной проблемы с коррупцией базы данных, кажется, что ваша ситуация будет трудно продать людям. Например, вы не можете сказать, что VSS имеет ужасную поддержку слияния, потому что вы единственный разработчик. Вы не можете жаловаться на блокировку чеков по той же причине. Если ваше приложение не очень хорошего размера, вы не можете спорить с предлагаемым максимальным размером базы данных 1 ГБ, который предлагает VSS.

I лично думаю, что в интервью, как вы предлагаете, вам было бы лучше искать более низкие висячие фрукты, чтобы предложить, как итеративная разработка, TDD или wiki для документации. Я боролся с хорошей борьбой, чтобы перейти от VSS к волей в ситуации предприятия, и это было достаточно сложно. Я не могу представить, как убедить руководство в серьезном изменении системы управления версиями в приложении с одним разработчиком. YMMV.


SourceSafe-это устаревшая технология, построенная на акциях Windows. Механизм хранения (нетранзакционные "плоские файлы") - это рецепт низкой производительности и ошибок. Его принятие не имеет ничего общего с тем, что он имеет над другими SCM, и все связано с тем, что он был "уже там".

Я не могу комментировать Perforce, но я могу сказать, что VSS по сравнению, скажем, Team Foundation Server является очень слабым предложением и должен использоваться только в тех случаях, когда есть уже большие инвестиции в него и никакие деньги не могут быть потрачены.


Microsoft не использует его внутри. Вместо этого они получили исходную лицензию на Perforce, и они взломали ее в соответствии с их потребностями. Это говорит о том, что Microsoft с гордостью продает свои другие продукты, такие как Windows и Office.


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

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


потому что это делает ваш источник небезопасным даже в репозитории.


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


  1. повреждение кода (включая весь стек истории)
  2. повреждение двоичного файла (у нас была эта проблема именно с шаблонами PDF)
  3. плохая интеграция в Visual Studio IDE (очень глючит)
  4. постоянные блокировки файлов
  5. Я забыл упомянуть повреждение репозитория...ИИК!--2-->
  6. нет ветвления

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


см. также Лучшая инициатива SCM: системы контроля версий, чтобы избежать.

один из вопросов, которые я прочитал там, и я не видел упомянутых пока в ответах, является то, что VSS не имеет поддержки удаленные, а затем воссозданные файлы: либо вы очистите историю файла (и никогда не сможете восстановить старую версию), либо вы можете создать файл с тем же именем, что и у некоторого удаленного файла. Даже CVS (который также основан на файлах) попытался сделать это правильно использование "чердачной" зоны.